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:

kleines Spiel
Gehe zu Seite Zurück  1, 2, 3, 4, 5
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Seb



Anmeldungsdatum: 29.11.2006
Beiträge: 120
Wohnort: Henfenfeld

BeitragVerfasst am: 07.03.2008, 22:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
dreael
Administrator


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

BeitragVerfasst am: 08.03.2008, 23:42    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 29.11.2006
Beiträge: 120
Wohnort: Henfenfeld

BeitragVerfasst am: 10.03.2008, 21:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Seb



Anmeldungsdatum: 29.11.2006
Beiträge: 120
Wohnort: Henfenfeld

BeitragVerfasst am: 13.03.2008, 16:55    Titel: Antworten mit Zitat

Weiß jemand was falsch ist oder fehlt?
_________________
MfG
Seb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 14.03.2008, 13:06    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 22.11.2007
Beiträge: 48

BeitragVerfasst am: 14.03.2008, 13:50    Titel: Antworten mit Zitat

kein kommentar:

http://www.antonis.de/faq/qbmonfaq-dateien/252708032.html
_________________
visit our Homepage!
shift ist verschwendung...
...o gott - ich fang schon wieder an zu spammen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Seb



Anmeldungsdatum: 29.11.2006
Beiträge: 120
Wohnort: Henfenfeld

BeitragVerfasst am: 23.03.2008, 08:55    Titel: Antworten mit Zitat

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:
Code:
            lev%(j%, i%) = 2


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 missbilligen
_________________
MfG
Seb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4709
Wohnort: ~/

BeitragVerfasst am: 23.03.2008, 09:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


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

BeitragVerfasst am: 23.03.2008, 11:06    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 29.11.2006
Beiträge: 120
Wohnort: Henfenfeld

BeitragVerfasst am: 26.03.2008, 13:07    Titel: Antworten mit Zitat

Danke!
Jetzt habe ich SUB verstanden.

Aber bin trotzdem noch nicht weiter gekommen... weinen
_________________
MfG
Seb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4709
Wohnort: ~/

BeitragVerfasst am: 26.03.2008, 14:45    Titel: Antworten mit Zitat

Leider weiß ich nicht ganz genau, wo deine Schwierigkeiten liegen. lächeln

Du gibst noch folgende Code-Zeilen an:
Code:
DIM lev%(1 TO 39, 1 TO 24)

und
Code:
lev%(j%, i%) = 2

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.
Code:
lev%(j%, i%) = 2

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
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 QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3, 4, 5
Seite 5 von 5

 
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