Einfallwinkel = Ausfallwinkel Problem
Übersicht

BlitzBasic303Betreff: Einfallwinkel = Ausfallwinkel Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Das Eigentliche berechnen funktioniert. Bitte sagt nichts gegen den Code weil er ziemlich wüst ist. Code: [AUSKLAPPEN] Global x# = 50.0, y# = 500.0 Global angle# = 0 Global speed# = 0 hauptmenu() Function hauptmenu() Graphics 800,600,32,1 While Not KeyHit(1) If KeyHit(79) Then levela() If KeyHit(80) Then levelb() If KeyHit(81) Then levelc() Text 200,300,"Minigolf" Text 200,350,"Drücke 1,2 oder 3 um eine Bahn zu wählen" Flip Wend End End Function Function levela() angle# = 0 speed# = 0 Graphics 800,600,32,1 boden = LoadImage("Gras.bmp") mauerlinks = LoadImage("Mauer.bmp") ScaleImage mauerlinks,1,8 mauerrechts = LoadImage("Mauer.bmp") ScaleImage mauerrechts,1,8 maueroben = LoadImage("Mauer.bmp") ScaleImage maueroben,1,13 RotateImage maueroben,90 mauerunten = LoadImage("Mauer.bmp") ScaleImage mauerunten,1,13 RotateImage mauerunten,90 xziel = 50 yziel = 50 x# = 200 y# = 550 mauere = LoadImage("Mauer.bmp") ScaleImage mauere,1,8 RotateImage mauere,-90 mauerz = LoadImage("Mauer.bmp") ScaleImage mauerz,1,8 RotateImage mauerz,-90 mauerd = LoadImage("Mauer.bmp") ScaleImage mauerd,1,8 RotateImage mauerd,-90 ball = LoadImage("ball.bmp") ballz = LoadImage("ballz.bmp") loch = LoadImage("Loch.bmp") fahne = LoadImage("Fahne.bmp") SeedRnd(MilliSecs()) wl = Rnd(1,3) If wl = 1 Then loopa = LoadSound("loopa.mp3") LoopSound loopa PlaySound loopa End If If wl = 2 Then loopb = LoadSound("loopb.mp3") LoopSound loopb PlaySound loopb End If If wl = 3 Then loopc = LoadSound("loopc.mp3") LoopSound loopc PlaySound loopc End If ms = LoadSound("Wand.wav") drin = LoadSound("drin.wav") SetBuffer BackBuffer() While Not KeyHit(1) DrawImage boden,0,0 DrawImage mauerlinks,0,0 DrawImage mauerrechts,787,0 DrawImage mauerunten,800,587 DrawImage maueroben,800,0 DrawImage mauere,0,150 DrawImage mauerd,0,450 DrawImage mauerz,200,300 x# = x# + Cos( angle# ) * speed# y# = y# + Sin( angle# ) * speed# speed# = speed# - 0.02 If speed# < 0 Then speed# = 0 If speed# > 8 Then speed# = 8 If speed# = 0 Then xz# = x#+Cos(angle#)*50 yz# = y#+Sin(angle#)*50 DrawImage ballz,xz#,yz# If KeyDown(57) Then tmp_speed#=tmp_speed#+0.2 If tmp_speed# > 8 Then tmp_speed# = 8 If (Not KeyDown(57)) And (tmp_speed#>0) Then speed#=tmp_speed# tmp_speed#=0 EndIf End if If ImagesCollide(ball,x,y,0,maueroben,800,587,0) Or ImagesCollide(ball,x,y,0,mauerunten,800,0,0) Then angle# = 360 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauere,0,150,0) Then angle# = 360 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauerz,200,300,0) Then angle# = 360 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauerd,0,450,0) Then angle# = 360 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,loch,xziel,yziel,0) Then PlaySound drin Delay 1500 StopChannel loopbchannel StopChannel loopachannel hauptmenu() EndIf If speed# = 0 If Keydown(203) Then angle# = angle# - 1 End if If Keydown(205) Then angle# = angle# + 1 End If End if If ImagesCollide(ball,x,y,0,mauerlinks,0,0,0) Or ImagesCollide(ball,x,y,0,mauerrechts,787,0,0) angle# = 180 - angle# PlaySound ms EndIf DrawImage loch,xziel,yziel DrawImage ball,x#,y# Color 255,0,0 Rect 10,10,tmp_speed#*50,10 Flip Wend If wl = 1 Then FreeSound loopa If wl = 2 Then FreeSound loopb If wl = 3 Then FreeSound loopc hauptmenu() End Function Function levelb() angle# = 0 speed# = 0 Graphics 800,600,32,1 boden = LoadImage("Gras.bmp") mauerlinks = LoadImage("Mauer.bmp") ScaleImage mauerlinks,1,8 mauerrechts = LoadImage("Mauer.bmp") ScaleImage mauerrechts,1,8 maueroben = LoadImage("Mauer.bmp") ScaleImage maueroben,1,13 RotateImage maueroben,90 mauerunten = LoadImage("Mauer.bmp") ScaleImage mauerunten,1,13 RotateImage mauerunten,90 xziel = 25 yziel = 50 x# = 750 y# = 300 mauere = LoadImage("Mauer.bmp") ScaleImage mauere,1,7 RotateImage mauere,0 mauerz = LoadImage("Mauer.bmp") ScaleImage mauerz,1,7 RotateImage mauerz,0 mauerd = LoadImage("Mauer.bmp") ScaleImage mauerd,1,7 RotateImage mauerd,0 mauerv = LoadImage("Mauer.bmp") ScaleImage mauerv,1,7 RotateImage mauerv,0 mauerf = LoadImage("Mauer.bmp") ScaleImage mauerf,1,7 RotateImage mauerf,0 ball = LoadImage("ball.bmp") ballz = LoadImage("ballz.bmp") loch = LoadImage("Loch.bmp") fahne = LoadImage("Fahne.bmp") SeedRnd(MilliSecs()) wl = Rnd(1,3) If wl = 1 Then loopa = LoadSound("loopa.mp3") LoopSound loopa PlaySound loopa End If If wl = 2 Then loopb = LoadSound("loopb.mp3") LoopSound loopb PlaySound loopb End If If wl = 3 Then loopc = LoadSound("loopc.mp3") LoopSound loopc PlaySound loopc End If ms = LoadSound("Wand.wav") drin = LoadSound("drin.wav") SetBuffer BackBuffer() While Not KeyHit(1) DrawImage boden,0,0 DrawImage mauerlinks,0,0 DrawImage mauerrechts,787,0 DrawImage mauerunten,800,587 DrawImage maueroben,800,0 DrawImage mauere,100,0 DrawImage mauerd,400,0 DrawImage mauerz,250,100 DrawImage mauerv,550,100 DrawImage mauerf,700,0 x# = x# + Cos( angle# ) * speed# y# = y# + Sin( angle# ) * speed# speed# = speed# - 0.02 If speed# < 0 Then speed# = 0 If speed# > 8 Then speed# = 8 If speed# = 0 Then xz# = x#+Cos(angle#)*50 yz# = y#+Sin(angle#)*50 DrawImage ballz,xz#,yz# If KeyDown(57) Then tmp_speed#=tmp_speed#+0.2 If tmp_speed# > 8 Then tmp_speed# = 8 If (Not KeyDown(57)) And (tmp_speed#>0) Then speed#=tmp_speed# tmp_speed#=0 EndIf End If If ImagesCollide(ball,x,y,0,maueroben,800,587,0) Or ImagesCollide(ball,x,y,0,mauerunten,800,0,0) Then angle# = 360 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauere,100,0,0) Then angle# = 180 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauerz,250,100,0) Then angle# = 180 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauerd,400,0,0) Then angle# = 180 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauerv,550,100,0) Then angle# = 180 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauerf,700,0,0) Then angle# = 180 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,loch,xziel,yziel,0) Then PlaySound drin Delay 1500 StopChannel loopbchannel StopChannel loopachannel hauptmenu() EndIf If speed# = 0 If KeyDown(203) Then angle# = angle# - 1 End If If KeyDown(205) Then angle# = angle# + 1 End If End If If ImagesCollide(ball,x,y,0,mauerlinks,0,0,0) Or ImagesCollide(ball,x,y,0,mauerrechts,787,0,0) angle# = 180 - angle# PlaySound ms EndIf DrawImage loch,xziel,yziel DrawImage ball,x#,y# Color 255,0,0 Rect 10,10,tmp_speed#*50,10 Flip Wend If wl = 1 Then FreeSound loopa If wl = 2 Then FreeSound loopb If wl = 3 Then FreeSound loopc hauptmenu() End Function Function levelc() angle# = 0 speed# = 0 Graphics 800,600,32,1 boden = LoadImage("Gras.bmp") mauerlinks = LoadImage("Mauer.bmp") ScaleImage mauerlinks,1,8 mauerrechts = LoadImage("Mauer.bmp") ScaleImage mauerrechts,1,8 maueroben = LoadImage("Mauer.bmp") ScaleImage maueroben,1,13 RotateImage maueroben,90 mauerunten = LoadImage("Mauer.bmp") ScaleImage mauerunten,1,13 RotateImage mauerunten,90 xziel = 600 yziel = 50 x# = 50 y# = 500 mauere = LoadImage("Mauer.bmp") ScaleImage mauere,1,4 RotateImage mauere,-90 mauerz = LoadImage("Mauer.bmp") ScaleImage mauerz,1,5 RotateImage mauerz,0 mauerd = LoadImage("Mauer.bmp") ScaleImage mauerd,1,4 RotateImage mauerd,0 mauerv = LoadImage("Mauer.bmp") ScaleImage mauerv,1,8 RotateImage mauerv,-90 ball = LoadImage("ball.bmp") ballz = LoadImage("ballz.bmp") loch = LoadImage("Loch.bmp") fahne = LoadImage("Fahne.bmp") SeedRnd(MilliSecs()) wl = Rnd(1,3) If wl = 1 Then loopa = LoadSound("loopa.mp3") LoopSound loopa PlaySound loopa End If If wl = 2 Then loopb = LoadSound("loopb.mp3") LoopSound loopb PlaySound loopb End If If wl = 3 Then loopc = LoadSound("loopc.mp3") LoopSound loopc PlaySound loopc End If ms = LoadSound("Wand.wav") drin = LoadSound("drin.wav") SetBuffer BackBuffer() While Not KeyHit(1) DrawImage boden,0,0 DrawImage mauerlinks,0,0 DrawImage mauerrechts,787,0 DrawImage mauerunten,800,587 DrawImage maueroben,800,0 DrawImage mauere,0,100 DrawImage mauerd,500,-100 DrawImage mauerz,100,250 DrawImage mauerv,200,300 x# = x# + Cos( angle# ) * speed# y# = y# + Sin( angle# ) * speed# speed# = speed# - 0.02 If speed# < 0 Then speed# = 0 If speed# > 8 Then speed# = 8 If speed# = 0 Then xz# = x#+Cos(angle#)*50 yz# = y#+Sin(angle#)*50 DrawImage ballz,xz#,yz# If KeyDown(57) Then tmp_speed#=tmp_speed#+0.2 If tmp_speed# > 8 Then tmp_speed# = 8 If (Not KeyDown(57)) And (tmp_speed#>0) Then speed#=tmp_speed# tmp_speed#=0 EndIf End If If ImagesCollide(ball,x,y,0,maueroben,800,587,0) Or ImagesCollide(ball,x,y,0,mauerunten,800,0,0) Then angle# = 360 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauere,0,100,0) Then angle# = 360 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauerz,100,250,0) Then angle# = 180 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauerd,500,-100,0) Then angle# = 180 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,mauerv,200,300,0) Then angle# = 360 - angle# PlaySound ms EndIf If ImagesCollide(ball,x,y,0,loch,xziel,yziel,0) Then PlaySound drin Delay 1500 StopChannel loopbchannel StopChannel loopachannel hauptmenu() EndIf If speed# = 0 If KeyDown(203) Then angle# = angle# - 1 End If If KeyDown(205) Then angle# = angle# + 1 End If End If If ImagesCollide(ball,x,y,0,mauerlinks,0,0,0) Or ImagesCollide(ball,x,y,0,mauerrechts,787,0,0) angle# = 180 - angle# PlaySound ms EndIf DrawImage loch,xziel,yziel DrawImage ball,x#,y# Color 255,0,0 Rect 10,10,tmp_speed#*50,10 Flip Wend If wl = 1 Then FreeSound loopa If wl = 2 Then FreeSound loopb If wl = 3 Then FreeSound loopc hauptmenu() End Function So: Wenn der Ball im zweiten beispiel die rechte oder linke Seite der Mauern berührt, funktioniert es aber wenn er auf die obere oder untere Seite trifft, geht der Ball in die Mauer rein und er kommt nicht aus der Mauer raus. zum probieren: [url]Minigolf_Mania.exe[/url] Ich hoffe ihr versteht mein Problem! ~Editiert~ Aus Performance Gründen [ syntax ] durch [ code ] Tags ersetzt. MfG D2006 |
||
- Zuletzt bearbeitet von BlitzBasic303 am Fr, Jan 11, 2013 22:35, insgesamt einmal bearbeitet
animago |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hey, ich hab das mal getestet, entweder hast du das problem mit dem einfals und ausfllswingel schon gelöst. aber ich habe einen kleinen fehler entdeckt und wenn du ihn noch nicht hattest, ist es vielleicht gut es zu wissen. ich habe den ball so angespielt, das er fast gerade auf eine wand zugelaufen ist. der Ball klebte danach an der wand und es waren daraufhin 2 zielpointer zu sehen... etwa so....
![]() nur mal so gesagt als ein betatester ![]() |
||
Versuche niemals, die Realität zu kopieren.
Wenn du die Realität willst, dann lass den Computer aus und geh vor die Tür. Wenn du Spaß haben willst, dann erschaffe eine andere Realität. |
BlitzBasic303Betreff: RE: |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja! Genau das Problem. das gleiche passiert auch wenn du den Ball unten in den Schmalen rand:
spielst.Das liegt daran das ich denn neuen Winkel damit: BlitzBasic: [AUSKLAPPEN]
ausrechne. Würde ich stattedesen BlitzBasic: [AUSKLAPPEN]
verwenden ginge es oben und unten allerdings nicht mehr links und rechts Mfg BlitzBasic303 |
||
- Zuletzt bearbeitet von BlitzBasic303 am Fr, Jan 11, 2013 22:53, insgesamt einmal bearbeitet
![]() |
BlitzChecker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei mir geht das mit oben und unten auch. aber hast du noch kein Menü? Als ich das Spiel gestertet habe, zeigte er mir nur einen Schwarzen Bildschirm an ![]() [edit] Zur Winkelberechnung: ![]() ![]() |
||
www.xairro.com |
BlitzBasic303Betreff: RE: |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@BlitzChecker
Du kannst auf dem Ziffernblock 1,2,oder drei drücken um ein Level auszuwählen. Vom Gleichen Link habe ich die Berechnung! |
||
![]() |
BlitzChecker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann würd ich aber noch ein grafisches Menü machen. Ansonsten wirklich gut! | ||
www.xairro.com |
animago |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja das problem hatte ich gestern auch mit dem schwarzen bildschirm. das liegt am grafics modus. habe ihn von vollbild auf fenster modus gestellt dann konnte man das sehen. das geht wenn du statt
Graphics 800,600,32,1 lieber das eingibst: Graphics 800,600,32,3 habe das problem auch bei mir gehabt. weiss auch nicht warum das so ist. bin eh mehr ein freund von fenster spielen ![]() mit deinem winkel würde ich das vielleicht mal mit ner if abfrage machen wenn der ball unter, bzw über dem balken ist gilt der eine winkel. wenn der ball stattdessen neben dem balken ist gilt der andere. das währe meiner meinung nach eine logik lösung. programmiertechnisch bin ich leider zu faul deinen ganzen quelltext zu studieren. ![]() ich denke eine kleine funktion wenndaneben() oder so würde es tun ![]() |
||
Versuche niemals, die Realität zu kopieren.
Wenn du die Realität willst, dann lass den Computer aus und geh vor die Tür. Wenn du Spaß haben willst, dann erschaffe eine andere Realität. |
![]() |
BlitzChecker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mal im Quelltext geguckt (der war ja deabei). Eigentlich müsste der wirklich einen Text ausgeben. Ich wollte den Code compilen, aber BlitzBasic gab mir nur Massen an Fehlern aus, z.B. "Wend without While". Deshalb an BlitzBasic303:
Ist das der Originalcode, der dabei ist? |
||
www.xairro.com |
BlitzBasic303Betreff: RE: |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, ich habe den Quellcode oben aus der Datei herauskopiert, bei mir funktioniert es. ![]() |
||
animago |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
den guten quelltext nimmst du am besten aus der gedownloadeten datei. da hatte ich ihn zumindest her. und der ging ohne prob zu compilen | ||
Versuche niemals, die Realität zu kopieren.
Wenn du die Realität willst, dann lass den Computer aus und geh vor die Tür. Wenn du Spaß haben willst, dann erschaffe eine andere Realität. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group