DynamicModule[{
x,(*人*)
get,(*玉の数*)
stFlag,(*玉が画面内に存在しているか*)
endFlag,(*ゲームオーバーしたか*)
appTime,(*時間*)
itFlag=0
},
{
Button[JUMP,If[x==3,x=x+3,x=x-3]],
Button[Restart,itFlag=0],
Animate[

If[itFlag ==0,
x=3;
stFlag =0;
get=0;
endFlag =0;
appTime=0;
itFlag=1;
];

(*玉の位置*)
If[stFlag==0&&endFlag==0,
appTime=t;
bX=RandomReal[{3,6}];
bR=RandomReal[{0.2,1}];
bY=9.5-(t-appTime)+bR;
ball = {Red,Disk[{bX,bY},bR]};
stFlag=1;
 ];


If[stFlag==1&&endFlag==0,
bY=9.5-(t-appTime)+bR;
ball = {Red,Disk[{bX,bY},bR]};
];

(*玉の当たり判定*)
If[(bX-x<bR+0.3)&&(bX-x>-bR-0.3)&&(bY-bR<3.3)&&endFlag==0,
endFlag=1;
ball=Null;
(*ゲームオーバーした瞬間の時間を保存*)
goverTime=t
];

(*玉が画面外に出た時*)
If[(bY)<-bR&&endFlag==0,
stFlag=0;
get++;
];

(*人間の体、テキスト等の設定*)
If[endFlag==1,
(*ゲームオーバー後の処理*)

(*玉の削除*)
ball=Null;

(*ゲームオーバーメッセージ*)
gameover=Text[Style[END,Large],{1,8}];
,

(*ユーザーへのメッセージ*)
gameover=Null;
(*人の体*)
head ={Black,Disk[{x,3},0.25]};
body = Line[{{x,2.25},{x,2.75}}];
leg1= Line[{{x,2.25},{x-0.25,2.1}}];
leg2= Line[{{x,2.25},{x+0.25,2.1}}];
arm1=Line[{{x,2.6},{x+0.25,2.6}}];
arm2=Line[{{x,2.6},{x-0.25,2.6}}];

];

line1=Line[{{3,0},{3,9}}];
line2=Line[{{6,0},{6,9}}];

(*地面の描画*)
ground={Brown,Rectangle[{0,0},{9,1}]};

(*ポイントの表示*)
point=Text[Style[get*8,25],{8,4}];

(*画面設定*)
options=
{AspectRatio->Automatic,PlotRange->
{{0,9},{0,9}}};

(*グラフィック描画処理*)
Graphics[{RGBColor[0,0,0],head,body,leg1,leg2,arm1,arm2,line1,line2,ball,ground,point,gameover},options],
{t,0,Infinity},
AnimationRate->5,
AnimationRepetitions->1
]}]