Sternenhintergrund

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Hektor II

Betreff: Sternenhintergrund

BeitragFr, Jun 30, 2006 12:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Tag auch,
ich habe jetzt probiert, meinem Space - Shooter einen vorbeiziehenden Sternenhintergrund zu verpassen. Doch leider habe ich das Problem, dass nur ein Viertel eines Sternenbildschirms vorbeizieht. Hier der Teil des Codes:

Code: [AUSKLAPPEN]
Global sterne_x1=1
Global sterne_y1=1
Global sterne_x2=1
Global sterne_y2=-480
Global sternespeed=4

Global sterne=LoadImage("stars.bmp")

Function stars()

If sterne_y1 > 480 Then
sterne_y1=-480
EndIf

sterne_y1=sterne_y1+sternespeed

If sterne_y2 > 480 Then
sterne_y2 = -480
EndIf

sterne_y2=sterne_y2+sternespeed

End Function

Function Draw()
DrawImage sterne, sterne_x1, sterne_y1
DrawImage sterne, sterne_x2, sterne_y2
DrawImage player, player_x, player_y
DrawImage enemy, enemy_x, enemy_y, anim
If bullet_fired Then
DrawImage bullet, bullet_x, bullet_y
EndIf

End Function



Für bessere Verständnis hier noch einmal der ganze Code, inkl. Gfx zum Starten:

http://files.filefront.com/Tes...einfo.html


Was mache ich falsch?

Blitzcoder

Newsposter

BeitragFr, Jun 30, 2006 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutze Tileimage. Damit sollte es gehen.

Also statt Drawimage sterne,x,y machst du tileimage sterne,0,tmp wobei du die variable tmp in jeder schleife um 1 erhöhst.

Hier der ganze Code: Code: [AUSKLAPPEN]
;---------------------------------------------
;Variablen


Global tmp
Global player_x=310
Global player_y=450
Global player_speed# = 3.5 ; Geschwindigkeit des Raumschiffs, standart:3.5

Global enemy_x=0
Global enemy_y=20
Global anim=0
Global counter=0
Global mog=1
Global timer=0

Global bullet_fired=False
Global bullet_x=0
Global bullet_y=0

Global score=0


;Sterne
;---------------------------------------------
Global sterne_x1=1
Global sterne_y1=1
Global sterne_x2=1
Global sterne_y2=-480
Global sternespeed=4



;---------------------------------------------
;Grafik

Graphics 640, 480, 32, 2
SetBuffer BackBuffer()



Global player=LoadImage("spaceship2.bmp")
Global enemy=LoadAnimImage("alien.bmp", 49, 34, 0, 2)
Global bullet=LoadImage("bullet.bmp")
Global sterne=LoadImage("stars.bmp")


;---------------------------------------------
;Hauptschleife



Repeat
Cls

Text 320, 0,  "Punkte: " + score

Animation


Check_Bullet

stars

Draw

Move_Player
Move_Enemy

If timer<100 Then

gratz

EndIf


Flip
Until KeyHit(1)
End






;---------------------------------------------
;Funktionen

Function Move_player()

If KeyDown(203) Then
player_x=player_x-player_speed
EndIf


If KeyDown(205) Then
player_x=player_x+player_speed
EndIf


If player_x < 0 Then
player_x = 0
EndIf


If player_x > 605 Then
player_x = 605
EndIf

End Function


;---------------------------------------------


Function Move_Enemy()

Enemy_x=Enemy_x+mog



If enemy_x > 590 Or enemy_x<0 Then

mog=-mog

EndIf

End Function


;---------------------------------------------


Function Check_Bullet()

If KeyHit(57) Then
bullet_x=player_x+8
bullet_y=player_y-10
bullet_fired=True
EndIf

If bullet_fired
bullet_y=bullet_y-4

If bullet_y>0 Then
If ImagesCollide(bullet, bullet_x, bullet_y, 0, enemy, enemy_x, enemy_y, anim) And mog >0 Then
mog=mog+0.5
score=score+100
enemy_x=0


bullet_fired = False

ElseIf ImagesCollide(bullet, bullet_x, bullet_y, 0, enemy, enemy_x, enemy_y, anim) And mog < 0 Then
mog=mog-0.5
score=score+100
enemy_x=0
bullet_fired=False
EndIf
ElseIf bullet_y<0 Then
score=score-50
bullet_fired=False

EndIf
EndIf

End Function


;---------------------------------------------

Function gratz()

If score=500 Then
Text 310, 40,  "Glückwunsch, du hast 500 Punkte erreicht!"
timer=timer+1
EndIf


If score=1000 Then
Text 310, 40, "Glückwunsch, du hast 1000 Punkte erreicht!"
timer=timer+1
EndIf

End Function

;---------------------------------------------


Function Animation()

If anim=0 Then
counter=counter+1
ElseIf anim=1 Then
counter=counter+1
EndIf

If counter=20 Then

If anim=0 Then
anim=1
ElseIf anim=1 Then
anim=0
EndIf

counter=0
EndIf

End Function

;---------------------------------------------

Function Draw()
;DrawImage sterne, sterne_x1, sterne_y1
;DrawImage sterne, sterne_x2, sterne_y2
tmp=tmp+1
TileImage sterne,0,tmp
DrawImage player, player_x, player_y
DrawImage enemy, enemy_x, enemy_y, anim
If bullet_fired Then
DrawImage bullet, bullet_x, bullet_y
EndIf

End Function

;---------------------------------------------

Function stars()

If sterne_y1 > 480 Then
sterne_y1=-480
sterne_y1=sterne_y1+sternespeed
EndIf



If sterne_y2 > 480 Then
sterne_y2 = -480
EndIf

sterne_y2=sterne_y2+sternespeed

End Function


Der Name tmp für die Variable ist natürlich schlecht. Den musst du halt noch anpassen, wie er dir gefällt Wink

MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
 

Hektor II

BeitragFr, Jun 30, 2006 12:16
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, danke für die schnelle Antwort. Smile
Aber soll ich wie du, Tileimage und davor trotzdem noch die beiden Drawimage oder dann nur Tileimage, 0, tmp?

Ok danke ich seh´s schon... Also ist der ganze Code mit sterne_x1 usw. umsonst gewesen? ^^

Blitzcoder

Newsposter

BeitragFr, Jun 30, 2006 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Ok danke ich seh´s schon... Also ist der ganze Code mit sterne_x1 usw. umsonst gewesen? ^^


Ja Very Happy
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

Christoph

BeitragFr, Jun 30, 2006 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Ich finde den download nicht. Confused
2. Habe den Text nur überflogen. Postet zurück wenn ich etwas falsch interpretiert habe.
3.Verbesserung:
Code: [AUSKLAPPEN]
Global player_speed# = 3.5 ; Geschwindigkeit des Raumschiffs, standart:3.5

Code: [AUSKLAPPEN]
If KeyDown(203) Then
player_x=player_x-player_speed
elseif KeyDown(205) Then
player_x=player_x+player_speed
EndIf

Code: [AUSKLAPPEN]
tmp=tmp+1
TileImage sterne,0,tmp

So wie's aussieht kann man beschleinigen und bremsen. Vielleicht könnte man
den Sternenbackground schneller/langsamer bewegen lassen, je nach dem, wie schnell man fliegt.
Code: [AUSKLAPPEN]
tmp#=tmp#+player_speed/5.0
if tmp#>imageheight(sterne) then tmp#=tmp#-imageheight(sterne)
TileImage sterne,0,tmp#

Hab noch ne kleine Sicherung eingebaut. Nicht das da irgendso nen Fanatiker stundenlang spielt und tmp# irgendwann über 2,.... Mrd. kommt!!!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group