Seite 1 von 2

2D Spiel

Verfasst: 24.02.2007 17:21
von Pandorra
hi,
ich mache gerade ein 2D Spiel und weiß nicht wie ich es machen kann das es mehrere Runden gibt ohne jeder einzelnen Koordinaten zu geben.
Ich hab überlegt ob es evtl. mit Structuren geht, nur leider weiß ich nicht wie ich das machen soll.

Hier der Code( mit sehr vielen Fehlern)

Code: Alles auswählen

#Number_of_Rounds = 10

Global Leben.l

Global Staerke.l
Global Verteidigung.l
Global Geschwindigkeit.l
Global Ausdauer.l
Global Glueck.l

Structure Runde
xPosAngriff.f
yPosAngriff.f
xPosHP.f
yPosHP.f

xPosStaerke.f
yPosStaerke.f
xPosVerteidigung.f
yPosVerteidigung.f
xPosGeschwindigkeit.f
yPosGeschwindigkeit.f
xPosAusdauer.f
yPosAusdauer.f
xPosGlueck.f
yPosGlueck.f
xPosBox.f
yPosBox.f
Box.l
EndStructure

Leben = 180

Staerke = 10
Verteidigung = 100
Geschwindigkeit = 10
Ausdauer = 10
Glueck = 10


Global Schlag.l
Schlag = 100 + Staerke - Verteidigung  

Global Dim *Runden.Runde(#Number_of_Rounds -1)
For i=0 To #Number_of_Rounds
Next


InitKeyboard()
  
 
  If InitSprite() = 0
    MessageRequester("Error", "Can't open screen & sprite enviroment!", 0)
    End
  EndIf
  
  If OpenWindow(0, 0, 0, 1220, 800, "...", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)

    If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160, 1, 0, 0) 
    Else
      MessageRequester("Error", "Can't open windowed screen!", 0)
      End
    EndIf
  EndIf
  
  LoadSprite(0 ,"Data\Anzeige.bmp")


  
      
Procedure RenderGame(*R.Runde)  
  Repeat
    Repeat
    DisplayTransparentSprite(0, 0, 0)
    StartDrawing(WindowOutput(0))
    DrawText(13, 20, "HP: "+ Str(Leben), RGB(255, 255, 255), RGB(0, 0, 0))

    DrawText(13, 60, "Stärke: "+ Str(Staerke), RGB(255, 255, 255), RGB(0, 0, 0))
    DrawText(13, 80, "Verteidigung: "+ Str(Verteidigung), RGB(255, 255, 255), RGB(0, 0, 0))
    DrawText(13, 100, "Geschwindigkeit: "+ Str(Geschwindigkeit), RGB(255, 255, 255), RGB(0, 0, 0))
    DrawText(13, 120, "Ausdauer: "+ Str(Ausdauer), RGB(255, 255, 255), RGB(0, 0, 0))
    DrawText(13, 140, "Glück: "+ Str(Glueck), RGB(255, 255, 255), RGB(0, 0, 0))
    StopDrawing()
    
  ExamineKeyboard()

    If KeyboardReleased(#PB_Key_A)
    StartDrawing(WindowOutput(0))
    DrawText(340, 300, "Schlag", RGB(255, 255, 255), RGB(0, 0, 0)) 
    DrawText(340, 320, Str(Schlag), RGB(255, 255, 255), RGB(0, 0, 0)) 
    StopDrawing()
   
    Zufall = Random(4)  
    Schlag - Staerke - RGlueck + Verteidigung
      If Ausdauer > 0
      Ausdauer - 1
        If Zufall = 1
        Staerke + Random(10)
        EndIf
        If Zufall = 2
        Verteidigung + Random(10)
        EndIf
        If Zufall = 3
        Geschwindigkeit + Random(10)
        EndIf
        If Zufall = 4
        Glueck + Random(10)
        EndIf
        EndIf
        If Ausdauer = 0 And Leben = 0
        Leben - 10
        EndIf
      RGlueck = Random(Glueck)
      Schlag + Staerke + RGlueck - Verteidigung 
      
      If Schlag < 0
      Schlag = 0
      EndIf
       
      If Leben > 0
      Leben - Schlag
      EndIf
      EndIf
    
      Event = WindowEvent()
      
      If Event = #PB_Event_CloseWindow
        End 
      EndIf
    
    If Leben = 0
    EndIf
    
    If Leben < 0
    Leben = 0
    EndIf
    

  ForEver

  Until Event = 0
  EndProcedure  
  
 For i = 0 To #Number_of_Rounds
 RenderGame(*Runden(i))
 Next i 
Hoffe ihr könnt mir helfen.

Verfasst: 25.02.2007 16:20
von Pandorra
^^
ich hatte noch eine Frage...

Verfasst: 25.02.2007 16:58
von PMV
was für ne Runde?
Was für koordinaten kann eine Runde haben?
Ich versteh überhaupt nicht den zusammenhang^^

Und deine Überschrift ist wieder nicht die beste :wink:

Um einem Array mehrere Werte zu zu weisen ist die For-Schleife zu
gebrauchen. ... mehr kann ich dir immoment auch nicht sagen.

MFG PMV

Verfasst: 25.02.2007 19:25
von Pandorra
So viel weiß ich.
(Überschriften sind nicht so mein Ding)
Mein 2D Spiel soll einmal Rundenbasierend sein oder echtzeit( zwei Moduse)
Bei Runden Basierend hat man momentan zwei Starteinheiten und man sagt was diese tun sollen. Dann wird dies Abgerechtnet. bsp.
Soldat,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Gegner
Hp : 100,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, HP: 100
Stärke : 20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, setzt....
...

setzt Schlag ein
100 Schaden

Soldat...................................Gegner
HP : 90.................................HP : 0





Sieger....
Exp...
Gewonnenes Gold
Verlierer...
Exp...



bsp. Ende

(Mein erstes Kampfsystem, weil ich erstmal klein anfangen will)

Verfasst: 25.02.2007 19:31
von PMV
und was ist da jetzt dein Problem?
(wenns geht andere Worte als wie im ersten Post :D )

Überschrift: beschreibe dort dein Problem mit wenigen Worten

MFG PMV

Verfasst: 25.02.2007 19:56
von C4rizz
Sry aber ich versteh das Problem leider auch net.
Beschreib doch bitte einmal wie das Spiel ablaufen soll, was man machen kann und an welcher Stelle exakt dein Problem liegt. :allright:

Verfasst: 25.02.2007 22:55
von THEEX
Das Problem von Pandorra ist einfach, daß er sich an Dingen ohne jeglisches Grundwissen versucht. Meine Empfehlung ist, arbeite am Besten mal die Tutorials von PB durch, bevor ein Game programieren willst.

Verfasst: 26.02.2007 17:59
von Pandorra
Ich hatte das Problem, dass ich eine Struktur machen wollte damit ich ein Bild an verschiedenen Koordinaten anzeigen kann, ohne diese manuell vorzuprogrammieren. Die neuen x, y Werte hatte er nicht übernommen( er hat das gleiche Bild immer wieder an einer Stelle angezeigt.

(In meinen oberen Post hab ich den Code ausversehen ohne den Structuren gepostet.)


Ich hatte nur vergessene, was PMV in seinem ersten Beitrag eingebaut hat reinzumachen. Ich hatte also keine For-Schleife.
Jetzt klappt alles.

Verfasst: 26.02.2007 18:09
von C4rizz
na denn is ja supi^^

Verfasst: 26.02.2007 18:58
von PMV
Pandorra hat geschrieben:So viel weiß ich.
:mrgreen: