 |
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 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 07.03.2008, 22:02 Titel: |
|
|
Cool, aber manchmal kommen bisschen kleine oder sehr schnelle Level raus.
Jetzt muss ich nur noch die "Punke" einbauen können... _________________ MfG
Seb |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 08.03.2008, 23:42 Titel: |
|
|
Seb hat Folgendes geschrieben: | dreael hat Folgendes geschrieben: | Falls für Dich zum Umsetzen dies alles ein wenig kompliziert tönt, kann ich Dir sonst gerne mein LABSPIEL.BAS-Beispiel passend erweitern. |
Ja, gerne, falls es geht. |
Inzwischen soweit:
http://beilagen.dreael.ch/QB/LABSPIE2.ZIP
Und auch gleich das Thema Punkte (Score) hineingenommen. Gewähltes Verhalten:
- Ziel lässt sich vor dem vollständigen Einsammeln nicht überqueren (spezieller Sound)
- Boulder Dash-Effekt bei der jeweils letzten Perle
- Punkte: Perle=1 Punkt, Level komplett=10 Punkte
Ausserdem kleine Design-Änderung: Ziel wird nicht mehr als xZiel%/yZiel% verwaltet, sondern als spezieller Wert in lev%(). Vorteil: Level darf auch mehrere Ziele enthalten.
@Seb: So, und nun kannst Du, sobald es mit der Implementierung bei Deiner Version geklappt hat, das nächste einzubringende Spielelement mitteilen. :-) Ist übrigens lerntechnisch ein sehr sinnvolles Vorgehen, d.h. wir lassen Deine Spielidee schön Schritt für Schritt entstehen. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 10.03.2008, 21:51 Titel: |
|
|
Ich bin mir jetzt sehr unsicher beim einsetzen, weil ich noch nicht alles so verstehe, wie, wo, was hinkommt:
Code: | CLS
DIM byte AS STRING * 1
DECLARE SUB GibPunkteAus ()
DECLARE SUB GibPerlenAus ()
DIM SHARED score%, restPerl%
level = 1
DO
CLS
datei$ = "level" + LTRIM$(STR$(level)) + ".txt"
restPerl% = 0
OPEN datei$ FOR BINARY AS #1 | ... Code: | CASE "*"
byte = CHR$(219)
COLOR 14
CASE "P"
' Perle
lev%(j%, i%) = 2
restPerl% = restPerl% + 1
COLOR 11, 0
PRINT CHR$(4);
CASE "S"
zmerk = zeile | ... Code: | CASE CHR$(0) + "P"
neuezeile = zeile + 1
CASE CHR$(27) 'Ende mit Escape
END
END SELECT
SELECT CASE lev%(xPos1%, yPos1%)
CASE 0, 2
' leeres Feld immer frei
vorwaerts% = -1
CASE 3
vorwaerts% = restPerl% = 0
CASE ELSE
vorwaerts% = 0
END SELECT
SELECT CASE lev%(xPos%, yPos%)
CASE 2
' Perle => einsammeln + Punkte
restPerl% = restPerl% - 1
score% = score% + 1
GibPunkteAus
GibPerlenAus
lev%(xPos%, yPos%) = 0
IF restPerl% > 0 THEN
SOUND 1000, 2
ELSE
' Letzte Perle akustisch untermalen
PLAY "o3t200l8geceg"
' und Ziele blinken lassen
FOR i% = 1 TO 24
FOR j% = 1 TO 39
IF lev%(j%, i%) = 3 THEN
COLOR 31, 1
LOCATE i%, j%
PRINT CHR$(127);
END IF
NEXT j%
NEXT i%
END IF
SELECT CASE lev%(xPos1%, yPos1%)
CASE 3
' Zurckhupsound "Noch nicht alle Perlen!"
SOUND 90, 9
CASE ELSE
' fr alle brigen F„lle (Wand)
SOUND 600, 1
END SELECT
IF SCREEN(neuezeile, neuespalte) <> 219 THEN
LOCATE zeile, spalte | ... Code: | LOOP UNTIL merk = ASC("X")
level = level + 1
SUB GibPerlenAus
LOCATE 25, 31
COLOR 15, 0
PRINT FuehrNull$(restPerl%, 3);
END SUB
SUB GibPunkteAus
LOCATE 25, 18
COLOR 15, 0
PRINT FuehrNull$(score%, 5);
END SUB
LOOP |
_________________ MfG
Seb |
|
Nach oben |
|
 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 13.03.2008, 16:55 Titel: |
|
|
Weiß jemand was falsch ist oder fehlt? _________________ MfG
Seb |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 14.03.2008, 13:06 Titel: |
|
|
Hallo Seb,
falsch ist, dass Du, wie es aussieht, immer noch versuchst, einfach Teile aus verschiedenen Programmen irgendwie per copy & paste zusammenzubasteln. Was fehlt, sind konkrete Fragen von dir.
Was soll man dir antworten, wenn du wie zuletzt einfach nur ein paar Programmschnippsel hier rein setzt und ganz pauschal fragst, "was falsch ist oder fehlt"? Du solltest mit einem einfachen Programm beginnen und erst, wenn du das komplett verstanden hast und es funktioniert, baust du weitere Funktionen ein. Wenn du was nicht verstehst, dann frage doch bitte was konkretes wie "ich verstehe die zeile xy nicht" oder "was macht der Befehl BLABLA ? ich habe schon im Editor in der Hilfe nachgesehen, verstehe aber das und das noch nicht". Du solltest die Beispiele, die du hier bekommst nicht als Baukästen verstehen, aus denen du einfach Teile kombinieren kannst, sonder eher als Anregung, welche Möglichkeiten du hast. Das bedeutet nicht, dass du gleich alles übernehmen musst.
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
RatsDevSoftware
Anmeldungsdatum: 22.11.2007 Beiträge: 48
|
|
Nach oben |
|
 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 23.03.2008, 08:55 Titel: |
|
|
OK.
Also verstehe zum einbauen folgendes nicht( http://beilagen.dreael.ch/QB/LABSPIE2.ZIP ):
Zeile 1-7:
Code: | DECLARE SUB TitelAusgabe (t$, h%, f%)
DECLARE FUNCTION FuehrNull$ (w%, b%)
DECLARE SUB GibPunkteAus ()
DECLARE SUB GibPerlenAus ()
DIM SHARED score%, restPerl%
DIM lev%(1 TO 39, 1 TO 24) |
Zeile 49:
Zeile 79-82:
Code: | PRINT FuehrNull$(level%, 3);
GibPunkteAus
GibPerlenAus
komplett% = 0 |
Und dann noch das ganze andere mit den Perlen.
Ich versteh das ja so ungefähr, aber kann es nicht in mein Programm einbauen  _________________ MfG
Seb |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4709 Wohnort: ~/
|
Verfasst am: 23.03.2008, 09:24 Titel: |
|
|
Die DECLARE-Anweisungen geben an, dass du später eben diese Subs und Funktionen (TitelAusgabe, FuehrNull usw.) definierst. Du brauchst sie dann und nur dann, wenn später auch ein Code-Stück in dieser Form kommt:
Code: | SUB TitelAusgabe (t$, h%, f%)
' hier steht, was in der SUB passieren soll
END SUB |
Eine DECLARE-Anweisung ohne spätere Definition wird zu einem Fehler führen, ebenso (i. d. R.) eine Definition ohne vorausgehendes DECLARE. Genauer gesagt: Bevor die SUB das erste Mal aufgerufen wird, muss sie bereits deklariert oder definiert sein.
Ist dir das grundlegende Konzept von SUBs und FUNCTIONs geläufig? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 23.03.2008, 11:06 Titel: |
|
|
Sonst von mir noch Hinweise:
- Statt mit SCREEN Zeichen auslesen verwende ich ein Array. Hat den Vorteil, dass anstelle der sehr einfachen Textmodusgrafik auch richtige Pixelgrafik möglich ist, z.B. Tile-Grafiksatz. Für dieses lev%()-Array muss natürlich ein einfacher "Code" vereinbart werden. Dieser lautet hier:
0 = freie Lücke
1 = feste Mauer
2 = Perle zum Auflesen
3 = Zielfeld
Wichtig: Wird das Spiel später erweitert, so werden hier einfach weitere derartige Codes festgelegt! So etwas ist übrigens wieder typische Analyse & Design-Tätigkeit, die auf dem Papier zuerst stattfindet!
- Variable komplett% wäre in ADA/Pascal vom Typ Boolean, d.h. nur Zustände True und False kennend. QB unterstützt so etwas jedoch nicht, dort muss man Boolsche Werte durch Zahlen abbilden, also jeder beliebige Wert <>0 (bevorzugt -1) = True, 0 = False
- Ansonsten ist FuehrNull$() nur ein kleines Hilfsutility, um Zahlen mit fester Weite durch führende Nullen ausgeben zu können
@Seb: Du kannst uns sonst einen Zwischenstand Deiner Version geben, dann kann ich Dir schon entsprechende Verbesserungshinweise geben. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Seb

Anmeldungsdatum: 29.11.2006 Beiträge: 120 Wohnort: Henfenfeld
|
Verfasst am: 26.03.2008, 13:07 Titel: |
|
|
Danke!
Jetzt habe ich SUB verstanden.
Aber bin trotzdem noch nicht weiter gekommen...  _________________ MfG
Seb |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4709 Wohnort: ~/
|
Verfasst am: 26.03.2008, 14:45 Titel: |
|
|
Leider weiß ich nicht ganz genau, wo deine Schwierigkeiten liegen.
Du gibst noch folgende Code-Zeilen an:
Code: | DIM lev%(1 TO 39, 1 TO 24) |
und
lev%() ist ein Array, in dem gespeichert wird, was sich auf den einzelnen Feldern befindet. Die erste Zahl gibt dabei die Spalte und die zweite Zahl die Reihe an (vielleicht auch umgekehrt). Stelle dir dein Level als "Schachbrett" mit 39x24 Feldern vor - lev%(5, 3) gibt dann das 5. Feld in der 3. Reihe an usw.
bedeutet dann, dass das j%-te Feld in der i%-ten Reihe eine Perle ist.
Code: | DIM SHARED score%, restPerl% |
bedeutet ganz einfach, dass diese beiden Variablen auch in den SUBs und FUNCTIONs zur Verfügung stehen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
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.
|
|