ラケット

ボールを打ち返すラケットを作ります。
ラケットの操作はキーボードとマウスの二通りが考えられますが、今回はマウスを使います。

マウスの座標はシステム変数mousexを使う事で得られます。

簡単にするため、ボールは正方形として扱っています。なので当たり判定の精度は低いです。
特にボールの大きさを大きくするとそれが顕著になります。
またボールがラケットの横に当たると、ボールがラケットにめり込んで動かなくなります。

//画面の大きさ
#define wx 360
#define wy 400
//ボールの位置
x = 40.0
y = 300.0
//ボールの速度
vx = 3.0
vy = 3.0
racketsize = 60 //ラケットの大きさ
ballsize = 8 //ボールの大きさ
screen 0,wx,wy

repeat
	rx = mousex - racketsize/2 //マウスの位置からラケットの左端の座標を求める
	x += vx
	y += vy
	if x < 0 | x > (wx-ballsize) : vx = vx * -1
	if y < 0 : vy = vy * -1
	if (y >= wy-ballsize) & (x+ballsize > rx) & (x < rx+racketsize):vy = vy * -1 //ボールを打ち返す
	if y > wy :y = 0
	
	color 0,0,0
	boxf
	color 255,0,0
	boxf rx,wy-5,rx+racketsize,wy //ラケットの描画
	color 255,255,0 
	circle x,y,x+ballsize,y+ballsize
	redraw 1
	wait 1
	redraw 0
loop