Einmaliger Durchlauf Problem
Übersicht

![]() |
Raiden93Betreff: Einmaliger Durchlauf Problem |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo ich mache gerade ein Spiel was einem Browsergame ähnelt .Hat man genug Gold kann man seine Goldmine ausbauen.Das Problem was ich jetzt aber habe ist folgendes.
Ich kriege es nicht gebacken das das Gold nur 1 mal abgezogen wird.Jede Sekunde werden 1000Gold abgezogen es soll aber nur 1 mal abgezogen werden aber weis nicht wie ich das realisieren soll ich habe mir schon das Buch Hack'n'Play - Spiele programmieren gekauft und teils gelesen aber finde keine lösung. Ich hoffe ihr könnt mir helfen. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du meinst, dass der Kaufpreis immer wieder abgezogen wird? Wie sieht der Code dazu aus?
Du musst ggf. Variablen benutzen - Nach der Aktion z.B. auf True setzen und später wieder Freigeben. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Brauchen wir den Code (oder Teil-Code) damit wir dir bei deinem Code helfen können
2. Du hast ja sicherlich ne Abfrage Code: [AUSKLAPPEN] If Button_Für_Kauf = gedrückt then
endif drin. Dann machst du noch ne Abfrage ob genug Gold da ist Code: [AUSKLAPPEN] If Button_Für_Kauf = gedrückt Then
If Aktuelles_Gold - Gold_Kosten => 0 Then EndIf EndIf Und da schreibst du dann rein Code: [AUSKLAPPEN] Gold = Gold - Kosten
Und dann wird dass nur solange ausgeführt wie du den Button drückst (am besten mit MouseHit ![]() 3. Guck dir mal [[Millisecs()]] an... mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja aber das Problem ist das wenn ich es 1 mal gekauft habe das ich es solange nichts mehr tut bis ich z.b genug gold für upgrade stufe 2 habe sonst sage ich mal ich bin auf upgrade 1 der kostet 250 so dann hab ich das gekauft aber kann jetzt immer wieder auf den button klicken und es geht bis stufe 100000
Code: [AUSKLAPPEN] Graphics 800,600,32,2 AppTitle "Kongra" SetBuffer BackBuffer() Timer=CreateTimer(60) ;Laden von Datein Global Hintergrund = LoadImage("GFX/Hintergrund.bmp") Global Upgrade_Gold = LoadImage("GFX/Button.bmp") Global Upgrade_Stein = LoadImage("GFX/Button.bmp") Global Upgrade_Holz = LoadImage("GFX/Button.bmp") Global Balken = LoadImage("GFX/Balken.bmp") Global SeiteL = LoadImage("GFX/SeiteL.bmp") Global SeiteR = LoadImage("GFX/SeiteR.bmp") Global Fenster = LoadImage("GFX/Fenster.bmp") Global Fensterkl = LoadImage("GFX/Fensterkl.bmp") ;Variablen> Global Gold = 0 Global Stein = 0 Global Holz = 0 Global GoldZeit = 1000 Global SteinZeit = 1000 Global HolzZeit = 1000 Global GoldLevel = 1 Global SteinLevel = 1 Global HolzLevel = 1 Global Goldzahl = 1 Global Steinzahl = 1 Global Holzzahl =1 Global Goldkosten_Goldmine = 250 Global Steinkosten_Goldmine = 250 Global Holzkosten_Goldmine = 250 Global Goldkosten_Steinmine = 250 Global Steinkosten_Steinmine = 250 Global Holzkosten_Steinmine = 250 Global Goldkosten_Holzfaller = 250 Global Steinkosten_Holzfaller = 250 Global Holzkosten_Holzfaller = 250 ;Hauptschleife> Repeat Cls ;Images Malen DrawImage Hintergrund,0,0 DrawImage Fenster,12,20 DrawImage Upgrade_Gold,25,55 DrawImage Upgrade_Stein,25,125 DrawImage Upgrade_Holz,25,195 DrawImage Balken,0,0 DrawImage Balken,0,585 DrawImage SeiteL,0,15 DrawImage SeiteR,792,15 ;Buttons If MouseX()>25 And MouseX()<139;GoldUpgradeButton If MouseY()>55 And MouseY()<82 If MouseHit(1) Goldlevel = Goldlevel+1 End If KosteninfoGold() EndIf EndIf If MouseX()>25 And MouseX()<139;SteinUpgradeButton If MouseY()>125 And MouseY()<152 If MouseHit(1) Steinlevel = Steinlevel+1 End If KosteninfoStein() EndIf EndIf If MouseX()>25 And MouseX()<139;HolzUpgradeButton If MouseY()>195 And MouseY()<222 If MouseHit(1) Holzlevel = Holzlevel+1 End If KosteninfoHolz() EndIf EndIf ;UpgradesLevel Select Goldlevel;Goldupgrade Case 1 Goldzahl = 1 Case 2 Goldzahl = 2 Gold = Gold -1000 Case 3 Goldzahl = 3 Case 4 Goldlevel = 3 End Select Select Steinlevel;Steinupgrade Case 1 Steinzahl = 1 Case 2 Steinzahl = 2 Case 3 Steinzahl = 3 Case 4 Steinlevel = 3 End Select Select Holzlevel;Holzupgrade Case 1 Holzzahl = 1 Case 2 Holzzahl = 2 Case 3 Holzzahl = 3 Case 4 Holzlevel = 3 End Select ;UpgradekostenGOLDMINE Select GoldLevel;GoldupgradeKosten Case 2 Goldkosten_Goldmine = 250 Steinkosten_Goldmine = 250 Holzkosten_Goldmine = 250 Case 3 Goldkosten_Goldmine = 400 Steinkosten_Goldmine = 400 Holzkosten_Goldmine = 400 End Select Select Steinlevel;SteinupgradeKosten Case 2 Goldkosten_Steinmine = 250 Steinkosten_Steinmine = 250 Holzkosten_Steinmine = 250 Case 3 Goldkosten_Steinmine = 400 Steinkosten_Steinmine = 400 Holzkosten_Steinmine = 400 End Select Select Holzlevel;HolzupgradeKosten Case 2 Goldkosten_Holzfaller = 250 Steinkosten_Holzfaller = 250 Holzkosten_Holzfaller = 250 Case 3 Goldkosten_Holzfaller = 400 Steinkosten_Holzfaller = 400 Holzkosten_Holzfaller = 400 End Select ;Timer>FürRessorcen If MilliSecs()>=gs+GoldZeit gs=MilliSecs() GoldPlus() EndIf If MilliSecs()>=ss+SteinZeit ss=MilliSecs() SteinPlus() EndIf If MilliSecs()>=hs+HolzZeit hs=MilliSecs() HolzPlus() EndIf ;Texte>FürRessorcen Color 0, 0, 0 Text 25,35, "Goldmine Lvl: "+Goldzahl Text 25,105, "Steinmine Lvl: "+Steinzahl Text 25,175, "Holzfäller Lvl: "+Holzzahl Text 20,565,"Gold: " +Gold Text 140,565,"Stein: " +Stein Text 265,565,"Holz: " +Holz Text 620,565,"©Copyright by Raidenk" Flip 0 WaitTimer Timer Until KeyHit(1) ;Functionen> Function GoldPlus() Gold = Gold+Goldzahl End Function Function SteinPlus() Stein = Stein+Steinzahl End Function Function HolzPlus() Holz = Holz+Holzzahl End Function Function KosteninfoGold() DrawImage Fensterkl,600,25 Text 625,50, "Upgrade kosten" Text 625,75, "Gold: " +Goldkosten_Goldmine Text 625,100, "Stein: " +Steinkosten_Goldmine Text 625,125, "Holz: " +Holzkosten_Goldmine End Function Function KosteninfoStein() DrawImage Fensterkl,600,25 Text 625,50, "Upgrade kosten: " Text 625,75, "Gold: " +Goldkosten_Steinmine Text 625,100, "Stein: " +Steinkosten_Steinmine Text 625,125, "Holz: " +Holzkosten_Steinmine End Function Function KosteninfoHolz() DrawImage Fensterkl,600,25 Text 625,50, "Upgrade kosten: " Text 625,75, "Gold: " +Goldkosten_Holzfaller Text 625,100, "Stein: " +Steinkosten_Holzfaller Text 625,125, "Holz: " +Holzkosten_Holzfaller End Function |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast Riesengröße Blöcke Code die in Funktionen passen würden, aber verwenden tust das nur bei Einzeilern - jede Menge Aufräum-Potential.
Das mit dem Maushit wird so nie und nimmer funktionieren ![]() Wie ToeB so richtig schrieb, musst du den Teil verändern: Code: [AUSKLAPPEN] If MouseHit(1)
Goldlevel = Goldlevel+1 End If 1. Überprüfen, ob genug Ressourcen da sind. 2. Falls ja: bauen/hochzählen und die Kosten abziehen. Alles einmal nach dem Klick auf die richtige Stelle, nicht irgendwo im Programm verteilt. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
wann und was ist den sinnvoll es in eine function zu packen ich hab da noch nie durchgeblickt deswegen schreibe ich fast alles auch ohne functionen | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Alles, was du mehr als 2x wiederholst, kannst du in eine Funktion packen, z.B. deine "Buttons".
Die Funktionen kannst du dann in weiteren Projekten verwenden, ohne jedesmal das Rad neu zu erfinden. Würde auch Sinn machen, deine Minen und zugehörigen Variablen endweder in ein Array ( ![]() ![]() ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm ok habe nur versucht an arrays vorbei zu gehen weil ich das nicht wirklich kapiere ich werde mir das halt nochmal richtig alles durchlesen.
Warum macht der bei meiner Function jetzt das Problem das jede millisek 1 Gold dazu addiert wird und wenn ich es in der Hauptschleife packe nur jede sekunde? [url];Hauptschleife> Repeat ;Images Malen DrawImage Hintergrund,0,0 DrawImage Fenster,12,20 DrawImage Upgrade_Gold,25,55 ;DrawImage Upgrade_Stein,25,125 ;DrawImage Upgrade_Holz,25,195 DrawImage Balken,0,0 DrawImage Balken,0,585 DrawImage SeiteL,0,15 DrawImage SeiteR,792,15 GoldPlus() ;Texte>FürRessorcen Color 0, 0, 0 Text 25,35, "Goldmine Lvl: " Text 20,565,"Gold: "+Gold Text 620,565,"©Copyright by Raidenk" Flip 1 Cls Until KeyHit(1) ;Functionen> Function GoldPlus() If MilliSecs()>=gs+1000 gs=MilliSecs() Gold = Gold +1 EndIf End Function [/url] |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Denk dran, das Variablen außerhalb der Funktion Global![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hab ich ja gemacht hier ist das ganze
Code: [AUSKLAPPEN] Graphics 800,600,32,2
AppTitle "Kongra" SetBuffer BackBuffer() Timer=CreateTimer(60) ;Laden von Datein Global Hintergrund = LoadImage("GFX/Hintergrund.bmp") Global Upgrade_Gold = LoadImage("GFX/Button.bmp") Global Upgrade_Stein = LoadImage("GFX/Button.bmp") Global Upgrade_Holz = LoadImage("GFX/Button.bmp") Global Balken = LoadImage("GFX/Balken.bmp") Global SeiteL = LoadImage("GFX/SeiteL.bmp") Global SeiteR = LoadImage("GFX/SeiteR.bmp") Global Fenster = LoadImage("GFX/Fenster.bmp") Global Fensterkl = LoadImage("GFX/Fensterkl.bmp") Global Gold = 0 Global Gold_Zeit = 1000 Global Gold_Einkommen = 1 ;Hauptschleife> Repeat ;Images Malen DrawImage Hintergrund,0,0 DrawImage Fenster,12,20 DrawImage Upgrade_Gold,25,55 ;DrawImage Upgrade_Stein,25,125 ;DrawImage Upgrade_Holz,25,195 DrawImage Balken,0,0 DrawImage Balken,0,585 DrawImage SeiteL,0,15 DrawImage SeiteR,792,15 GoldPlus() ;Texte>FürRessorcen Color 0, 0, 0 Text 25,35, "Goldmine Lvl: " Text 20,565,"Gold: "+Gold Text 620,565,"©Copyright by Raidenk" Flip 1 Cls Until KeyHit(1) ;Functionen> Function GoldPlus() If MilliSecs()>=gs+Gold_Zeit gs=MilliSecs() Gold = Gold +Gold_Einkommen EndIf End Function |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nö, hast du nicht. gs ist überhaupt nicht deklariert. Um solche Fehler schneller zu finden, solltest du IDEal verwenden - da wird dir angezeigt, welche Variable nicht deklariert ist, bzw. du kannst dir einstellen, wie Locale, Globale und Konstanten aussehen sollen. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ahh danke das Programm ist echt cool | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group