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:

Spiel klappt in QB4.5, in *.exe datei läuft alles schief.

 
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
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 26.04.2005, 17:17    Titel: Spiel klappt in QB4.5, in *.exe datei läuft alles schief. Antworten mit Zitat

Hallo,
ich hab mal aus langeweile ein kleines Spiel geschrieben. In der *.bas datei klappt alles, doch sobald ich eine *.exe datei mache, dann klappt irgendwas nicht. Schwer zu erklären. Ich glaube aber, dass das an den Zufallszahlen liegt. Am besten mal die .bas datei und die .exe datei öffnen und nacher vergleichen. Dann versteht ihr was ich meine. Es scheint so, als wenn die Zufallszahlen immer gleich sind. durchgeknallt

Danke fürs helfen!!!!!!!
Link zu der bas und exe datei ist unten.

Code:
DEFINT A-Z

DECLARE SUB best (schwer!, punkte!, name$)

SCREEN 12
RANDOMIZE TIMER

DO
   DO
      CLS
      INPUT "Bitte w„hlen sie eine Schwierigkeitsstufe. (1-3) : ", schwer!
   LOOP WHILE schwer! > 3 OR schwer! < 1
 
   CLS
 
   PRINT
   PRINT
   INPUT "Bitte geben sie ihren Namen ein. ", name$
   IF name$ = "" THEN name$ = "Unbekannt"
   CLS

   PRINT "Steuern mit Hoch, Runter, Links, Rechts, selbstmord (beenden) mit b."
   PRINT ""
   PRINT "Ihre Aufgabe: Ber?hren sie keine roten Kometen."
   SLEEP 2

   COLOR 4


   xW = 630
   yW = 470


   HOCH$ = CHR$(0) + "H"
   RUNTER$ = CHR$(0) + "P"
   LINKS$ = CHR$(0) + "K"
   RECHTS$ = CHR$(0) + "M"
   BEENDEN$ = "b"

   CLS

   kometen% = schwer! * 5 + 5


   DIM kx&(kometen%)
   DIM ky&(kometen%)
   DIM a&(kometen%)
   DIM b&(kometen%)
   DIM c&(kometen%)
   DIM kxalt&(kometen%)
   DIM kyalt&(kometen%)



   FOR i% = 1 TO kometen%
      kx&(i%) = INT(RND * 500) + 60
      ky&(i%) = INT(RND * 300) + 60
   NEXT i%

   DO
      IF a$ = HOCH$ OR a$ = RUNTER$ OR a$ = LINKS$ OR a$ = RECHTS$ THEN punkte! = punkte! + 5
      LOCATE 1, 1: PRINT punkte!
      FOR zeit% = 1 TO 3

       
         FOR i% = 1 TO kometen%
            a&(i%) = INT(RND * 2) + 1
            b&(i%) = INT(RND * 5)
            c&(i%) = INT(RND * 5)
         NEXT i%


         FOR spieler% = 1 TO 20
            bn$ = INKEY$
               
            IF bn$ <> "" THEN
               a$ = bn$
            END IF
               
            IF a$ = HOCH$ THEN yW = yW - 3
            IF a$ = RUNTER$ THEN yW = yW + 3
            IF a$ = LINKS$ THEN xW = xW - 3
            IF a$ = RECHTS$ THEN xW = xW + 3
            IF a$ = BEENDEN$ THEN EXIT DO

            FOR r% = 1 TO 3
               CIRCLE (xalt, yalt), r%, 0
               CIRCLE (xW, yW), r%, 15
            NEXT r%

            xalt = xW
            yalt = yW
            WAIT &H3DA, 8
            WAIT &H3DA, 8, 8

            FOR i% = 1 TO kometen%
               IF a&(i%) = 1 THEN
                  kx&(i%) = kx&(i%) + b&(i%)
                  ky&(i%) = ky&(i%) + c&(i%)
               END IF

               IF a&(i%) = 2 THEN
                  kx&(i%) = kx&(i%) - b&(i%)
                  ky&(i%) = ky&(i%) - c&(i%)
               END IF
               
               IF kx&(i%) > 635 THEN kx&(i%) = kx&(i%) - 5
               IF kx&(i%) < 5 THEN kx&(i%) = kx&(i%) + 5
               IF ky&(i%) > 475 THEN ky&(i%) = ky&(i%) - 5
               IF ky&(i%) < 5 THEN ky&(i%) = ky&(i%) + 5
             
               FOR z% = 1 TO 5
                  CIRCLE (kxalt&(i%), kyalt&(i%)), z%, 0
                  CIRCLE (kx&(i%), ky&(i%)), z%
               NEXT z%

               kxalt&(i%) = kx&(i%)
               kyalt&(i%) = ky&(i%)
           
               IF xW > 635 THEN xW = xW - 5
               IF xW < 5 THEN xW = xW + 5
               IF yW > 475 THEN yW = yW - 5
               IF yW < 5 THEN yW = yW + 5
             
               IF yW > ky&(i%) - 9 AND yW < ky&(i%) + 9 AND xW > kx&(i%) - 9 AND xW < kx&(i%) + 9 THEN EXIT DO
               IF yW > ky&(i%) - 9 AND yW < ky&(i%) + 9 AND xW > kx&(i%) - 9 AND xW < kx&(i%) + 9 THEN EXIT DO
            NEXT i%
         NEXT spieler%
      NEXT zeit%
   LOOP

   FOR i% = 1 TO 350 STEP 2
      COLOR 4
      CIRCLE (xW, yW), i%
      WAIT &H3DA, 8
       WAIT &H3DA, 8, 8
             
      IF i% > 5 THEN
         COLOR 6
         CIRCLE (xW, yW + 1), i% - 5
      END IF
     
   NEXT i%

   FOR warte% = 1 TO 40
      WAIT &H3DA, 8
      WAIT &H3DA, 8, 8
   NEXT warte%

   FOR r% = 350 TO 1 STEP -1
      COLOR 0
      CIRCLE (xW, yW), r%
      CIRCLE (xW, yW + 1), r% + 20
   NEXT r%
         
   FOR r% = 20 TO 1 STEP -1
      CIRCLE (xW, yW + 1), r%
   NEXT r%

   CLS

   COLOR 15
 
   CALL best(schwer!, punkte!, name$)

   INPUT "(N)eustart oder (b)eenden??", ende$

   SELECT CASE ende$

   CASE IS = "b"
   CLS
   PRINT "Vielen Dank f?rs Spielen.    "
   PRINT
   PRINT
   PRINT
   PRINT
   PRINT
   PRINT "Copyright by Michael Laumen"
   END

   END SELECT
LOOP

DEFSNG A-Z
SUB best (schwer, punkte, name$)

IF schwer = 1 THEN s$ = "leicht"
IF schwer = 2 THEN s$ = "mittel"
IF schwer = 3 THEN s$ = "schwer"

OPEN s$ + "best.dat" FOR APPEND AS #1
a = 30

DO UNTIL LOF(1) > 0
   PRINT #1, "Michael"
   WRITE #1, a
LOOP
CLOSE #1

OPEN s$ + "best.dat" FOR INPUT AS #1
LINE INPUT #1, name$
INPUT #1, p
CLOSE #1

PRINT "Der Rekord von "; name$; " liegt bei "; p; " Punkten"
PRINT ""
PRINT ""
IF punkte < p THEN
   PRINT "Sie haben mit "; punkte; " Punkten leider keinen neuen Rekord aufgestellt."
END IF

IF punkte > p THEN
   PRINT "Herzlichen Gl?ckwunsch.Sie haben"; punkte; " Punkte erreicht"
   PRINT "und somit den Rekord von "; name$; " geschlagen"
   OPEN s$ + "best.dat" FOR OUTPUT AS #1
   PRINT #1, name$
   WRITE #1, punkte
   CLOSE #1
END IF
SLEEP
SLEEP
END SUB


Hier sind die dateien[/code]
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Dorftrottel
gesperrt


Anmeldungsdatum: 23.04.2005
Beiträge: 97
Wohnort: Welt

BeitragVerfasst am: 26.04.2005, 17:28    Titel: Antworten mit Zitat

ich hab ne idee
kommt bei dir immer der fehler hier?

Unzulässiger Dateiname in Zeile Keine zeilennummer in Modul SIRENE
0E23:12EF

weil dann heißt dass so vie wie dass der pfadname der best.txt
falsch is
(du musst den genauen pfad angeben) z.b
OPEN s$ + "c:\game1\best.txt"...
_________________
Euer Dorftrottel!
Unser Name ist unser Auftrag! lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 26.04.2005, 18:08    Titel: Antworten mit Zitat

Also, bei mir klappt das Spiel.
Weiß nicht, wo das Problem ist... verwundert

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dorftrottel
gesperrt


Anmeldungsdatum: 23.04.2005
Beiträge: 97
Wohnort: Welt

BeitragVerfasst am: 26.04.2005, 18:15    Titel: Antworten mit Zitat

bei mir auch.
nur die ...best.dat findets nich obwohl ich se erstellt habe?
_________________
Euer Dorftrottel!
Unser Name ist unser Auftrag! lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 26.04.2005, 18:47    Titel: Antworten mit Zitat

jb hat Folgendes geschrieben:
Also, bei mir klappt das Spiel.
Weiß nicht, wo das Problem ist... verwundert

jb


bei mir klappt das auch, aber es läuft anders ab als in QB. Die "Kometen" (roten Dinger) schwirren in QB.exe über dem kompletten Bildschirm. In der erstellten exe-datei gehen die nach ein paar sek. alle in der oberen linken ecke und bleiben dort. Kuzgesagt, das ist sch*****, weil das dann super-einfach zu spielen ist. Ich habs schon an 2 PCs getestet. Vielleicht liegts auch am CPU. Beide PCs haben über 2000MHZ.

@dorftrottell: Danke, aber daran liegts nicht.
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Bernd



Anmeldungsdatum: 14.09.2004
Beiträge: 498
Wohnort: Kulmbach

BeitragVerfasst am: 26.04.2005, 19:25    Titel: Antworten mit Zitat

also bei mir ist das Problem aber da...

probier mal das RANDOMIZE TIMER dierekt vor die Stelle zu setzten, wos dus brauchst, vielleicht hilfts ja, was ich aber kaum glaube...

Bernd
_________________
Neue Homepage: http://www.glubb.rockt.de

UND

Der Wahnsinn hat seine eigene Homepage: http://pulmollwand.rulz.de
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: 26.04.2005, 22:36    Titel: Antworten mit Zitat

Dorftrottel hat Folgendes geschrieben:
ich hab ne idee
kommt bei dir immer der fehler hier?

Unzulässiger Dateiname in Zeile Keine zeilennummer in Modul SIRENE
0E23:12EF

Genau dort liegt der "Bock": Wenn s$ z.B. auf "leicht" gesetzt wird, ergibt "leicht" + "best.dat" = "leichtbest.dat" einen zu langen Dateinamen (entspricht nicht der 8+3-DOS-Konvention). Ein kürzeres s$, z.B. "L_", "M_" und "S_" löst das Problem eigentlich bereits...
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 26.04.2005, 22:42    Titel: Antworten mit Zitat

dreael hat Folgendes geschrieben:
Dorftrottel hat Folgendes geschrieben:
ich hab ne idee
kommt bei dir immer der fehler hier?

Unzulässiger Dateiname in Zeile Keine zeilennummer in Modul SIRENE
0E23:12EF

Genau dort liegt der "Bock": Wenn s$ z.B. auf "leicht" gesetzt wird, ergibt "leicht" + "best.dat" = "leichtbest.dat" einen zu langen Dateinamen (entspricht nicht der 8+3-DOS-Konvention). Ein kürzeres s$, z.B. "L_", "M_" und "S_" löst das Problem eigentlich bereits...


Klappt aber immer noch nicht. UNd was hat die bestenliste mit dem Verlauf des Spiels zu tun, wenn sie erst am Ende(wenn das spiel vorbei ist) geladen bzw. darauf zugegriffen wird. Das Problem besteht darin, dass die Kometen sich Falsch verhalten und das Spiel schrotten. Das ist nur in der exe-datei so.

EDIT: Hab auch schon das ausgetestet, was Bernd und was Drael gesagt haben. Klappt alles nicht.
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 27.04.2005, 15:33    Titel: Antworten mit Zitat

Ich hab eine Lösung gefunden.

Wenn ich die *.exe datei erstelle und auf debug-code erstellen klicke, dann klappt das Programm. Wieso klappt das ohne dem debug-code nicht???


Mfg
Michael
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


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

BeitragVerfasst am: 27.04.2005, 22:28    Titel: Antworten mit Zitat

Ich denke einmal, dass vielleicht diese WAIT-Anweisungen nicht ganz unproblematisch sind. So etwas würde ich lieber mit TIMER (und Tiefpassfilter wegen 55 ms-Problem) lösen...
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 28.04.2005, 14:14    Titel: Antworten mit Zitat

Achso. Mit timer hab ich bis jetzt noch nichts gemacht. Mal gucken ob ich klarkomme.


THX@all
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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
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