 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ThommyBee
Anmeldungsdatum: 30.03.2006 Beiträge: 14
|
Verfasst am: 03.04.2006, 21:33 Titel: Spielfeld? |
|
|
Wie in einem anderen Thread geschrieben, habe ich die Arbeiten an einem RPG wieder aufgenommen. Jetzt bekommt das Kampfsystem eine Verbesserung.
Bisher war das so, dass die Gegner nur als Liste von Namen angezeigt wurden. Ein Anklicken der Namen löste eine Attacke auf den jeweiligen Gegner aus, Spieler und Gegner kamen rundenweise abwechselnd dran.
Nun hat das den Nachteil, dass man angreifen kann, wen man will, und nicht erst in die Nähe gelangen muss.
Ich möchte gern ein Spielfeld einbinden, nichts großartiges, unverziwrte Quadrate als Felder und die Figuren können erstmal ruhig nur als geometrische, farbige Formen oder Buchstaben dargestellt werden.
Man soll nicht auswählen können, welche Figur bewegt wird, sondern es gibt eine feste Reihenfolge, wie gezogen wird.
Das Problem ist: Charakter A ist nun dran. Nun muss erstmal festgestellt werden, auf welchem Feld er sich befindet. Wenn das Spielfeld 10x10 Felder groß ist, wird das eine verdammt lange IF-Abfrage:
IF Feld1% = 1 (oder 2, 3, 4,... je nachdem ob Charakter 1, 2, 3... dran ist und dessen Position ermittelt werden soll).....
und weiterhin muss abgefragt werden, auf welches Feld als Zielort geklickt wird, und ob dieses bereits besetzt ist.
Der Einfachheit halber soll feldweise vorgerückt werden, nicht längere Strecken von mehreren Feldern.
Nun könnte ich das so umständlich und amateurhaft programmieren, wie oben genannt, aber es gibt doch sicher elegantere Lösungen, oder? Habt ihr vielleicht vorschläge? |
|
Nach oben |
|
 |
Devilkevin aka Kerstin

Anmeldungsdatum: 11.11.2004 Beiträge: 2532 Wohnort: nähe Mannheim
|
Verfasst am: 03.04.2006, 21:36 Titel: |
|
|
Hast du das ganze schon in eine Function/Sub gesteckt? _________________ www.piratenpartei.de |
|
Nach oben |
|
 |
ThommyBee
Anmeldungsdatum: 30.03.2006 Beiträge: 14
|
Verfasst am: 03.04.2006, 21:39 Titel: |
|
|
Nein, ich habe noch gar nicht angefangen, die Idee mit dem Spielfeld umzusetzen. Wie du meiner Vorgehensweise entnehmen kannst, bin ich auch noch ein ziemlicher Anfänger. Ich will erst damit anfangen, wenn ich meine Gedanken geordnet habe und ungefähr weiß, wie ich die Sache angehe.
Und ist eine Funktion bzw. Sub überhaupt nötig? |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 04.04.2006, 18:19 Titel: |
|
|
Es geht auch mit nur einem If, wenn man Array's verwendet.
Kleines Beispiel:
Code: | dim feld(1 to 10,1 to 10) as byte
screen 12
feld(5,5)=1
feld(5,6)=2
feld(2,5)=1
feld(5,7)=3
feld(8,5)=4
feld(5,8)=8
for x=1 to 10
for y=1 to 10
locate y,x
color feld(x,y)
? trim$(str$(feld(x,y)))
next y
next x
sleep |
Das mit dem If geht dann etwa so:
Code: | for x=1 to 10
For y=1 to10
If Feld(x,y) then ? "Error"
next y
next x |
|
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 04.04.2006, 19:56 Titel: |
|
|
Es ist schön, dass Du die Problematik, wie ich sie unter
http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/Anfaengerfehler.html
diskutiere, bereits selber erkannt hast. In Deinem Fall würde ich auf dem Papier einmal 3-4 Stück dieser Massen-IFs ausformulieren. Sobald Du das Bildungsmuster erkennt hast, hast Du auch auch bereits die richtige Lösung gefunden. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
ThommyBee
Anmeldungsdatum: 30.03.2006 Beiträge: 14
|
Verfasst am: 05.04.2006, 18:52 Titel: |
|
|
Ja, da sachste was...
Ich habe mein Spiel vor über 10 Jahren begonnen, war ungefähr 15 und hatte wenig Ahnung. Die letzten Jahre hab ich nichts gemacht, und jetzt bin ich damit beschäftigt, zig Sachen zu ändern, weil ich, wie in deinem Negativ-Beispiel, jeden Ort einzeln programmiert hab. Nun darf ich überall die Mausuntertützung ändern etc.
Obwohl das ein Riesen-Aufwand ist, wäre es mehr, alles noch mal neu zu schreiben, weil schon eine Menge existiert. Beim nächsten Mal weiß ich aber Bescheid. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|