Seite 2 von 4

Verfasst: 26.04.2008 12:42
von STARGÅTE
>wie kann ich die geschwindigkeit von homer ändern?
indem du mehr addierst/subtrahierst wenn du eine Taste drückst
SchlaegerX + 1

>wie mach ich nen punkte-zähler?
Du erstellst eine Vartiable (Punkte) die dann bei jedem Treffer um 10 oder so erhört wird.
Der treffer ist hier:

Code: Alles auswählen

If Abs(Burger()\x-SchlaegerX) < 60 And Abs(Burger()\y-SchlaegerY) < 60 
  DeleteElement(Burger()) 
  Punkte + 10 ; hier könnte das stehen
  Continue 
 EndIf
>wie kann ich in den 32-Farben modus wechseln?einfach hier oben einstellen:
OpenScreen(640,480,DA >> 16 <<DA ,"Beispiel 7_1")
OpenScreen(640,480,32,"Beispiel 7_1")


mfg
frogsoup[/quote]

Verfasst: 26.04.2008 12:49
von frogsoup
hmm.also die farbe, geschwindigkeit hab ich hinbekommen.



mit dem zähler klappts nicht wirklich,... hab die Variable hingesetzt aber macht nen error, kannste mir das in meinen code einsetzen pls?

Code: Alles auswählen

InitSprite()
InitKeyboard()
OpenScreen(640,480,32,"Beispiel 7_1")

Global SchlaegerX.w
Global SchlaegerY.w
Global BewegX.w
Global BewegY.w
Global Bild1X.w
Global Bild1Y.w
Global Bild2X.w
Global Bild2Y.w
Global Burger.w
Global Punkte.w


Structure Burger
 x.l
 y.l
EndStructure
Global NewList Burger.Burger()


BewegX = - 1
BewegY = - 1
SchlaegerX = 639 - 500
SchlaegerY = 330
Bild1Y = 0
Bild1X = 0
Bild2X = 0
Bild2Y = 0

LoadSprite(2,"burger.bmp",1)
TransparentSpriteColor(2,RGB(255,0,0))


LoadSprite(1,"Maces2.bmp",1)
TransparentSpriteColor(1,RGB(255,0,0))

LoadSprite(0,"homer_sabber2.bmp",0)
TransparentSpriteColor(0,RGB(255,255,255))



Repeat


ClearScreen(0)

DisplaySprite(1,testX,testY)
DisplaySprite(0,SchlaegerX,SchlaegerY)


ExamineKeyboard()
If KeyboardPushed(#PB_Key_Right)
If SchlaegerX < 640-120
 SchlaegerX + 7
EndIf
EndIf
If KeyboardPushed(#PB_Key_Left)

If SchlaegerX > 0
SchlaegerX - 7
EndIf
EndIf

If SchlaegerY < 60
 SchlaegerY = 20
ElseIf SchlaegerY > 460 - 30
 SchlaegerY = 460 - 30
EndIf

If KeyboardPushed(#PB_Key_A)
 testX + 1
EndIf
If KeyboardPushed(#PB_Key_S)
 testX - 1
EndIf

If testY < 60
 testY = 20
ElseIf testY > 460 - 30
 testY = 460 - 30
EndIf



Pause + 1
If Pause > 150
 Pause = 0
 AddElement(Burger())
 Burger()\x = testX+Random(600)
 Burger()\y = testY
EndIf


ForEach Burger()
 Burger()\y + 1
 If Abs(Burger()\x-SchlaegerX) < 60 And Abs(Burger()\y-SchlaegerY) < 60
  DeleteElement(Burger())
  Continue
 EndIf
 If Burger()\y > 480 ; Aus dem Bildschirm
  DeleteElement(Burger())
 EndIf
 DisplayTransparentSprite(2,Burger()\x,Burger()\y)
Next

FlipBuffers()

ExamineKeyboard()

Until KeyboardPushed(1)

vielen dank

Verfasst: 26.04.2008 13:03
von STARGÅTE
also du änderst mal den Abschnitt:

Code: Alles auswählen

ForEach Burger() 
 Burger()\y + 1 
 If Abs(Burger()\x-SchlaegerX) < 60 And Abs(Burger()\y-SchlaegerY) < 60 
  DeleteElement(Burger())
  MeinePunkte + 10
  Continue 
 EndIf 
 If Burger()\y > 480 ; Aus dem Bildschirm 
  DeleteElement(Burger()) 
 EndIf 
 DisplayTransparentSprite(2,Burger()\x,Burger()\y) 
Next 
und vor dem FlipBuffers()
kommt die Anzeige:

Code: Alles auswählen

StartDrawing(ScreenOutput())
 DrawText(0,0,Str(MeinePunkte),RGB(255,255,255), RGB(0,0,0))
StopDrawing()

Verfasst: 26.04.2008 13:14
von frogsoup
oki-doki. scheint alles zu funktionieren!

VIELEN DANK, sagmal falls ich nachher noch ne frage hab, kann ich dich i-wie erreichen?

Verfasst: 26.04.2008 13:15
von STARGÅTE
ne sry ^^

klar:
ICQ: 268767877
email: hmmpgutt@aol.com

Verfasst: 26.04.2008 13:48
von frogsoup
da du mir in icq nicht schreibst, meld ich mich ncohmal hier ^^

also geht soweit alles, nur würde gerne einstellen, dass der punkte abzieht, wenn der unten neben dem homer landet, also aus dem bildschirm geht. wie mach ich das?

Verfasst: 26.04.2008 14:01
von tobe
hi,

mir ist noch aufgefallen das der code abstürzt wenn ein burger unten aus dem bild fällt.
um das zu verhindern muss das DisplayTransparentSprite vor dem löschen des burgers ausgeführt werden, sonst folgt ein zugriff auf ein gelöschtes listenelement.

um punkte abzuziehen musst du nur beim burger aus dem bildschirm die punkte abziehen.

Code: Alles auswählen

ForEach Burger()
    Burger()\y + 1
    DisplayTransparentSprite(2,Burger()\x,Burger()\y)
    If Abs(Burger()\x-SchlaegerX) < 60 And Abs(Burger()\y-SchlaegerY) < 60
      DeleteElement(Burger())
      MeinePunkte + 10
    EndIf
    If Burger()\y > 480 ; Aus dem Bildschirm
      DeleteElement(Burger())
      MeinePunkte - 10
    EndIf
  Next
mfG
tobe

Verfasst: 26.04.2008 14:05
von frogsoup
das mit dem aus dem bildschirm fallen und crashen hab ich schon behoben, danke. aber das mit den -10 punkte wenn der bei x >640 ist klappt nicht wirklich. auch dein versuch stürzt ab :/

Verfasst: 26.04.2008 14:07
von STARGÅTE

Code: Alles auswählen

Burger()\y + 1 
    DisplayTransparentSprite(2,Burger()\x,Burger()\y) 
    If Abs(Burger()\x-SchlaegerX) < 60 And Abs(Burger()\y-SchlaegerY) < 60 
      DeleteElement(Burger()) 
      MeinePunkte + 10
    ElseIf Burger()\y > 480 ; Aus dem Bildschirm 
      DeleteElement(Burger()) 
      MeinePunkte - 10 
    EndIf
mach so, und sry das ich nicht bei ICQ schreibe ich bin am zocken ^^ und schreibe hier nur auf dem Lappi


Das problem war, das du etwas gelöscht hast, aber danach noch n abfrage gestellt hast.

Verfasst: 26.04.2008 14:11
von frogsoup
Super... Ich brauch jetzt nur noch sone art menü oder titel... kann man da schnell, i-was einfaches erstellen? weil ich dieses programm nicht wirklich bedienen kann aber muss =P