Anfänger braucht Hilfe bei Minigame
Übersicht

Blade90Betreff: Anfänger braucht Hilfe bei Minigame |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
da hat wohl jemand schlag den raab gestern geschaut... ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. ![]() |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? ![]() |
||
xXThunderXx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich würde mal sagen dazu bräuchte man deinen Code um den Fehler zufinden. | ||
Blade90 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mit [:code:] hier ist der code [:/code:]
aber ohne die : das ganze ![]() |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der Fehler kommt leider immer noch ![]() |
||
![]() |
ComNik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was zeigt der Debugger den an, also in welcher Zeile ist der Fehler? | ||
WIP: Vorx.Engine |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ups hab vergessn das ereignis auch im code nach oben zu verschieben ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also,
erstens: Duck dich gleich hagelts: "GOTO IST BÖSE! GEH NACH HAUSE NOOB!" ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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! | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group