Type zugriff für Spiel

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

jokerman29

Betreff: Type zugriff für Spiel

BeitragMi, Jan 06, 2010 22:54
Antworten mit Zitat
Benutzer-Profile anzeigen
guten abend bb-coder,
mein bruder und ich wollen monopoly progen, mein bruder kennt nur mathematische programme (matlab). Für das Erstellen der Spieleigenschaften, wie z.b. welches Feld gerade Abgefragt werden soll hätte er normalerweise eine Matrix benutz:
(Position) 1 2 3 4 5 6 7 ..
(x- Koordinaten des 1 2 3 4 5 6 7 ...
Spieler aufdem Brett) 1 2 3 ...
(y-Koordinten) 1 2 3 ...
(Kosten) 1 2 3...
(Häuser) 1...
(wem gehört was ) 1...
dem entsprechend würde beim Würfen eine Integer (Spieler1) immer einen wert von 1 bis 40 haben die seine Position angibt.
Nun würde entprechend der Position sofort die Matrix die restlichen werte angeben.
WIE KANN ICHS NUN MACHEN, DASS DER TYPE ABGEFRAGT WIRD, AUF DEM DIE FIGUR IST UND ER ALLES IM TYPE ABFRAGT (KOSTEN USW...)???

mfg
jokerman29
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!

Rechtschreibfehler sind special-effekts meiner Tastatur Wink

Midimaster

BeitragMi, Jan 06, 2010 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieviel Ahnung habt ihr denn vom Basic-Programmieren?

Wieviel Ahnung habt ihr denn von DIM oder TYPE?

Wieviel Zeit habt Ihr für das Projekt?

jokerman29

BeitragMi, Jan 06, 2010 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
1. mein bruder versteht die logik vom programmieren aber nichts von basic Very Happy (dafür bin ich zuständig Wink )
2. wir verstehen wieder die logik dahinter (zu types haben wir auch dein tut durchgenommen Wink ) und von DIM in bb leider nohc nicht so viel
3. also wir haben viel zeit, es sollte sich aber nicht zu lang ziehen

wir haben auch schon darüber viel geredet und auch ein spielfeld erstellt...
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!

Rechtschreibfehler sind special-effekts meiner Tastatur Wink

Midimaster

BeitragMi, Jan 06, 2010 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
gut, dann also mit TYPES:

Schritt 1:

Zunächst erstellt ihr einen Type, der alle nötigen Parameter (als Variablen) einer einzelnen Spielfeldposition enthält und postet ihn hier

So geht es:

BlitzBasic:
Type SpielFeldTyp
Field Miete%
Field Straßenname$
.....
End Type


jeder Parameter ist ein Field-Eintrag, verwendet bitte sinnvolle Variablennamen (nicht a%, oder sowas)

ich warte hier drauf und sag dann, was ich davon halte...

jokerman29

BeitragMi, Jan 06, 2010 23:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ja soweit sind wir auch Very Happy
das war ja auch in deinem tut, nur wie können wir darauf zugreifen??
weil wir müssen ja für jedes feld (40) ein type erstellen mit all diesen eigenschaften, nur wie machen wir es, dass wir genau auf den type zugreifen können, auf dem auch grad der spieler ist?
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!

Rechtschreibfehler sind special-effekts meiner Tastatur Wink

Jamagin

BeitragMi, Jan 06, 2010 23:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Gaaanz einfach, lass ne Variable im Type als Counter mitlaufen, so kannst du flexibel vergleichen!

Beispiel:

entweder ein Type-Feld als ID oder ne globale Variable...

Typename\PlatzID (die Platznummern von 1-40) bei jedem neu erstellten Type um eins erhöhen

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte
  • Zuletzt bearbeitet von Jamagin am Mi, Jan 06, 2010 23:34, insgesamt einmal bearbeitet

Midimaster

BeitragMi, Jan 06, 2010 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
würde ich nicht machen!

die Spielfelder sind fix, keines wird deleted kein neues kommt dazu.

Ich rate zu DIM

Das hier ist ein Beispiel, das zeigt, wie man die Felder erstellt und gleich mit den Anfangswerten füllt. (Hier im Beispiel mit Zufallsquatsch.)

BlitzBasic:
Type SpielFeldTyp
Field Miete%
Field StrassenName$
;.....
End Type


Dim Feld.SpielFeldTyp(40)

For I=0 To 40
Feld(i) = New SpielfeldTyp
ErstelleFeldWerte i
Next


Function ErstelleFeldWerte(Nr)
Feld(Nr)\Miete=Rand(1,10000)
Feld(Nr)\StrassenName = "...-straße"
End Function



Wie wollt ihr die Anfangsdaten eingeben. Datei oder DATA-Zeilen?

NightPhoenix

BeitragMi, Jan 06, 2010 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde es schon komplett mit Types machen, da man in diesen einfach und schnell wie in einem Buch blättern kann. Jede Buchseite ist ein neuer Eintrag und die Zeilen auf der Seite sind die Fields.

Nach Midimasters Beispiel:
Code:
Type SpielfeldTyp
   Field Nummer
   Field Miete%
   Field Straßenname$
   ....
End Type

;sft.SpielfeldTyp soll die Bezeichnung der Einträge sein ("sft")

Dieses Feld "Nummer" kannst du z.b. auch ID oder Counter nennen. Ist egal. Angefangen von der Startposition nummeriert man diese nun durch wenn man die einzelnen Types erstellt.

Abrufen kannst du sie indem du sie wieder rufst. Man blättert so in der Typliste bis man den Eintrag gefunden hat. Das Programm bleibt dann solange auf diesem Eintrag/Buchseite stehen bis man mit next/after/first/last weiterblättert.

Also sucht ihr erst in den Typeinträgen nach dieser bestimmten Feldnummer:
Code:
sft.SpielfeldTyp = first SpielfeldTyp
while sft\Nummer<>Gesuchte_Nummer
   sft = after sft ;blättert eine "Seite" weiter (nächster Type-eintrag)
wend


Nun verbleibt das Programm auf diesem Type-eintrag und ihr könnt genau diesen modifizieren.
Zum Beispiel den Besitzer wechseln durch ein anderes Type, was die Spieler vertritt.
Code:
sft\Besitzer=sp\Spieler_ID_Nummer_der_auf_diesem_Feld_steht

Midimaster

BeitragMi, Jan 06, 2010 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
bei aller liebe....FOR/EACH/NEXT-Schleifen sind wirklich nur nötig, wenn die Elemente dynamisch sind. Warum sollte ich nach dem 40. Eintrag suchen, wenn er doch immer an der 40.Stelle liegt.

ich frag mich manchmal, warum Mark wohl überhaupt ARRAYs programmiert hat, wenn sie so unsinnig wären, wie viele hier behaupten.

Dies ist nun wirklich ein klassischer Fall für ARRAYS! Rolling Eyes

Der Spieler steht gerade auf Feld(3) und würfelt die 8, danach steht er auf Feld(3+8)

Er stand auf Feld(3)\StrassenName
jetzt steht er auf Feld(3+8)\StrassenName

genau genommen auf

BlitzMax:
NeuFeld=(AltFeld+Wuerfel) Mod 40

NightPhoenix

BeitragDo, Jan 07, 2010 1:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Er könnte natürlich auch nach dem 10. Eintrag so suchen:
Code:
gesucht=10

sft.SpielfeldTyp = First SpielfeldTyp
for i=1 to (gesucht-1)
   sft = after sft
next


De Fakto ist es in diesem Fall egal was er benutzt. Schaden tut nichts von beidem. Früher oder später muss er Types benutzen, auch wenn das erst im nächsten Projekt kommen wird, und genau das wäre eine tolle Übung für ihn sie sofort einzusetzen. Komplizierter sind sie meiner Meinung nach (kann ja jeder anders empfinden Smile ) nicht. Er hat keinen Nachteil ob er nun Arrays oder Types benutzt, solange es eine feste Anzahl von Einträgen bleibt.
 

BBPro2

BeitragDo, Jan 07, 2010 6:02
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist nicht wahr !
es ist überhaupt nicht egal was er hier benutzt...

types sind absolut nicht hierfür gedacht und deutlich langsamer.
ok es handelt sich um 40 felder - es wäre also für einen menschen ein nicht merklicher
unterschied...
aber es geht ums prinzip....

wer hier types verwendet schreibt irgendwann programme die in 1000 jahren nicht terminieren...



es ist absolut unsinnig nach dem 10. element zu "suchen", wenn man bei arrays einfach direkt
weiß wo sie sind -.-
sorry night, aber das war kein qualifizierter beitrag..

Xeres

Moderator

BeitragDo, Jan 07, 2010 7:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach Kinder...
BlitzBasic:
Local Felder.TSpielfeld[40]

...und gut ist Rolling Eyes
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragDo, Jan 07, 2010 10:46
Antworten mit Zitat
Benutzer-Profile anzeigen
@Xeres

Danke für deine Zustimmung. Arrays reichen hier.

[EDIT #1]

Danke für Deinen Hinweis. Ich wusste nicht dass beides geht:

BlitzBasic:

Dim Feld.SpielFeldTyp(40)


und

BlitzBasic:

Global Feld.SpielFeldTyp[40]


Danke auch an Valnar!
  • Zuletzt bearbeitet von Midimaster am Do, Jan 07, 2010 11:40, insgesamt 2-mal bearbeitet

Valnar

BeitragDo, Jan 07, 2010 10:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Es kann auch so sein wie es Xeres geschrieben hat, das sind dann Blitzarrays.
[url][/url]

Holzchopf

Meisterpacker

BeitragDo, Jan 07, 2010 11:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Es wäre vielleicht mal an der Zeit, den ganzen Blitzlingen zu erklären, dass Types und Arrays sich prinzipiell nicht konkurrieren. Die beiden Dinge vertragen sich sogar sehr gut und können problemlos kombiniert werden. Verwirrung stiftet wohl einfach die Tatsache, dass Types in BB automatisch mit Listen ausgestattet sind. Und ja, Listen und Arrays sind dann die zwei verschiedenen Paar Schuhe, die so oft hier angesprochen werden und manchmal müssen Types als Argument herhalten, obwohl Listen gemeint sind.

Also: Es ist absolut sinnvoll, solche Datenstrukturen in ein Type zu packen und die Daten dann in einem Array zu speichern.

Danke an Xeres und Midimaster =) ohne eure Intervention würde hier wahrscheinlich ein mehrdimensonale Arrays vs dynamische Type (Listen) -Krieg ausbrechen.

mfG
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Midimaster

BeitragDo, Jan 07, 2010 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Valnar

das ist ja toll, dann lassen sich ja auch Arrays in Types integrieren:

BlitzBasic:
Type SpielFeldTyp
Field Arr%[9]
End Type


schon hat sich der Tag gelohnt.... Very Happy

Silver_Knee

BeitragDo, Jan 07, 2010 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
jo aber leider nur Statisch. Wer das nicht will kann bei Int,Float und anderen Fixen längen auf Banks umsteigen... strings wären da relativ schwer..

NightPhoenix

BeitragDo, Jan 07, 2010 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ihr habt Recht. Es ist nicht nötig Types zu verwenden.

Das war nur meine Intention:
NightPhoenix hat Folgendes geschrieben:
Früher oder später muss er Types benutzen, auch wenn das erst im nächsten Projekt kommen wird, und genau das wäre eine tolle Übung für ihn sie sofort einzusetzen.

Ein zeitlicher Unterschied zwischen Types und Arrays wäre in diesem Beispiel ohnehin nicht in ms messbar. So kann er sich schon mal mit den Types vertraut machen. Ihr kennt doch sicherlich die Probleme der meisten Anfänger mit Types Smile
Im übrigen hat Midimaster in seinem Vorschlag ebenso ein Type deklariert in Kombination mit einem Array, also hätte der Anfänger gleich 2 Probleme mit dem er sich beschäftigen und was er verstehen muss.
Midimaster hat Folgendes geschrieben:
Und nichts spricht dagegen für ein Spielfeld ein Array aus Types zu benutzen:

Xeres

Moderator

BeitragDo, Jan 07, 2010 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
jokerman29 hat Folgendes geschrieben:
ich hätt jetzt einfach mal ein paar fragen zu arrays:
ich hab ein array definiert z.b. feld(40,4) (40 weils 40 spielfelder sind und die 4 steht für z.b. miete, position des spielers usw.) wie kann ich jetzt die einzelnen werte in den array eintragen z.b. miete, position usw.?? und wie kann ich dann eine bestimmte spalte abfragen?? bitte mit beispielen Very Happy ich bin noch nciht so vertraut mit arrays
Ich poste mal hier, da die Fragestellung hierzu gehört... nicht zu Arrays im allgemeinen;

Mach dich selber vertraut mit Arrays indem du dir (!) Beispiele schreibst. Arrays sind nicht derart kompliziert. Schau in die Online Hilfe. Such im Forum.
So lernst du effektiv wie etwas funktioniert.
Und/Oder mach dir eine Zeichnung auf Papier (oder eine Tabelle in Excel) damit du siehst wo welche Werte drin stehen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragDo, Jan 07, 2010 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
So, nun habt ihr euch für einen Weg aus NUR Arrays entschieden.

Das bekommt man so auch hin, hat aber einige Haken. Meine Lösung wäre gewesen TYPES und ARRAYS zu kombinieren und ich biete euch an, euch dabei zu begleiten.


Zu den "Haken" gleich mal zwei Fragen:

Jede Straße hat ja einen Straßennnamen, der im Spiel angezeigt werden sollte. Wie löst Ihr das mit ARRAY?
Jede Straße kannt 6 verschiedene Mietsummen, davon eine immer aktiv. Wie habt ihr das gelöst?

Und dann hatte ich schon gestern mal diese Frage gestellt, wil ich euch viel Arbeit ersparen wollte:

Wie bekommt ihr die Daten ins Spiel?

Da gibt es nämlich superschöne Lösungen mit wenig Arbeitsaufwand!

Vielleicht meldet ihr euch ja mal....

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group