Problem Bei endif

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Tankbuster

BeitragFr, Dez 15, 2006 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Du must das
"Drawimage player,...usw"
im code hinter das
"Drawimage sterne,....usw"
schreiben, sonst wird zuerst der spieler ge´zeichnet, und dann die sterne darüber =)
Twitter
Download Jewel Snake!
Windows|Android
 

Jerome

BeitragFr, Dez 15, 2006 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Es wird immer noch überschrieben

Code: [AUSKLAPPEN]
;test
AppTitle "Test Spiel"

;grafik modus einschalten
Graphics 640,480
SetBuffer BackBuffer()

Repeat
For sterne = 1 To 1000
x = Rnd (0,640)
y = Rnd (0,480)
Plot x,y
Next



;Grafiken Laden
player = LoadImage ("player.bmp")
enemy = LoadImage ("alien.bmp")
bullet = LoadImage ("bullet.bmp")


;spieler position
player_x = 320
player_y = 440
SetBuffer BackBuffer()
Repeat:Cls
If KeyDown (205) Then player_x = Player_x + 4
If KeyDown (203) Then player_x = Player_x-4
If player_x>604 Then player_x = 604
If player_x<0   Then player_x = 0


DrawImage player,player_x,player_y
Flip
A Programmer is just a tool which converts caffeine into code .

Tankbuster

BeitragFr, Dez 15, 2006 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso... ich würd den code en bisschen umformen^^
Irgendwie in der Art: (sonst is das so unübersichtlich^^)

Zitat:

Type star
Field x,y
end type
AppTitle "Test Spiel"

Graphics 640,480
SetBuffer BackBuffer()

player = LoadImage ("player.bmp")
enemy = LoadImage ("alien.bmp")
bullet = LoadImage ("bullet.bmp")
player_x = 320
player_y = 440

For i = 1 To 1000
For S.star = new star
S\x = Rnd (0,640)
S\y = Rnd (0,480)
Plot S\x,S\y
Next

while not keydown(1)
If KeyDown (205) Then player_x = Player_x + 4
If KeyDown (203) Then player_x = Player_x-4
If player_x>604 Then player_x = 604
If player_x<0 Then player_x = 0
Cls

for S.star=each star
Plot S\x,S\y
next



DrawImage player,player_x,player_y

flip
wend
[/quote]
Twitter
Download Jewel Snake!
Windows|Android
 

bruce85

BeitragFr, Dez 15, 2006 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
was soll das hier For S.star = new star bringen?
davor braucht man kein For zu schreiben, das is ja schon in der For schleife drin und wird somit 1000 mal ein neuer star erzeugt.

MfG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

ChaosCoder

BeitragSa, Dez 16, 2006 1:06
Antworten mit Zitat
Benutzer-Profile anzeigen
wow tankbuster, haste vllt gemerkt, dass Jerome ein neu Einsteiger in B2D bzw B3D is? Dann wird es ihm sicher nich viel bringen wenn du ihm hier etwas von Types auftischt wenn er noch nichteinmal Grundkenntnisse beherrscht Wink
Außerdem würde das die FPS in den Keller sinken lassen wenn jedesmal 1000 gleichaussehende sterne an die gleiche position gedrawt werden! spar dir die Types für besseres auf Rolling Eyes

@Jerome:
Also du musst im jedem schleifendurchgang (also in der Repeat-Until schleife) die sterne malen. Das kannst du wiederum auf verschiedene weisen realisieren. doch die beste ist, du erzeugst ein bild, auf dem die sterne schon drauf sind (also entweder erstellst du es im programm mit CreateImage selbst und malst die sterne wie du es im moment machst rauf und zeichnest das jede schleife oder du lädst einfach ein bild mit sternen mit LoadImage. Ich würde dir jetzt erstmal die CreateImage Variante empfehlen.

Du musst also erstmal ein Bild erstellen
Code: [AUSKLAPPEN]
sterne = createimage(640,480)

So, dann malst du da die Sterne rein:
Code: [AUSKLAPPEN]
setbuffer imagebuffer(sterne) ;damit du auf dem bild raufmalen kannst
lockbuffer imagebuffer(sterne)
For i = 1 To 1000
x = Rnd (0,640)
y = Rnd (0,480)
WritePixelFast x,y,$FFFFFF ; Plot ist sehr langsam und da wir grad eh auf nem Bild rummalen können wir mit
;WritePixelFast sehr viel bessere Performance bekommen!
Next
unlockbuffer imagebuffer(sterne)
setbuffer backbuffer() ; um wieder mit dem normalen Buffer zu arbeiten.

obiges machst du natürlich nur einmal und zwar irgendwo noch vor der schleife aber hinter dem createimage befehl da das bild ja vorhanden sein muss!
so und dann zeichnest du das bild einfach vor dem player in der schleife also:
Code: [AUSKLAPPEN]
DrawImage sterne,0,0
DrawImage player,player_x,player_y

und schon müssten deine probleme beseitigt sein!

Noch ein kleiner Tipp:
Rnd ist nicht wirklich zufällig. jedenfalls nicht alleine! er würde bei jedem programm start die gleiche sternenformation per "zufall" nehmen
das änderst du indem du einfach irgendwo oben (einmal nur also nich in einer schleife (bringt nämlich nix)) Code: [AUSKLAPPEN]
SeedRnd Millisecs()
schreibst. damit wird es immer zufall sein wie der sternen hintergrund aussieht!

MfG
ChAoS|DrAgOn
Projekte: Geolaria | aNemy
Webseite: chaosspace.de

Tankbuster

BeitragSa, Dez 16, 2006 1:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Dass ist ja ne "gecheatete" Antwort Rolling Eyes
PS:Mann könnte auch einfach mit [Loadimage"gfx\stars.bmp"] oder so die Sterne malen, und nur die x-pos ein bisschen mit rnd() verändern!^^ Und die FPS sinken bei mir nicht wirklich in den Keller, sondern ins Bodenlose Very Happy

@Bruce: "For S.star = new star" <-- da hab ich mich wohl verschrieben Laughing
Twitter
Download Jewel Snake!
Windows|Android

ChaosCoder

BeitragSa, Dez 16, 2006 1:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Löl Tankbuster, was is daran gecheatet? und das mit Loadimage hab ich übrigens geschrieben Wink
Zitat:
oder du lädst einfach ein bild mit sternen mit LoadImage.

und hast du ne ahnung wie das dann aussiehst wenn du nur mal so eben die x postion mit rnd veränderst? das möchtest du warscheinlich auch jeden schleifendurchgang machen, oda? Laughing

Naja, hoffe ich hab Jerome geholfen^^
Projekte: Geolaria | aNemy
Webseite: chaosspace.de
 

Jerome

BeitragSa, Dez 16, 2006 9:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja jetzt klappt es aber das programm läuft abgehackt
A Programmer is just a tool which converts caffeine into code .
 

Matthias

BeitragSa, Dez 16, 2006 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe dir mal ein Beispiel geproggt. Ohne Typers.
Es gibt bestimmt noch eine Menge Möglichkeiten das Beispiel zu Optiemieren, aber das würde dan zu schwer zu verstehen sein.
Hoffe du kannst damit was Anfangen.


Code: [AUSKLAPPEN]

AppTitle "Test Spiel"
FensX=800:FensY=600
Graphics FensX,FensY,32,2
Dim BulletX#(500),BulletY#(500),AlienX#(500),AlienY#(500)


;Grafiken Laden
player = LoadImage ("player.bmp")
alien = LoadImage ("alien.bmp")
bullet = LoadImage ("bullet.bmp")
MidHandle player:MidHandle bullet:MidHandle alien



;"Sterne erzeugen-------------------------------------------"
Sterne=CreateImage(FensX,FensY):SetBuffer ImageBuffer(Sterne)
LockBuffer:For i = 1 To 1000
WritePixelFast Rnd(FensX),Rnd(FensY),$FFFFFF
Next:UnlockBuffer


;spieler position
player_x = 320:player_y = 440:Level=1
SetBuffer BackBuffer()








;"*************************Hauptschleife***********************"
Repeat:Cls
;----------Level Berechnung--------------------"

Level=Punkte/100
AlienPause=6000-Level*100



;------------Steuerung----------------------------"
If KeyDown (205) And player_x<FensX-20 Then player_x = Player_x + 4
If KeyDown (203) And player_x>20 Then player_x = Player_x-4
If KeyDown (200) And player_y>FensY-200 Then player_y = Player_y - 4
If KeyDown (208) And player_y<FensY-20 Then player_y = Player_y+4

;"Schießen=LeerTaste
If KeyDown(57) And SchussPause<0 Then
     i=0:Repeat:i=i+1:Until BulletY#(i)<1;"<Suche FreinPlatz"
     BulletX#(i)=player_x:BulletY#(i)=player_y-23
     SchussPause=15
End If


;"--------------Neuer Alien--------------------"
If MilliSecs()>Timer+AlienPause Then
    i=0:Repeat:i=i+1:Until AlienY#(i)<1:;"<Suche FreinPlatz"
    AlienY#(i)=1:AlienX#(i)=Rnd(20,FensX-20)
    Timer=MilliSecs()
End If


;"-----------Sterne Rollen/Anzeigen
SchussPause=SchussPause-1
SternRoll#=SternRoll#+.5
TileBlock Sterne,0,SternRoll#



For i=0 To 499:
;--------------Schuß/Alien Collision----------"
    If AlienY#(i)>0 Then
       X1#=AlienX#(i):Y1#=AlienY#(i)   
       For ii=0 To 499
       X2#=BulletX#(ii):Y2#=BulletY#(ii)
         If Y2>0 Then
           If ImagesCollide(alien,X1#,Y1#,0,Bullet,X2#,Y2#,0) Then
               alienY(i)=0:BulletY(ii)=0:Punkte=Punkte+1;">>Treffer"
           End If
         End If
      Next
;-----------------Alien Bewegung/Anzeigen-----------------"
     AlienY#(i)=AlienY#(i)+1
     If AlienY#(i)>FensY+20 Then AlienY#(i)=0:Punkte=Punkte-10
     DrawImage Alien,AlienX#(i),AlienY#(i)
     AliZaler=AliZaler+1
   End If

;-----------------Schuß Bewegung/Anzeigen----------------"
   If BulletY#(i)>0 Then
      BulletY#(i)=BulletY(i)-1
      DrawImage bullet,BulletX#(i),BulletY#(i)
      BulZaler=BulZaler+1
   End If
Next



;----------Punkte Level Spieler -Anzeige------------------"
DrawImage player,player_x,player_y
Color 100,100,100:Rect 0,0,FensX,20
Color 255,255,0:Text 10,5,"Punkte: "+Punkte+" Level:"+Level
Text 300,5,"Aliens: "+AliZaler+" Schüße:"+BulZaler
AliZaler=0:BulZaler=0

Flip
Until KeyDown(1):End

ChaosCoder

BeitragSa, Dez 16, 2006 13:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Jerome hat Folgendes geschrieben:
Ja jetzt klappt es aber das programm läuft abgehackt

Abgehackt?
Zeig mal bitte den Code, normalerweise dürfte er nich abgehackt laufen wenn du das gemacht hast was ich dir empfohlen habe...

Außerdem, ich weiß nich ob es dir schon empfohlen wurde, aber geh mal auf www.robsite.de , da gibts echt gute Tutorials, die für Einsteiger echt super sind!!!

@Matthias:
Ich denke nicht, dass er dabei sonderlich was lernt wenn du ihm einfach einen Code vor die Augen klatscht! Arrays hatte er wohl auch noch nicht. dasollte er wohl erstmal die Grundstrukturen kennen lernen! Wink
Projekte: Geolaria | aNemy
Webseite: chaosspace.de

Tankbuster

BeitragSa, Dez 16, 2006 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Ja jetzt klappt es aber das programm läuft abgehackt

vieleicht hast du das "SetBuffer Backbuffer" vergessen =)
Twitter
Download Jewel Snake!
Windows|Android
 

Jerome

BeitragSa, Dez 16, 2006 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich versuche jetzt nochmal alles und melde mic dann
A Programmer is just a tool which converts caffeine into code .

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group