Spiel

Anfängerfragen zum Programmieren mit PureBasic.
Svking
Beiträge: 48
Registriert: 23.09.2005 15:19
Kontaktdaten:

Spiel

Beitrag von Svking »

Hi, ich habe angefangen ein kleines Spiel zu schreiben :)

Nur leider habe ich ein kleines Problem. Es Startet sich nur ein Schwarzer Bildschirm und sonst nichts :(. kann mir da please einer helfen?

Es soll sich ein Balken (player.bmp) nach links und rechts bewegen und herunterfallendes Eis Aufsammeln.

Hier mein code:

Code: Alles auswählen

InitSprite() 
InitKeyboard() 
OpenScreen(800,600,32,"eating Sv") 

LoadSprite(0,"data\pics\background.bmp")
LoadSprite(1,"data\pics\player.bmp")
LoadSprite(2,"data\pics\icecream.bmp")

player_x = 363

ice_x = 0 
ice_y = 0

If ice_y > 600 
   ice_y = 0 
   ice_x = Random(640-20) 
EndIf 
 Repeat 
 ice_y - 3
 ForEver
    Repeat 

    ExamineKeyboard() 
    ClearScreen(0,0,0) 

If KeyboardPushed(#PB_Key_Left)
player_x - 5
 If player_x < 0
  player_x = 0
  EndIf
  EndIf
  
  If KeyboardPushed(#PB_Key_Right)
player_x + 5
 If player_x > 700
  player_x = 700
  EndIf
  EndIf

DisplaySprite(0,0,0)
DisplayTransparentSprite(1,player_x,559)
DisplayTransparentSprite(2,ice_x,ice_y)


    FlipBuffers() 

Until KeyboardPushed(#PB_Key_Escape)
Das Ende meines Lebens:
If leben = 0
End
Endif
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Hier

Code: Alles auswählen

Repeat
 ice_y - 3
 ForEver 
Hängt sich dein Programm auf, für immer.
Svking
Beiträge: 48
Registriert: 23.09.2005 15:19
Kontaktdaten:

Beitrag von Svking »

ah danke x) aber wie mach ich das dann , dass das bitmap immer nach unten fällt?
Das Ende meines Lebens:
If leben = 0
End
Endif
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Code: Alles auswählen

InitSprite()
InitKeyboard()
OpenScreen(800,600,32,"eating Sv")

LoadSprite(0,"data\pics\background.bmp")
LoadSprite(1,"data\pics\player.bmp")
LoadSprite(2,"data\pics\icecream.bmp") 

player_x = 363

ice_x = 0
ice_y = 0
 
    Repeat
     ice_y + 3
If ice_y > 600
   ice_y = 0
   ice_x = Random(640-20)
EndIf
    ExamineKeyboard()
    ClearScreen(0,0,0)

If KeyboardPushed(#PB_Key_Left)
player_x - 5
 If player_x < 0
  player_x = 0
  EndIf
  EndIf
 
  If KeyboardPushed(#PB_Key_Right)
player_x + 5
 If player_x > 700
  player_x = 700
  EndIf
  EndIf

DisplaySprite(0,0,0)
DisplayTransparentSprite(1,player_x,559)
DisplayTransparentSprite(2,ice_x,ice_y)


    FlipBuffers()

Until KeyboardPushed(#PB_Key_Escape)
Svking
Beiträge: 48
Registriert: 23.09.2005 15:19
Kontaktdaten:

Beitrag von Svking »

das stürzt bei mir auch ab ^^ :(

Edit: Ah ne hatte was falsch eingegeben funzt perfekt :) big THX


Eine Frage hätt ich aber noch^^:

ich habe den code jetzt so:

Code: Alles auswählen

InitSprite() 
InitKeyboard() 
InitMovie()
OpenScreen(800,600,32,"eating Sv") 

LoadSprite(1,"data\pics\player.bmp") 
LoadSprite(2,"data\pics\icecream.bmp") 
LoadSprite(3,"data\pics\bread.bmp") 

LoadMovie(1,"data\1.wav")
player_x = 363 

ice_x = 0 
ice_y = 0 

bonusA = 0
bonus_x = 0
bonus_y = 0
punkte = 0
speed = 3


    Repeat 
     ice_y + speed 
If ice_y > 600 
   ice_y = 0 
   ice_x = Random(770-20) 
EndIf 
    ExamineKeyboard() 
    ClearScreen(0,0,0) 

    StartDrawing(ScreenOutput())    
    DrawText("punkte")    
    StopDrawing()
    
    If Punkte = 100
    speed = 5
    EndIf
    
     If Punkte = 300
    speed = 7
    EndIf
    
    If Punkte = 600
    speed = 9
    EndIf
    
 If SpriteCollision(1,player_x,559,2,ice_x,ice_y) = 1   
punkte + 10
PlayMovie(1,0)
ice_y = 0 
ice_x = Random(640-20) 
EndIf

If KeyboardPushed(#PB_Key_Left) 
player_x - 5 
 If player_x < 0 
  player_x = 0 
  EndIf 
  EndIf 
  
  If KeyboardPushed(#PB_Key_Right) 
player_x + 5 
 If player_x > 700 
  player_x = 700 
  EndIf 
  EndIf 

If KeyboardPushed(#PB_Key_P)
MessageRequester("Punkte",punkte$,0)
 EndIf
DisplayTransparentSprite(1,player_x,559) 
DisplayTransparentSprite(2,ice_x,ice_y) 


    FlipBuffers() 

Until KeyboardPushed(#PB_Key_Escape) 
Wie bekomme ich jetzt bei dieser Stelle:

Code: Alles auswählen

    StartDrawing(ScreenOutput())    
    DrawText("punkte")    
    StopDrawing()
da wo jetzt punkte steht die Anzahl der Punkte hin? also, dass dann oben links am Bildschirmrand die Punkte stehen.

Die Punkte werden ja schon gezählt oben

punkte = 0
Das Ende meines Lebens:
If leben = 0
End
Endif
Benutzeravatar
coder
Beiträge: 204
Registriert: 25.09.2005 17:53
Computerausstattung: Intel Core2Quad Q8200 @ 2.33GHz
ASUS P5Q3, 2GB DDR3-1066 RAM, ATi Raedeon HD 4850
Wohnort: Deutschland
Kontaktdaten:

Beitrag von coder »

Probiers mal mit:

Code: Alles auswählen

StartDrawing(ScreenOutput())
  DrawingFont(FontID())  
  Locate(600-TextLength("Punkte: "+Str(punkte)), 10)
  DrawText("Punkte: "+Str(punkte))
StopDrawing()
Bei PB 3.94 müsste das klappen.
Windows 7 x64 | PureBasic 4.60 4.50 4.02
Ja verdammt, meine Eltern wohnen immer noch bei mir!
Svking
Beiträge: 48
Registriert: 23.09.2005 15:19
Kontaktdaten:

Beitrag von Svking »

hm bei mir sagt er: There is no current Font.
bei der Zeile DrawingFont(Font ID())

Aber wenn ich die Zeile wegnehme gehts, thx :)
Das Ende meines Lebens:
If leben = 0
End
Endif
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag von Marvin »

> There is no current font
Ein bisschen Englisch hilft weiter, du hast doch gar keine Font geladen, welche soll dann auch zum Zeichnen benutzt werden... :wink:
Svking
Beiträge: 48
Registriert: 23.09.2005 15:19
Kontaktdaten:

Beitrag von Svking »

hm also bis jetzt ises nen ganz cooles game x)
weis nur nich, wie ich die punkte in nen MessageRequester bekomme.

Ich habs so probiert:

Code: Alles auswählen

MessageRequester("Punkte: "+Str(punkte)) 
will aber nich.
Wie geht das den?


Sv
Das Ende meines Lebens:
If leben = 0
End
Endif
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Fast richtig, du hast nur die Überschrift angegeben

Code: Alles auswählen

MessageRequester("Punkte","Punkte: "+Str(punkte))
Antworten