Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Spielfeld?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ThommyBee



Anmeldungsdatum: 30.03.2006
Beiträge: 14

BeitragVerfasst am: 03.04.2006, 21:33    Titel: Spielfeld? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Devilkevin
aka Kerstin


Anmeldungsdatum: 11.11.2004
Beiträge: 2532
Wohnort: nähe Mannheim

BeitragVerfasst am: 03.04.2006, 21:36    Titel: Antworten mit Zitat

Hast du das ganze schon in eine Function/Sub gesteckt?
_________________
www.piratenpartei.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThommyBee



Anmeldungsdatum: 30.03.2006
Beiträge: 14

BeitragVerfasst am: 03.04.2006, 21:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 04.04.2006, 18:19    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 04.04.2006, 19:56    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ThommyBee



Anmeldungsdatum: 30.03.2006
Beiträge: 14

BeitragVerfasst am: 05.04.2006, 18:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz