つぶやき Processing でテレビゲーム
この作品の 3 日前には、インタラクティブな水面シミュレータを作ってました。 この日は、さらなるインタラクティビティを!ということで、 原始的なスカッシュゲームを つぶやき Processing で実現してみました。
#つぶやきProcessing z or x key
— Koji Saito (@KojiSaito) February 27, 2020
def setup():size(400,600)
x=X=200;y=s=t=5;D=[1,-1]
def draw():
global X,x,y,s,t;
if y<600:clear();X+=keyPressed*([0,-5][key=='z']+[0,5][key=='x']);x+=s;y+=t;s*=D[x<0 or x>400];t*=D[y<0 or (y>545 and abs(X+25-x)<25)];rect(x,y,9,9);rect(X,550,50,9) pic.twitter.com/F2Cxa64KA3
作品解説&ソースコード
実は当たり判定やゲームオーバー処理が甘く、バグってしまう場合があります。 もうすこし文字数に余裕があれば、これらのバグも直せると思いますが、 私のコードゴルフの腕前では、ちょっと無理そうです。
ここでは、できれば残して置きたかった GAME OVER 表示を加えて、 清書したものを載せておきます。 バグは依然として残っていますが、つぶやき Processing した作品と同様、 実際に遊ぶことができます(プレイアブルなソースコードです)。
def setup():size(400,600)
x=X=200
y=s=t=5
D=[1,-1]
def draw():
global X,x,y,s,t;
if y<600:
clear()
X+=keyPressed*([0,-5][key=='z']+[0,5][key=='x'])
x+=s
y+=t
s*=D[x<0 or x>400]
t*=D[y<0 or (y>545 and abs(X-x)<50)]
rect(x,y,9,9)
rect(X,550,50,9)
else:
text("GAME OVER",100,300)
変数 X がパドルの位置で、(x,y) がボールの位置を表しています。
ちなみに、結構努力した割には反響はイマイチな作品でした。 やはり画面が地味なのは、あんまりウケないみたいですね…。