Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 29.06.2007, 17:03 Titel: Minni Spiel |
|
|
Hallo!
Ich will ein kleines Spiel programmieren, aber checke nie, wie das geht.
Also die Frage:
Wie kann ich ein Spiel programmieren, dass man ein 2D Labirind von oben sieht und einen Pixel/Punkt durch das Labirind bringen muss(Pfeiltasten an der Tastatur), aber durch die Wände kann man nicht durch.
Wenn man an einen bestimmten Punkt ist, ist das Spiel vorbei.
Wie kann ich dies programmieren?
Wäre schön, wenn ich einen Code bekomme, aufdem ich dann sehe und endlich checke, wie man so etwas programmiert. _________________ MfG
Seb |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 29.06.2007, 17:08 Titel: |
|
|
Wär schön, wenn du suchen würdest und dann verstehst, wie die Such-Funktion geht!  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 29.06.2007, 17:14 Titel: |
|
|
das kapiere ich aber immer nicht, wenn ich Codes programmieren will  _________________ MfG
Seb |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 29.06.2007, 17:46 Titel: |
|
|
also
du macht mit DIM labyrinth (1 to X,1 to Y) as integer ein array in dem das labyrinth gespeichert ist.
mit screen 13 gehst du in einen grafikmodus( oder screen 12 etcetcetc...)
dann mustt du mit line (x1,y1)-(x2,y2),7,BF die wand-blöcke zeichenn
mit inkey$ fragst du die taste ab
pseudo-code:
WENN nach_links DANN
WENN Labyrinth(x-koordinate-1,ykoordinate) IST NICHT WAND DANN x=x-1
*WENN
so auch für die anderen pfeiltasten
dann mit pset/line/put deinen punkt etc. hinsetzen
und:
IF x=zielX and y=zielY then end _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 29.06.2007, 18:06 Titel: |
|
|
Code: | DIN labyrinth (1 to X,1 to Y)
SCREEN 13
line (x2,y1)-(x3,y3),7,BF
IF x=9X and y=9Y then end |
Ist das so richtig, weil der Code funktioniert nicht?! _________________ MfG
Seb |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.06.2007, 18:08 Titel: |
|
|
DIM (nicht DIN) dimensioniert ein array zwischen 2 bestimmten werden. X und Y sind ja keine festen werte, sondern variablen. X und Y bestimmt also, wie groß das Labyrinth ist, wie z.B.
Code: |
DIM labyrinth(1 to 20, 1 to 20) as integer |
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.

Zuletzt bearbeitet von Jojo am 29.06.2007, 19:16, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 29.06.2007, 18:11 Titel: |
|
|
Wenn ich "DIM labyrinth (10 to X,10 to Y)" mache, dann kommt eine Fehlermeldung:
Inhalt außerhalb des zulässigen Bereichs _________________ MfG
Seb |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 29.06.2007, 18:15 Titel: |
|
|
Ersetze mal X und Y durch die Zahlen, bis zu denen du dimensionieren willst. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 29.06.2007, 18:19 Titel: |
|
|
geht
Aber die Linien sieht man nicht und das mit den Wänden funktioniert auch nicht und den Punkt kann man nicht bewegen...
Code: | DIM labyrinth(1 TO 10, 1 TO 10)
SCREEN 13
LINE (x1, y5)-(x2, y7), 7, BF
SLEEP
IF x = ziel9 AND y = ziel9 THEN END |
_________________ MfG
Seb |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 29.06.2007, 18:21 Titel: |
|
|
Du verwendest eine ganze Reihe von Variablen, die alle noch nicht definiert sind. Sprich: sie sind alle 0.
Dass du den Punkt noch nicht bewegen kannst, liegt daran, dass du noch keine Tastaturabfrage eingebaut hast.
edit: Das Missverständnis liegt wohl darin, dass du nicht an die Stelle x1 und y5 usw. zeichnen willst, sondern an die Stelle 1,5. Du musst vor die Zahlen nicht noch das x und das y schreiben. Sonst sind es, wie gesagt, Variablen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Zuletzt bearbeitet von nemored am 29.06.2007, 18:25, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 29.06.2007, 18:22 Titel: |
|
|
Und wie kann ich das alles machen? _________________ MfG
Seb |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 29.06.2007, 18:27 Titel: |
|
|
Zum korrekten Zeichnen siehe mein oberes Edit. Sieht dann ungefähr so aus:
Code: | LINE (1, 5)-(2, 7), 7, BF |
Zur Tastaturabfrage schau dir erst einmal die Befehlsreferenz zu INPUT$ und INKEY$ an. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 29.06.2007, 18:44 Titel: |
|
|
Zu dem INPUT$ und INKEY$ habe ich diesen Code gefunden:
Code: | taste$ = INKEY$
IF taste$ = CHR$(0) + "H" THEN AUSWAHL% = AUSWAHL% - 1
IF taste$ = CHR$(0) + "P" THEN AUSWAHL% = AUSWAHL% + 1 |
Wie kann ich das machen, dass dann ein/eine Punkt/Linie gesteuert werden soll? _________________ MfG
Seb |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 29.06.2007, 19:12 Titel: |
|
|
Jetzt kannst du deine Variablen verwenden. Z. B. x und y für die x- bzw. y-Position deines Cursors. Wenn Pfeil-nach-rechts gedrückt wurde, dann wird der Wert von x um eins erhöht usw. (x = x+1). Da du mehrere Tastaturabfragen tätigen willst, packst du das am besten in eine Schleife:
Code: | DO
taste$ = INKEY$
IF taste$ = CHR$(0) + "H" THEN x = x - 1
IF taste$ = CHR$(0) + "P" THEN x = x + 1
UNTIL taste$ = CHR$(27) 'ESC-Taste |
Jetzt musst du noch (ebenfalls in der Schleife) den Cursor an der alten Position wegzeichnen und an der neuen Position wieder hinzeichnen, z. B. mittels LINE.
Für die Verwendung von Variablen gibt es auch ganz gute Beispiele (um die nächste Frage schon mal vorweg zu nehmen ...) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 29.06.2007, 19:31 Titel: |
|
|
Jetzt kommt immer eine Meldung:
Erwarte Anweisung
Und wie kann ich dann einen Punk/Linie bewegen? _________________ MfG
Seb |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 29.06.2007, 19:58 Titel: |
|
|
"Bewegen" kannst du eine Linie nicht. Du kannst sie nur löschen (z. B. weiß überzeichnen) und an einer anderen Stelle neu zeichnen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 29.06.2007, 19:58 Titel: |
|
|
Schau dir mal bitte zuerst Schleifen in einem Tutorial an, denn das ist das, was du für sowas brauchst.
In der Schleife fragst du den Tastaturstatus ab und sobald eine Taste gedrückt wurde, erhöhst du z.B. den X-Wert der Linie/des Punktes und zeichnest das alles neu (nat. mit den neuen Koordinaten). _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
RedStar
Anmeldungsdatum: 07.08.2006 Beiträge: 9
|
Verfasst am: 30.06.2007, 14:01 Titel: |
|
|
Ich habe schoneinmal aus langeweile ein änliches Programm geschrieben! Allerdigns glaube cih das dein Kenntnisstand noch gar ncith zum Programmieren eines solchen Programmes ausreicht, du solltest dir vieleicht wirklich ein paar Tutorien angucken!
1. Initalisieren (Variablen für Spielerposition, usw.)
2. Level zeichnen
3. Hauptschleife starten {
4. Eingabe überprüfen und gucken ob eine Wand im Weg ist. Falls nciht den Spieler bewegen. Wenn er an der bestimmten Position ist Programm beenden bzw. etsprechend handeln.
5. Zeichnen der Spielerposition
6. } Ende der Schleife |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 30.06.2007, 14:10 Titel: |
|
|
Ich persönlich empfehle dir einen Blick hierhin:
East Power Soft - Spiele Tutorial _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 30.06.2007, 18:31 Titel: |
|
|
Von mir früher einmal programmiertes Labyrinth:
http://www.dreael.ch/Deutsch/Download/Labyrinth.html
Geht mit der perspektivischen 3D-Darstellung bereits einen Schritt weiter, aber die Teile zu Beginn für das Erzeugen eines Labyrinths kannst Du sonst auch für Dein Projekt gebrauchen. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|