Anfänger braucht Hilfe bei Minigame

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Blade90

Betreff: Anfänger braucht Hilfe bei Minigame

BeitragSo, Apr 19, 2009 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen!

Ich habe mich extra für diese Frage registriert und bin daher ganz neu hier.
Ich wollte ein extrem simples Minigame erstellen (bin aber ne ziemliche Flasche im Programmieren!):
Ich habe mir 11 Städte ausgesucht, die dann zufällig ausgegeben werden sollen in dem Programm (per rnd dann halt "Stuttgart" und danach "München") und anschließend soll man eine Eingabe machen, was man schätzt, wie weit diese beiden Orte auseinander liegen. In dem Fall wären das 230 Km, man gibt also 200 Km ein und der Computer sagt: "Gar nicht schlecht, die Differenz beträgt 30 Km, da die korrekte Entfernung 230 Km beträgt!".

Ich bin jetzt soweit, kenne aber wirklich nur die Grund-Grundlagen des Basicprogrammierens, also nicht zu hart sein! Glaube aber, dass ich selbst bisher schon einen Fehler gemacht habe. Wirklich wissen, wie ich jetzt weiter machen muss, weiß ich leider auch nicht Sad


Print "Hallo und willkommen bei dem Geographen-Quiz!"
Print "Bitte schätze die folgenden Routen richtig ein (in Km)!"

; Städte: Hamburg, Bremen, Hannover, Berlin, Düsseldorf, Erfurt, Frankfurt am Main, Leipzig, Nürnberg, Stuttgart, München

SeedRnd MilliSecs()
a=Rnd(0,11)


WaitKey

If a=1
Print "Hamburg"
WaitKey
If a=2
Print "Bremen"


WaitKey




Danke im Voraus!

biggicekey

BeitragSo, Apr 19, 2009 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
da hat wohl jemand schlag den raab gestern geschaut... Razz

die waitkeys sind bei dir schonmal überflüssig.
ich erkläre dir mal den meinermeinung nach einfachsten weg für einen anfänger, dieser ist aber sehr "hardcoded" und eigentlich nicht empfehlenswert.

dazu solltest du dann nur einmal
Code: [AUSKLAPPEN]
SeedRnd MilliSecs()
frage=Rnd(0,11)


benötigen.

abhängig vom ergebnis machst du einfach eine geschachtelte if bedingung:

Code: [AUSKLAPPEN]

if frage=1
Print "Schätze die Entfernung zwischen Stuttgart und München"
richtigeantwort=230
elseif frage=2
Print "Schätze die Entfernung zwischen Berlin und München"
richtigeantwort=590
elseif frage=3
.....
...
endif


dann fehlt nurnoch die benutzereingabe

Code: [AUSKLAPPEN]

benutzerantwort=input()

if benutzerantwort=richtigeantwort
print "RICHTIG"
elseif benutzerantwort>richtigeantwort
print "Du bist "+benutzerantwort-richtigeantwort+" km drüber"
elseif
...
..
endif


#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]
 

xXThunderXx

BeitragSo, Apr 19, 2009 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
kleines Beispiel für ein prob das du hast wenn du es so machst wie du machst wenn ich es richtig verstanden habe das man zwischen 2 Städte die entfernung schätzen soll


Code: [AUSKLAPPEN]

SeedRnd MilliSecs()
Print "Hallo und willkommen bei dem Geographen-Quiz!"
Print "Bitte schätze die folgenden"
Print "Routen richtig ein (in Km)!"

; Städte: Hamburg, Bremen, Hannover, Berlin, Düsseldorf, Erfurt, Frankfurt am Main, Leipzig, Nürnberg, Stuttgart, München



stadt1 = Rand(0,11)
stadt2 = Rand(0,11)

If stadt1 = stadt2 Then stadt2 = Rand(0,11) ; Verhinder das zwei gleiche Städte kommen


If stadt1 = 1 Then
   Print "Stuttgart"
EndIf

If stadt2 = 2 Then
   Print "Hamburg"
EndIf
;muss noch weiter führen nur kleines beispiel


Aber auf das andere musst selber kommen will dier ja nett des Überlgen abnehmen. Naja oben hast ja scho ne bessere erklärung.

biggicekey

BeitragSo, Apr 19, 2009 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm thunder, in deinem beispiel wiederholst du nur was er auch schon hatte...

@Blade90

wichtig ist das du die antworten mit den fragen zusammen in verbindung bringst. zufällig 2 städte wählen ginge nur wenn du nochmal extra zu diesen kombinationen die antwoten speicherst und abrufen könntest.

das erfordert aber wieder types oder dimfelder.
also am besten die komplette frage mit antwort in der if schleife verbinden.
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]
 

xXThunderXx

BeitragSo, Apr 19, 2009 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Aso ich weis ja nett vieleicht kannes Dimm oder TYpes weis man nett ist auch ne eine Möglich keit dachte ich mir aber ich werde in zukunft mir dei Fragen ganuer durch lesen. Wink

TimBo

BeitragSo, Apr 19, 2009 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Also das mit den ganzen If's kann ich nicht mehr sehen.

Ich gehe mal davon aus du bist anfänger aber nicht dumm XD

Schreibe für jede Stadt eine Kordinate.

Dim Stadt(id,1)
Dim Stadtnamen$(id)
;dann schreibst du
;informationen über berlin
Stadt(0,0)=100;x-wert
Stadt(0,1)=90 ;y-wert
Stadtnamen$(0)="Berlin"

die 0 steht also immer für Berlin.

wenn du nun also 2 Zahlen per Random gegebn hast kannst du die Informationen so auslesen

SeedRnd(MilliSecs)

;infos erste stadt
erste=Rand(0,anzahl_stadt)
stadt_x_1=Stadt(erste, 0)
stadt_y_1=Stadt(erste, 1)
;jetzt der Name der stadt
name1$=Stadtnamen(erste)

;infos 2te stadt
zweite=Rand(0,anzahl_stadt)
stadt_x_2=Stadt(zweite, 0)
stadt_y_2=Stadt(zweite, 1)
;name der zweiten Stadt
name2$=Stadtnamen(zweite)


hier must du allerdings schauen, dass erste und zweite nicht gleich sind.

mit Pythaguras kannst du dann die Luftlinie ausrechnen

Abstand=(x1-x2)^2+(y1-y2)^2

wenn du bei den Kordinaten auch eine Höhe angibst, dann kannst du den Abstand so errechnen

Abstand=(x1-x2)^2+(y1-y2)^2+(z1-z2)^2

Viele Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

Blade90

BeitragSo, Apr 19, 2009 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow ging das schnell! Wahnsinnig hilfreiches Forum hier und vielen Dank an alle!
Ich werds heute noch fertig versuchen!


Meine allgemeine Schwierigkeit war bisher immer diese "If" Sache. Im Prinzip ein einfacher Befehl, aber ich habe mir bei einem anderen kleinen Programm schon die Zähne daran ausgebissen, weil ein kleiner Fehler sofort bestraft wird, wenn man "If" o.Ä. falsch anwendet!


Vielen Dank!
 

Blade90

BeitragSo, Apr 19, 2009 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bekomme bei dem fertigen Programm die Fehlermeldung "Operator cannot applied to strings". Ich ahne, dass irgendwo so ein "$" oder sowas hin muss, doch leider kenn ich mich in der Materie nicht so richtig aus, sodass ich diese String/Integer Sachen etc. noch nicht so richtig auseinander halten kann!

Hat einer die Lösung? Confused
 

xXThunderXx

BeitragSo, Apr 19, 2009 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde mal sagen dazu bräuchte man deinen Code um den Fehler zufinden.
 

Blade90

BeitragSo, Apr 19, 2009 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Kein Problem:

Code: [AUSKLAPPEN]

Print "Hallo und willkommen bei dem Geographen-Quiz!"
Print "Bitte schätze die folgenden Routen richtig ein (in Km)!"

; Städte: Hamburg, Bremen, Hannover, Berlin, Düsseldorf, Erfurt, Frankfurt, Leipzig, Nürnberg, Stuttgart, München

SeedRnd MilliSecs()
frage=Rnd(0,55)

If frage=1
Print "Schätze die Entfernung zwischen Hamburg und Bremen"
richtigeantwort=122
ElseIf frage=2
Print "Schätze die Entfernung zwischen Hamburg und Hannover"
richtigeantwort=157

(etc. etc.)


benutzerantwort=Input()

If benutzerantwort=richtigeantwort
Print "Absolut richtig!"
ElseIf benutzerantwort>richtigeantwort
Print "Du bist "+benutzerantwort-richtigeantwort+" Km drüber"
ElseIf benutzerantwort<richtigeantwort
Print "Du bist "+richtigeantwort-benutzerantwort+" Km drunter"
EndIf
  • Zuletzt bearbeitet von Blade90 am So, Apr 19, 2009 19:24, insgesamt 3-mal bearbeitet
 

da_poller

BeitragSo, Apr 19, 2009 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
mit [:code:] hier ist der code [:/code:]

aber ohne die : das ganze Wink

Noobody

BeitragSo, Apr 19, 2009 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem liegt wohl bei BlitzBasic: [AUSKLAPPEN]
Print "Du bist "+benutzerantwort-richtigeantwort+" km drüber" 


Da musst du Klammern setzen, weil Blitz sonst meint, du wolltest auf einen String eine Subtraktion ausführen, was natürlich nicht geht.

Richtig wäre BlitzBasic: [AUSKLAPPEN]
Print "Du bist " + ( benutzerantwort - richtigeantwort ) + " km drüber" 
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Blade90

BeitragMi, Apr 22, 2009 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, hab jetzt ne Weile rumprobiert, aber irgendwie bringt er den Fehler "Expecting expression"... Hier der Code:

Code: [AUSKLAPPEN]


Print "Hallo und willkommen bei dem Geographen-Quiz!"
Print "Bitte schätze die folgenden Routen richtig ein (in Km)!"

; Städte: Hamburg, Bremen, Hannover, Berlin, Düsseldorf, Erfurt, Frankfurt, Leipzig, Nürnberg, Stuttgart, München

SeedRnd MilliSecs()
frage=Rnd(0,55)

benutzerantwort=Input()

If benutzerantwort=richtigeantwort
Print "Absolut richtig!"
ElseIf
benutzerantwort>richtigeantwort
Print "Du bist "(+benutzerantwort-richtigeantwort+)" Km drüber"
ElseIf
benutzerantwort<richtigeantwort
Print "Du bist "(+richtigeantwort-benutzerantwort+)" Km drunter"
EndIf

If frage=1
Print "Schätze die Entfernung zwischen Hamburg und Bremen"
richtigeantwort=122
ElseIf frage=2
Print "Schätze die Entfernung zwischen Hamburg und Hannover"
richtigeantwort=157
ElseIf frage=3
Print "Schätze die Entfernung zwischen Hamburg und Berlin"
richtigeantwort=289
ElseIf frage=4
Print "Schätze die Entfernung zwischen Hamburg und Düsseldorf"
richtigeantwort=398
ElseIf frage=5
Print "Schätze die Entfernung zwischen Hamburg und Erfurt"
richtigeantwort=398
ElseIf frage=6
Print "Schätze die Entfernung zwischen Hamburg und Frankfurt"
richtigeantwort=493
ElseIf frage=7
Print "Schätze die Entfernung zwischen Hamburg und Leipzig"
richtigeantwort=395
ElseIf frage=8
Print "Schätze die Entfernung zwischen Hamburg und Nürnberg"
richtigeantwort=610
ElseIf frage=9
Print "Schätze die Entfernung zwischen Hamburg und Stuttgart"
richtigeantwort=655
ElseIf frage=10
Print "Schätze die Entfernung zwischen Hamburg und München"
richtigeantwort=775
ElseIf frage=11
Print "Schätze die Entfernung zwischen Bremen und Hannover"
richtigeantwort=131
ElseIf frage=12
Print "Schätze die Entfernung zwischen Bremen und Berlin"
richtigeantwort=397
ElseIf frage=13
Print "Schätze die Entfernung zwischen Bremen und Düsseldorf"
richtigeantwort=287
ElseIf frage=14
Print "Schätze die Entfernung zwischen Bremen und Erfurt"
richtigeantwort=371
ElseIf frage=15
Print "Schätze die Entfernung zwischen Bremen und Frankfurt"
richtigeantwort=441
ElseIf frage=16
Print "Schätze die Entfernung zwischen Bremen und Leipzig"
richtigeantwort=369
ElseIf frage=17
Print "Schätze die Entfernung zwischen Bremen und Nürnberg"
richtigeantwort=583
ElseIf frage=18
Print "Schätze die Entfernung zwischen Bremen und Stuttgart"
richtigeantwort=629
ElseIf frage=19
Print "Schätze die Entfernung zwischen Bremen und München"
richtigeantwort=748
ElseIf frage=20
Print "Schätze die Entfernung zwischen Hannover und Berlin"
richtigeantwort=291
ElseIf frage=21
Print "Schätze die Entfernung zwischen Hannover und Düsseldorf"
richtigeantwort=278
ElseIf frage=22
Print "Schätze die Entfernung zwischen Hannover und Erfurt"
richtigeantwort=254
ElseIf frage=23
Print "Schätze die Entfernung zwischen Hannover und Frankfurt"
richtigeantwort=349
ElseIf frage=24
Print "Schätze die Entfernung zwischen Hannover und Leipzig"
richtigeantwort=262
ElseIf frage=25
Print "Schätze die Entfernung zwischen Hannover und Nürnberg"
richtigeantwort=466
ElseIf frage=26
Print "Schätze die Entfernung zwischen Hannover und Stuttgart"
richtigeantwort=512
ElseIf frage=27
Print "Schätze die Entfernung zwischen Hannover und München"
richtigeantwort=631
ElseIf frage=28
Print "Schätze die Entfernung zwischen Berlin und Düsseldorf"
richtigeantwort=559
ElseIf frage=29
Print "Schätze die Entfernung zwischen Berlin und Erfurt"
richtigeantwort=303
ElseIf frage=30
Print "Schätze die Entfernung zwischen Berlin und Frankfurt"
richtigeantwort=545
ElseIf frage=31
Print "Schätze die Entfernung zwischen Berlin und Leipzig"
richtigeantwort=190
ElseIf frage=32
Print "Schätze die Entfernung zwischen Berlin und Nürnberg"
richtigeantwort=439
ElseIf frage=33
Print "Schätze die Entfernung zwischen Berlin und Stuttgart"
richtigeantwort=634
ElseIf frage=34
Print "Schätze die Entfernung zwischen Berlin und München"
richtigeantwort=585
ElseIf frage=35
Print "Schätze die Entfernung zwischen Düsseldorf und Erfurt"
richtigeantwort=411
ElseIf frage=36
Print "Schätze die Entfernung zwischen Düsseldorf und Frankfurt"
richtigeantwort=230
ElseIf frage=37
Print "Schätze die Entfernung zwischen Düsseldorf und Leipzig"
richtigeantwort=487
ElseIf frage=38
Print "Schätze die Entfernung zwischen Düsseldorf und Nürnberg"
richtigeantwort=447
ElseIf frage=39
Print "Schätze die Entfernung zwischen Düsseldorf und Stuttgart"
richtigeantwort=405
ElseIf frage=40
Print "Schätze die Entfernung zwischen Düsseldorf und München"
richtigeantwort=612
ElseIf frage=41
Print "Schätze die Entfernung zwischen Erfurt und Frankfurt"
richtigeantwort=254
ElseIf frage=42
Print "Schätze die Entfernung zwischen Erfurt und Leipzig"
richtigeantwort=148
ElseIf frage=43
Print "Schätze die Entfernung zwischen Erfurt und Nürnberg"
richtigeantwort=231
ElseIf frage=44
Print "Schätze die Entfernung zwischen Erfurt und Stuttgart"
richtigeantwort=339
ElseIf frage=45
Print "Schätze die Entfernung zwischen Erfurt und München"
richtigeantwort=396
ElseIf frage=46
Print "Schätze die Entfernung zwischen Frankfurt und Leipzig"
richtigeantwort=393
ElseIf frage=47
Print "Schätze die Entfernung zwischen Frankfurt und Nürnberg"
richtigeantwort=228
ElseIf frage=48
Print "Schätze die Entfernung zwischen Frankfurt und Stuttgart"
richtigeantwort=209
ElseIf frage=49
Print "Schätze die Entfernung zwischen Frankfurt und München"
richtigeantwort=393
ElseIf frage=50
Print "Schätze die Entfernung zwischen Leipzig und Nürnberg"
richtigeantwort=283
ElseIf frage=51
Print "Schätze die Entfernung zwischen Leipzig und Stuttgart"
richtigeantwort=478
ElseIf frage=52
Print "Schätze die Entfernung zwischen Leipzig und München"
richtigeantwort=429
ElseIf frage=53
Print "Schätze die Entfernung zwischen Nürnberg und Stuttgart"
richtigeantwort=208
ElseIf frage=54
Print "Schätze die Entfernung zwischen Nürnberg und München"
richtigeantwort=166
ElseIf frage=55
Print "Schätze die Entfernung zwischen Stuttgart und München"
richtigeantwort=231
EndIf






WaitKey

 

DjDETE

BeitragMi, Apr 22, 2009 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst bei If-Abfrage nach der Benutzereingabe, wie du es später auch tust, bei den ElseIfs das Ereignis in die gleiche Zeile packen. Damit du nicht gleich den nächsten Fehler bekommst solltest du die Pluse (kp wie der Plural von Plus ist, vieleicht Plusata?) auserhalb der Klammer schreiben:
BlitzBasic: [AUSKLAPPEN]
If benutzerantwort=richtigeantwort
Print "Absolut richtig!"
ElseIf benutzerantwort>richtigeantwort ;editiert
Print "Du bist "+(benutzerantwort-richtigeantwort)+" Km drüber"
ElseIf benutzerantwort<richtigeantwort ; editiert
Print "Du bist "+(richtigeantwort-benutzerantwort)+" Km drunter"
EndIf

MfG
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.
  • Zuletzt bearbeitet von DjDETE am Mi, Apr 22, 2009 19:38, insgesamt einmal bearbeitet
 

Blade90

BeitragMi, Apr 22, 2009 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Fehler kommt leider immer noch Sad

ComNik

BeitragMi, Apr 22, 2009 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Was zeigt der Debugger den an, also in welcher Zeile ist der Fehler?
WIP: Vorx.Engine
 

DjDETE

BeitragMi, Apr 22, 2009 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ups hab vergessn das ereignis auch im code nach oben zu verschieben Embarassed
du könntest aber auch erstmal selbst nach dem fehler suchen bevor du wieder frägst.
MfG
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.
 

Blade90

BeitragMi, Apr 22, 2009 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay hab den Fehler gefunden! "Nach oben verschieben" war genau das richtige Stichwort. Habe nun versucht die Frage zu "loopen" mit .label1 und goto label1, doch egal wohin ich das loop positioniere, bekomme ich seltsame Ergebnisse!
Gibt es vlt. einen eleganteren Weg? Vlt. mithilfe einer Funktion?

ComNik

BeitragMi, Apr 22, 2009 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Also,
erstens: Duck dich gleich hagelts: "GOTO IST BÖSE! GEH NACH HAUSE NOOB!" Laughing

zweitens: weißt du was das elementare objekt in einem spiel ist????
- RICHTIG! Sie haben 1000 € gewonnen die GAME LOOP (wo wir wieder bei quiz spiel wären^^)

Solltest du das System einer Game LOOP verstanden haben. Kannst du deine Frage selber beantworten...
wenn Nicht: indem du eine Game Loop setzt z.B:

Code: [AUSKLAPPEN]

     Repeat
     SetBuffer BackBuffer()
    Cls

    ;DEIN QUIZ SPIEL CODE

     Flip
   Until KeyDown(1)
   


Dann wird alles zwischen Repeat und Until KeyDown(1) solange ausgeführt bis Esc gedrückt wird.
Rob Tutorials helfen wie immer...

lg ComNik

[Edit] Achso um einen fließenden übergang zu schaffen könntest du am ende sowas wie "Drücken Sie Enter für die nächste Frage" ausgeben lassen und dann z.B den Score erhöen oder so die Möglichkeiten sind (fast) unbegrenzt)
WIP: Vorx.Engine
 

Blade90

BeitragDo, Apr 23, 2009 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt klappt endlich alles so wie ich es wollte! Danke an Helfer, ihr habt mir nicht nur bei dem Code geholfen, sondern mich auch (ein wenig) zur Eigeninitiative gezwungen, sodass ich auch einiges bei der Geschichte gelernt habe! Zum Dank gebe ich euch allen das Ding in einigen Tagen, wenn es fertig ist!

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group