#author("2018-01-18T12:15:01+09:00","","")
**下の壁をとる [#bcbb2964]
ここまで来たらゲームの大部分はできたも同然。とりあえず下の壁を表示していた箇所を取って、そして、下の壁で反射させていた部分を取ってしまって、ゲームの仕上げにかかろう。
#ref(dewall.png,center)
- ボールをラケットで跳ね返したら点数を加算!
- 持ち玉3個で、失敗(ラケットで受け損ねて、ボールが画面下の座標まで行ってしまう)したら、持ち玉を1個減らして、ゲーム再スタート!
- 持ち玉がなくなったらゲーム終了!
- 適当な場所に持ち玉の数、得点を表示するようにしよう。
#author("2023-01-31T10:33:36+09:00","default:maa","maa")

 100	CLS
 110	'--- 壁を描く
 120	LOCATE 19,1
 130	PRINT "#########################################"
 140	FOR I=2 to 22
 150		LOCATE 19,I
 160		PRINT "#                                       #"
 170	NEXT I
 180	'--- ボール座標 X,Y 移動方向 XM,YML
 190	X=40:Y=10:XM=1:YM=1
 200	'--- ラケットの座標 BX,BY 移動方向 BM
 210	BX=38:BY=22:BM=0
 220	'--- ボールの個数とスコアの表示
 230	BALL=3:SCORE=0
 240	LOCATE 20,0:PRINT "Score: ";SCORE
 250	LOCATE 51,0:PRINT "Ball: ";BALL
 260	'--- 最初のラケットの表示
 270	LOCATE BX,BY:PRINT "==="
 280	'--- メインループ 持ち球がある間はゲームが続く
 290	WHILE BALL>0
 300		'--- ボールを表示
 310		LOCATE X,Y:PRINT "o"
 320		'--- ボールとラケットの速度の調整
 330		FOR I=0 TO 100
 340			'--- 押されているキーを読み取る
 350			K$=INKEY$
 360			'--- 左右(,.)のキーが押されていたら移動方向をセットして *MOVE へ
 370			IF K$="," AND BX>20 THEN BM=-1:GOSUB *MOVE
 380			IF K$="." AND BX<56 THEN BM= 1:GOSUB *MOVE
 390		NEXT I
 400		'--- ラケットに当たったらボールの移動方向を反転
 410		IF Y=BY-1 AND X=>BX-1 AND X<=BX+3 THEN YM=-YM:GOSUB *SCORE
 420		'
 430		'--- 上と左右の壁に当たったら移動方向を反転
 440		IF Y= 2 THEN YM=-YM
 450		IF X=20 OR X=58 THEN XM=-XM
 460		'--- ボールを消す
 470		LOCATE X,Y:PRINT " "
 480		'--- ミスした
 490		IF Y=BY+1 THEN GOSUB *MISS
 500		'---次のボール座標を計算
 510		X=X+XM:Y=Y+YM
 520	WEND
 530	LOCATE 34,12:PRINT "Game Over..."
 540	END
 550	'--- ラケットを表示するサブルーチン
 560	*MOVE
 570		'--- ラケットを消す
 580		LOCATE BX,BY:PRINT "   "
 590		'--- ラケットの座標を計算して表示
 600		BX=BX+BM:BM=0
 610		LOCATE BX,BY:PRINT "==="
 620	RETURN
 630	'--- ミスしたときのサブルーチン
 640	*MISS
 650		LOCATE 36,12:PRINT "Booo!!"
 660		FOR I=0 to 10000:NEXT I
 670		BALL=BALL-1
 680		LOCATE 51,0:PRINT "Ball: ";BALL
 690		Y=10:YM=-1
 700		LOCATE 36,12:PRINT "      "
 710	RETURN
 720	'--- スコア表示
 730	*SCORE
 740		SCORE=SCORE+100
 750		LOCATE 20,0:PRINT "Score: ";SCORE
 760	RETURN


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS