Manchmal wirds angezeigt, manchmal nicht.
Übersicht

![]() |
M0rgensternBetreff: Manchmal wirds angezeigt, manchmal nicht. |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute.
Ich hab mich eben mal durchs Tut im Wikibook gearbeitet und habe jetzt ein Problem. Mein Pong Klon von da ist fast fertig, nur will ich alle 5 sekunden die geschwindigkeit erhöhen. Ich weiß aber nicht ob das funktioniert, da mir die Geschwindigkeit trotz Write nicht angezeigt wird. Oder ums so auszudrücken: Manchmal zeigt er sie an, manchmal nicht. Eben hat ers angezeigt, dann hab ich nur eine Sache verändert (Ein Kommentar hinzugefügt) und jetzt zeigt ers nicht mehr. Hier der Code: Code: [AUSKLAPPEN] ;-----------------------------*Grafik*------------------------------ Global xmax=1024,ymax=768 Graphics xmax,ymax,32,1 SetBuffer BackBuffer() Global frametimer = CreateTimer(60) SeedRnd MilliSecs() ;------------------------------------------------------------------- ;-----------------------------*Variablen*--------------------------- ;------#Bilder#----------- Global kugel=LoadImage("gfx\kugel.bmp");damit wird die Kugel in eine Variable geladen MidHandle kugel ;der Urspung wird auf den Mittelpunkt gelegt, das macht sich bei Berechnungen besser ;auf das Einstellen der Tranzparenzfarbe kann verzichtet werden, weil sie Standard mäßig schwarz ist. Global spieler1=LoadImage("gfx\pongspieler1.bmp");damit ist der Untere gemeint MidHandle spieler1;auch dieser bekommt seine Ursprung in die Mitte (s.Kugel) MaskImage spieler1,255,255,255;hier müssen wir die Tranzparenzfarbe angeben, weil sie vom Standard abweicht Global spieler2=LoadImage("gfx\pongspieler2.bmp");damit ist der Obere gemeint MidHandle spieler2;auch dieser bekommt seine Ursprung in die Mitte (s.Kugel) MaskImage spieler2,255,255,255;hier müssen wir die Tranzparenzfarbe angeben, weil sie vom Standard abweicht Global begrenzung=LoadImage("gfx\seitenwand.bmp");damit wird die Seitenwand geladen MaskImage begrenzung,255,255,255;hier müssen wir die Tranzparenzfarbe angeben, weil sie vom Standard abweicht ClsColor 119,136,170 ;damit wird der Hintergrund rot, du kanst sonst die Spieler und Seitenwände nicht sehen ;-------------------------- ;-------#Sounds#----------- Global Spielersound = LoadSound("sounds\soundfx9.wav") Global Wandsound = LoadSound("sounds\soundfx10.wav") Global Spielers Global Wands ;-------#Spieleretc#------- Global sec Global min Global sekunden Global Szeit$ Global SzeitNutz$ Global weg Global Countdown Global Fertig Global spielzeit Global restzeit Global xsp1=xmax/2;also in der Mitte Global xsp2=xmax/2 Global sp1st Global sp2st Global xkugel# Global ykugel# Global winkel Global geschwindigkeit#=5 ;wird mit Wert zugewiesen, weil man sie (noch) nicht ändern kann Global fehlersp1 Global fehlersp2 Global beweglichkeit# Global abweichung ;-------------------------- ;-------------------------------------------------------------------- resetkugel;Kugel an ihre Position setzen Counter(restzeit) ;--------------------------------*Hauptschleife*--------------------- Repeat WaitTimer (frametimer) beweglichkeit#=geschwindigkeit# For z2=0 To 1 If z2=1 Then x=xmax-50 Else x=0 For z=0 To ymax/50 DrawImage begrenzung,x,z*50 Next Next If KeyHit(14) Then resetkugel;wenn die Löschen Taste gedrückt wurde wird die Kugel zurück gesetzt Counter2() ;die Spielersteuerung If KeyHit(2) Then sp1st=sp1st+1;die Zahlentaste 1 If KeyHit(3) Then sp2st=sp2st+1;die Zahlentaste 2 If sp1st>2 Then sp1st=0 If sp2st>2 Then sp2st=0 ;die automatische Steuerung, wenn die Steuerungsvariable 0 ist: If xsp1>xkugel And sp1st=0 Then xsp1=xsp1-beweglichkeit# If xsp1<xkugel And sp1st=0 Then xsp1=xsp1+beweglichkeit# If xsp2>xkugel And sp2st=0 Then xsp2=xsp2-beweglichkeit# If xsp2<xkugel And sp2st=0 Then xsp2=xsp2+beweglichkeit# ;die Tastatursteuerung, wenn die Steuerungsvariable 1 ist: If KeyDown(203) And sp1st=1 Then xsp1=xsp1-beweglichkeit#;linke Pfeiltaste If KeyDown(205) And sp1st=1 Then xsp1=xsp1+beweglichkeit#;rechte Pfeiltaste If KeyDown(30) And sp2st=1 Then xsp2=xsp2-beweglichkeit#;A Taste If KeyDown(32) And sp2st=1 Then xsp2=xsp2+beweglichkeit#;D Taste ;die Maussteuerung, wenn die Steuerungsvariable 2 ist: If sp1st=2 Then xsp1=xsp1+MouseXSpeed() If sp2st=2 Then xsp2=xsp2+MouseXSpeed() ;die Überprüfung: If xsp1<70 Then xsp1=70 If xsp1>xmax-70 Then xsp1=xmax-70 If xsp2<70 Then xsp2=70 If xsp2>xmax-70 Then xsp2=xmax-70 If restzeit <= 0 Then Counter(restzeit) geschwindigkeit# = geschwindigkeit# + 0.1 EndIf ;die Kollisionsabfrage der Spieler If ImgsCollide(spieler1,xsp1,ymax-10,0,kugel,xkugel,ykugel,0,0) Then;wenn eine Kollision ist winkel=360-winkel ;prallt die Kugel ab abweichung=2*(xsp1-xkugel) ;damit kannst du die Richtung der Kugel steuern winkel=winkel+abweichung Spielers = PlaySound(Spielersound) EndIf If ImgsCollide(spieler2,xsp2,10,0,kugel,xkugel,ykugel,0,0) Then winkel=360-winkel abweichung=2*(xsp2-xkugel) winkel=winkel-abweichung Spielers = PlaySound(Spielersound) EndIf ;damit der Winkel nicht über den Bereich von 0-360 geht: If winkel>360 Then winkel=winkel-360 If winkel<0 Then winkel=winkel+360 ;Kollisionsabfrage Seitenwände If xkugel<60 Then winkel=180-winkel ;damit prallt die Kugel ab Wands = PlaySound(Wandsound) EndIf If xkugel>xmax-60 Then winkel=180-winkel Wands = PlaySound(Wandsound) EndIf ;wenn die Kugel durchgelassen wurde If ykugel<-10 Then ;oben fehlersp2=fehlersp2+1 ;der Obere bekommt einen Fehlerpunkt dazu resetkugel ;ein Funktionsaufruf EndIf If ykugel>ymax+10 Then ;unten fehlersp1=fehlersp1+1 ;der Untere bekommt einen Fehlerpunkt dazu resetkugel ;ein Funktionsaufruf EndIf ;das Berechnen der Kugelkoordinaten xkugel=xkugel+Cos(winkel)*geschwindigkeit# ykugel=ykugel-Sin(winkel)*geschwindigkeit# ;einige Informationen werden auf den Bildschirm gemalt Text 500,250,"Geschwindigkeit:" + geschwindigkeit# Text 500,300,"Spielstand: "+fehlersp2 + " : " + fehlersp1 ;damit du die Steuerungsart sehen kannst Text 55,ymax-25,"Spieler1" If sp1st>0 Then If sp1st=2 Then Text 120,ymax-25,"Maussteuerung" Else Text 120,ymax-25,"Tastatursteuerung" Else Text 120,ymax-25,"Computer" EndIf ;If spieler1man>0 Then Text 250,ymax-25,scorep1 Text 55,5,"Spieler2" If sp2st>0 Then If sp2st=2 Then Text 120,5,"Maussteuerung" Else Text 120,5,"Tastatursteuerung" EndIf Else Text 120,5,"Computer" EndIf Text 20, 50, restzeit/1000 DrawImage kugel,xkugel,ykugel DrawImage spieler1,xsp1,ymax-10 DrawImage spieler2,xsp2,10 Flip Cls Until KeyHit(1) End ;damit wird unser Programm beendet ;--------------------------------------------------------------------------- ;----------------------------*Funktionen*----------------------------------- ;-----------------#Kugelreset#-------------------- Function resetkugel() xkugel=xmax/2:ykugel=ymax/2 If Rand(0,1)=1 Then winkel=Rand(105,45) Else winkel=Rand(315,225);der Winkel wird durch Zufall ermittelt End Function ;------------------------------------------------- ;----------------#KollisionwegenGrafikkarte#------ Function ImgsCollide(image1,xpos1, ypos1, frame1, image2, xpos2, ypos2, frame2=0, mask=0) Local startx, starty, endx, endy, ix, iy Local width1 = ImageWidth(image1) Local height1 = ImageHeight(image1) Local width2 = ImageWidth(image2) Local height2 = ImageHeight(image2) xpos1 = xpos1 - ImageXHandle(image1) ypos1 = ypos1 - ImageYHandle(image1) xpos2 = xpos2 - ImageXHandle(image2) ypos2 = ypos2 - ImageYHandle(image2) startx = xpos2 - xpos1 starty = ypos2 - ypos1 start2x = startx start2y = starty endx = startx + width2 endy = starty + height2 If startx < 0 Then startx = 0 If starty < 0 Then starty = 0 If endx > width1 Then endx = width1 If endy > height1 Then endy = height1 endx = endx - 1 endy = endy - 1 If startx > endx Or starty > endy Then Return 0 LockBuffer ImageBuffer(image1, frame1) LockBuffer ImageBuffer(image2, frame2) For ix = startx To endx For iy = starty To endy If mask <> (ReadPixelFast(ix, iy, ImageBuffer(image1, frame1)) And $00FFFFFF) Then If mask <> (ReadPixelFast(ix-start2x, iy-start2y, ImageBuffer(image2, frame2)) And $00FFFFFF) Then UnlockBuffer ImageBuffer(image1, frame1) UnlockBuffer ImageBuffer(image2, frame2) Return 1 EndIf EndIf Next Next UnlockBuffer ImageBuffer(image1, frame1) UnlockBuffer ImageBuffer(image2, frame2) End Function ;--------------------------------------------------- ;-----------------------#Counter#------------------- Function Counter(restzeit) spielzeit = 5 ;SPielzeit kann hier iengegeben werden ;Man kann es aber auch abändern, damit man eine statische Zeit hat Szeit$ = spielzeit ;Die gewünschte Zeit in einen Stringe kopieren SzeitNutz$ = Right$(Szeit,1) ;Die letze Stelle der zahl nehmen weg = SzeitNutz$ ;letze Stelle al integer Speichern ;Hier wird der Countdown gestartet: Countdown = spielzeit *1000 Fertig = MilliSecs() + Countdown End Function ;----------------------#Counter2#------------------ Function Counter2() restzeit = Fertig - MilliSecs() sekunden = restzeit/1000 ;erst mal in Sekudnen umrechnen (Von Millisekunden) min = sekunden/60 ;In Minuten umrechnen sec = sekunden-(spielzeit-weg) ;Um die Sekunden zu bekommen muss man die gewünschte Spielzeit von der momentanen Countdownzeit abziehen ;Und die Einerstelle (für den fall dass es kein genaues vielfaches von 60 ist) Muss zuerst von der Spielzeit abgezogen werden If sec < 0 Then sec=sec+60 ;Wenn man durch die Rechnung unter 0 kommt dann einfach 60 dazurechnen If sec < 0 Then sec=sec+60 ;wenn man danach NOCHMAL unter 0 kommt dann einfach nochmal 60 dazurechnen End Function ;---------------------------------------------------- ;------------------------------------------------------------------------------------ Hoffe jemand weiß worans liegt. Und ja, ich weiß dass der großteil nicht mein Code ist, aber ich hab die Funktionsweise verstanden und will das Programm optimieren. Danke schonmal im Voraus, Lg, M0rgenstern. |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
In dem Code ist kein Write drin. Benutz Text![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
achja... Tut mir total Leid.
Ich meinte Text. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
In so einem Haufen Code sieht doch keiner durch, wenn du nicht die Zeilen irgendwie kenntlich machst, in denen du das Problem vermutest bzw. die mit dem Problem zu tun haben...
Ich kann jedenfalls auf Anhieb nichts besonderes erkennen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] ;einige Informationen werden auf den Bildschirm gemalt Text 500,250,"Geschwindigkeit:" + geschwindigkeit# Text 500,300,"Spielstand: "+fehlersp2 + " : " + fehlersp1 Tut mir leid, hast ja recht. Also, es ist wirklich so. Ich veränder manchmal was was gar nciths damit zu tun hat (z.B. Kommentar) und dann gehts einmal, wenn ich dann neu starte gehts wieder nicht mehr... Lg, M0rgenstern. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Geht nicht, gibt's nicht - Wird es nicht angezeigt oder wird etwas falsch angezeigt? Sofern der Text nicht auf gleichfarbigem Untergrund steht oder nachher übermalt wird, sollte ja etwas da stehen.
Und verwende Flip(0) um den Prozessor zu schonen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, wirklich.
Ich hab jetzt das Flip auf Flip(0) geändert und da gings. Dann hab ich aus gemacht und dann gings wieder nicht. Und nein der Untergrund ist auch nicht gleichfarbig... Alles andere wird angezeigt. |
||
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Setze mal alle Drawimages vor die Texts, dann könnte es funktionieren.
MfG |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Funktioniert auch nicht.
Ich hab weiter oben die Pausefunktion: Code: [AUSKLAPPEN] If KeyHit(25) Then ;Pause-Einschub Text 0,0, "Pause! 'P' drücken um fortzufahren!" Repeat: Until KeyHit(25) Or KeyDown(1) End If Da wird der Schriftzug auch nicht angezeigt, auch nicht wenn ich das so mache: Code: [AUSKLAPPEN] If KeyHit(25) Then ;Pause-Einschub cls Text 0,0, "Pause! 'P' drücken um fortzufahren!" Repeat: Until KeyHit(25) Or KeyDown(1) flip(0) End If Bzw um genauer zu sein: Das wird auch nru angezeigt wenn die Geschwindigkeit angezeigt wird.... Alles andere funktioniert prima. |
||
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mhm... sehr komisch.
Welche Version von B+/B3D hast du? Edit: Bei der Pause ist das Problem klar: Code: [AUSKLAPPEN] If KeyHit(25) Then ;Pause-Einschub
cls Text 0,0, "Pause! 'P' drücken um fortzufahren!" flip(0) Repeat: Until KeyHit(25) Or KeyDown(1) End If Edit2: Setze das Cls an den Anfang der Hauptschleife, vielleicht funktioniert das. |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, meine B3D Version ist v1.99.
Aber ich benutze Ideal, falls das was zur Sache tut. Danke, PauseFunktion klappt jetzt. Aber das andere... Ich verstehs einfach nicht. Gerade schon wieder: Ich habe die Pausefunktion geändert und siehe da: Auch die Geschwindigkeit wurde angezeigt. Dann hab ich beendet und neu gestartet und da wurde die Geschwindigkeit wieder nicht angezegit (Aber die pausenFunktion... DANKE!) Lg, M0rgenstern. Edit: Sitzt am anfang der Schleife... Funtzt nicht. |
||
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn du möchtest kannst du die Grafiken, etc. uploaden oder mir per E-Mail schicken, dann probier ich's bis es geht ![]() MfG |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Downloadlink
Bitteschön. Der Code ist drin und die Exe. Plus Bilder und Sound. LG, M0rgenstern. |
||
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sehr komisch, bei mir funktioniert alles einwandfrei. Sowohl unter Blitz 3D 1.99 als auch unter B+ 1.46.
MfG |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm.. Das is komisch.
Das Programm ist eh komisch. Jetzt hab ichs grade gestartet (ohne was zu ändern) und bekomme angezeigt "Sound does not exist" ich glaub ich vergrabs lieber irgendwo.... |
||
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das hatte ich auch, liegt aber daran, dass du die Sounds nirgends lädst, auf die du zugreifen möchtest.
MfG |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Türlich werden die geladen... Oben bei den Variablen. | ||
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab jetzt das Problem gefunden wegen dem Text.
Ich weiß auch nicht warum, aber man muss mit Color eine Farbe setzen dann wirds imemr angezeigt. Ich versteh zwar nicht warum einige Text Befehle angezeigt werden, andere wiederum nicht. |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wahrscheinlich steht irgendwo in deinem Code Color und das in irgend einem verschachteltem If. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group