Post by herbiekun on Dec 10, 2020 20:20:04 GMT
Here is a Ball Bounce proram that also has sprite collision using the intersecting or hit box method. developer.mozilla.org.
clearStage("black")
gx=620
gy=360
a=8
b=6
mx=63
my=33
x=33
y=63
rt=0
rz=0
ma=8
mb=6
v=100
globe=createSpriteFromEmoji('🎛',30);
ball=createSpriteFromEmoji('🤪',30);
spot=createSpriteFromEmoji('🤪',30);
setSprite(globe,610,360)
setOscillatorType("sawTooth",1)
//main loop
window.onUpdate=function(){
smdt = Time.smoothDeltaTime;
// advance sprites wall collision
rt=rt+6
rz=rz+7
x = x + b+smdt;
y = y + a+smdt;
if (x < 30 | x > 1230) {
b = -b;
beep(7,.05,0,resetQueue=true)
}
if (y < 30 | y > 690) {
a = -a
beep(7,.05,0,resetQueue=true)
}
mx=mx+mb+smdt;
if (mx < 30 | mx > 1230) {
mb = -mb;
beep(7,.05,0,resetQueue=true)
}
my=my+ma+smdt;
if (my < 30 | my > 690) {
ma = -ma;
beep(7,.05,0,resetQueue=true)
}
//sprite collision
if (gx >x - 30 && gx < x +30 && gy > y - 30 && gy < y + 30) {
a=hitSprite(a,y);
}
if (gx >mx - 30 && gx < mx +30 && gy > my - 30 && gy < my + 30) {
a=hitSpritex(ma,my);
}
setSprite(ball,x+smdt * a,y+smdt * b,0,rz+smdt*15);
setSprite(spot,mx+smdt*a,my+smdt*a,0,rt+smdt*15);
};
// function subroutines
function getRandomInt(min,max) {
min = Math.ceil (min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min) + min);
}
function hitSprite() {
if (gx > y - 31 && gx < y + 31) {
a = -a+smdt; }else{
b = -b+smdt;
beep(7,.05,0,resetQueue=true)
setSprite(globe,610,360);
gx = getRandomInt(200, 800)
gy = getRandomInt(200, 600)
setSprite(globe,gx,gy);
}
return a,b ; ;
};
function hitSpritex() {
if (gx > my - 31 && gx < my + 31) {
ma = -ma+smdt; }else{
mb = -mb+smdt;
beep(7,.05,0,resetQueue=true)
setSprite(globe,610,360);
gx = getRandomInt(200, 800)
gy = getRandomInt(200, 600)
setSprite(globe,gx,gy);
}
return ma,mb ; ;
};
clearStage("black")
gx=620
gy=360
a=8
b=6
mx=63
my=33
x=33
y=63
rt=0
rz=0
ma=8
mb=6
v=100
globe=createSpriteFromEmoji('🎛',30);
ball=createSpriteFromEmoji('🤪',30);
spot=createSpriteFromEmoji('🤪',30);
setSprite(globe,610,360)
setOscillatorType("sawTooth",1)
//main loop
window.onUpdate=function(){
smdt = Time.smoothDeltaTime;
// advance sprites wall collision
rt=rt+6
rz=rz+7
x = x + b+smdt;
y = y + a+smdt;
if (x < 30 | x > 1230) {
b = -b;
beep(7,.05,0,resetQueue=true)
}
if (y < 30 | y > 690) {
a = -a
beep(7,.05,0,resetQueue=true)
}
mx=mx+mb+smdt;
if (mx < 30 | mx > 1230) {
mb = -mb;
beep(7,.05,0,resetQueue=true)
}
my=my+ma+smdt;
if (my < 30 | my > 690) {
ma = -ma;
beep(7,.05,0,resetQueue=true)
}
//sprite collision
if (gx >x - 30 && gx < x +30 && gy > y - 30 && gy < y + 30) {
a=hitSprite(a,y);
}
if (gx >mx - 30 && gx < mx +30 && gy > my - 30 && gy < my + 30) {
a=hitSpritex(ma,my);
}
setSprite(ball,x+smdt * a,y+smdt * b,0,rz+smdt*15);
setSprite(spot,mx+smdt*a,my+smdt*a,0,rt+smdt*15);
};
// function subroutines
function getRandomInt(min,max) {
min = Math.ceil (min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min) + min);
}
function hitSprite() {
if (gx > y - 31 && gx < y + 31) {
a = -a+smdt; }else{
b = -b+smdt;
beep(7,.05,0,resetQueue=true)
setSprite(globe,610,360);
gx = getRandomInt(200, 800)
gy = getRandomInt(200, 600)
setSprite(globe,gx,gy);
}
return a,b ; ;
};
function hitSpritex() {
if (gx > my - 31 && gx < my + 31) {
ma = -ma+smdt; }else{
mb = -mb+smdt;
beep(7,.05,0,resetQueue=true)
setSprite(globe,610,360);
gx = getRandomInt(200, 800)
gy = getRandomInt(200, 600)
setSprite(globe,gx,gy);
}
return ma,mb ; ;
};