Problem Bei endif
Übersicht![](/themes/Standard/arrow.png)
![](/themes/Standard/arrow.png)
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
Twitter
Download Jewel Snake! Windows|Android |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 ![]() @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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dass ist ja ne "gecheatete" Antwort ![]() 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 ![]() @Bruce: "For S.star = new star" <-- da hab ich mich wohl verschrieben ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
ChaosCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Löl Tankbuster, was is daran gecheatet? und das mit Loadimage hab ich übrigens geschrieben ![]() 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? ![]() Naja, hoffe ich hab Jerome geholfen^^ |
||
Projekte: Geolaria | aNemy
Webseite: chaosspace.de |
Jerome |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja jetzt klappt es aber das programm läuft abgehackt | ||
A Programmer is just a tool which converts caffeine into code . |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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! ![]() |
||
Projekte: Geolaria | aNemy
Webseite: chaosspace.de |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich versuche jetzt nochmal alles und melde mic dann | ||
A Programmer is just a tool which converts caffeine into code . |
Übersicht
![](/themes/Standard/arrow.png)
![](/themes/Standard/arrow.png)
Powered by phpBB © 2001 - 2006, phpBB Group