Vinnaren i pepparkakshustävlingen!
2020-12-16, 22:45
  #1
Medlem
Hallå där kära programmerare! precis som topic lyder så har jag skapat en boll som flyger runt i ett rum.
Har adderat gravitation till bollen men den har lite problem med att den hamnar under x axeln och buggar ibland, ganska random men det händer och jag vet inte varför..

Någon vänlig själ som vill kika igenom min kod och kanske kan se vart problemet är? Misstänker att det är någonstans i IF satserna men osäker..Svårt att debugga denna typ av uppgift med.

https://codeshare.io/21dwm3

Tacksam för all hjälp!
Citera
2020-12-16, 23:49
  #2
Medlem
Testa att byta ut all draw-kod mot att bara printa ut bollens x & y i konsolen för att se om det hjälper dig lista ut när det skiter sig.

Jag provade att göra det https://pastebin.com/raw/PF4tAJZ8
införde en sleep på 50ms för att man skulle hinna läsa, körde sedan koden i https://repl.it/languages/java10
Citera
2020-12-17, 03:01
  #3
Medlem
Citat:
Ursprungligen postat av XX1
Hallå där kära programmerare! precis som topic lyder så har jag skapat en boll som flyger runt i ett rum.
Har adderat gravitation till bollen men den har lite problem med att den hamnar under x axeln och buggar ibland, ganska random men det händer och jag vet inte varför..

Någon vänlig själ som vill kika igenom min kod och kanske kan se vart problemet är? Misstänker att det är någonstans i IF satserna men osäker..Svårt att debugga denna typ av uppgift med.

https://codeshare.io/21dwm3

Tacksam för all hjälp!

Kod:
if (ball.y <= ball.radius){
                ball.ySpeed = -ball.ySpeed ;
            }

Saker som detta kan glitcha ifall det fortfarande gäller även efter förflyttningen. Du vill ha något som:

Kod:
if (ball.y <= ball.radius && ball.ySpeed < 0 ){
                ball.ySpeed = -ball.ySpeed ;
            }

på alla platser.
Citera
2020-12-17, 10:44
  #4
Medlem
Citat:
Ursprungligen postat av MarcoBolan
Testa att byta ut all draw-kod mot att bara printa ut bollens x & y i konsolen för att se om det hjälper dig lista ut när det skiter sig.

Jag provade att göra det https://pastebin.com/raw/PF4tAJZ8
införde en sleep på 50ms för att man skulle hinna läsa, körde sedan koden i https://repl.it/languages/java10

Tack så mycket, visste inte att man kunde köra kod sådär på en hemsida direkt, uppskattar att du lärde mig detta!

Citat:
Ursprungligen postat av brainwhipper
Kod:
if (ball.y <= ball.radius){
                ball.ySpeed = -ball.ySpeed ;
            }

Saker som detta kan glitcha ifall det fortfarande gäller även efter förflyttningen. Du vill ha något som:

Kod:
if (ball.y <= ball.radius && ball.ySpeed < 0 ){
                ball.ySpeed = -ball.ySpeed ;
            }

på alla platser.

Tack som fan! Jag bytte ut det på x axeln och nu fungerar den klockrent, jag försökte göra något liknande förut men fick det aldrig att fungera, men jag förstår inte riktigt hur det kan fungera? När den väl studsar så sätter den ju farten till negativt, hur kommer det sig att den inte buggar då?

Jag antar att som jag hade det innan, och när bollen fastnar så hamnar den i något kort "stadie" där den snabbt skiftar farten från positivt till negativt och tillbaka så att den ser ut att "hacka" men att den bara byter fart hela tiden?
Citera
2020-12-17, 11:22
  #5
Medlem
Chevrons avatar
Citat:
Ursprungligen postat av XX1
Tack så mycket, visste inte att man kunde köra kod sådär på en hemsida direkt, uppskattar att du lärde mig detta!



Tack som fan! Jag bytte ut det på x axeln och nu fungerar den klockrent, jag försökte göra något liknande förut men fick det aldrig att fungera, men jag förstår inte riktigt hur det kan fungera? När den väl studsar så sätter den ju farten till negativt, hur kommer det sig att den inte buggar då?

Jag antar att som jag hade det innan, och när bollen fastnar så hamnar den i något kort "stadie" där den snabbt skiftar farten från positivt till negativt och tillbaka så att den ser ut att "hacka" men att den bara byter fart hela tiden?
Precis, med det där villkoret kan bollen befinna sig "i studsen" i flera varv (ball.y <= ball.radius)
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback