Tutorial zu arrays

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Nein?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wie sollte es das können?

ein 32bit - system kann maximal 4GB speicher verwalten (2^32byte = 4GB) also 4096MB
davon wird beim PC das untere MB für systemkram benötigt, dann hast du noch 4095MB, und das betriebssystem selber muss auch noch wo hin oder nicht?
das ist eine frage der zwingenden logik!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

Interessant...

aber warum funktionieren dann Festplatten mit bis zu 300GB Speicher?
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Weil nicht alles gleichzeitig verarbeitet wird.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> ein 32bit - system kann maximal 4GB speicher verwalten

damit meinte ich systemspeicher.

auf ner festplatte ist das was ganz anderes. man kann auch dateien mit über 4GB erzeugen, wenn das File-system dafür ausgelegt ist, man kann sie nur nicht komplett in den speicher laden.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

ähm ich hab mal 2 Fragen zu den Beispiel code.
1. Wieso muss hier die colliesionsabfrage eigentlich in eine Prozedure ? hatt das was mit den Koordinaten zu tun weil diese ja nicht in Variablen fesstgehalten werden

2.

Code: Alles auswählen

  For my=0 To 17 
    For mx=0 To 24 
      
      a.b 
      Read a 

wieso steht den da a.b bezw. was bedeutet das? is das spalten bezw. Zeilen einteilung oder bedeutet dass was anderes
a = Spalte
b = Zeile ?
(nutze v. 3.3)
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Die Kollsion ist in einer eigenen Prozedur, weil das guter Programmierstil ist. Glaube mir, wenn du erst einmal längere Programme schreibst wirst du feststellen, dass die unheilich schwer zu lesen sind, wenn du einfach alles in eine Hauptschleife gerotzt hast.

Es gibt ein paar Strukturregeln, die man einhalten sollte für saubere, lesbare und damit wartbare Programme:

- So wenig globale Variablen wie möglich. Achtung: ein paar sind einfach notwendig.

- logisch unterteilt in Funktionen (dinge wie eingabe, kollision, gegnerverhalten, datei ein/ausgabe sollte man unbedingt von einander trennen)

- Finger Weg von Goto. Es mag manchmal sinnvoll sein Goto zu verwenden, aber *NIEMALS* zur Programmablaufsteuerung, höchstens mal um aus eine schleife zu springen, wenn man direkt unter die schleife springt

- ein variablename, funktionsname etc sollte einen hinweis darauf geben was sie enthält bzw macht.




<variablenname>.b bedeutet, dass du den Bytewert der Variablen haben willst. Das hat DD deswegen gemacht, weil er sein Kartenformat mit Bytes aufgebaut hat. Read ist dazu da um aus der Datasection zu lesen (keine Bange, das ist eigentlich nicht kompliziert, schau dir dazu mal die Hilfe an).
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

ok Danke :)
(nutze v. 3.3)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

zaphod hat das meiste schon gesagt, besonders punkto prozedural und globale variablen, ich denke es ist klar geworden, dass man eigenes unterscheidungvermögen walten lassen muss.


- spalte/zeile
das hat DD mit mx/my da drin


> collisionsabfrage
mal generell, denk über rein koordinatenbezogene alternativen nach.
http://www.purebasic.fr/german/viewtopic.php?t=9093
(mal werbung in eigener sache) ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Ghost
Beiträge: 141
Registriert: 10.04.2006 09:10

Beitrag von Ghost »

>mal generell, denk über rein koordinatenbezogene alternativen nach. <

ähm wie meinst du das im array oder allg. (also auf den Screen)
gibt es net nur die eine Möglichkeit (if spritecollison(id,x,y,id2,x2,y2) oder wie meinst du das.

ähm ich hab mal noch eine Frag kann man mehrere Arrays übereinandermachen also beim gestallten einer map erst den untergrund (ob Gras,erde,Metall ect.) und dann eins darüber für Texturen(Grashalme,Sträucher,) oder muss man für jeden möglichen Falle ein einzellnes Sprite zeichnen? (also graß mit grashalm , erde mit Grashalm,...)?

und wie kann man eigentlich animationen auf Arrays Darstellen?
(nutze v. 3.3)
Antworten