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