Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2017/09/24 19:18:22

MixJuice GET URL : kidspod.club/mj/362

パズルゲーム 「ピラミッド100」

【遊び方】
1.二人で交互に石を積み上げて、合計100個の石でピラミッドを完成させてください。
2.ただし、一度に積める石は1~7個までです。
3.最後に頂上(100個目)に石を置いた人が勝ちです。

勝負が決まった後のEnterキー待ちで、1か2を入力すると、次はIchigoJamが相手をしてくれます(1:先手、2:後手)。

ラベルを使用しているので、IchigoJam BASIC ver1.2以上が必要です(ver 1.2.3で動作確認済み)

【主な使用変数】
P 現在のプレイヤの石のキャラクタコード
N 1回に積み上げた石の数(1~7個まで)
C 積み上げられる残りの石の合計数(初期値100、0になったら終わり:v1.3で仕様変更)
A 先手の積んだ石の合計
E 先手の石のキャラクタコード
B 後手の積んだ石の合計
F 後手の石のキャラクタコード
[0]~[99] ピラミッド表示用(100個分の各プレイヤの石のキャラクタコードを格納)
O ゲームモード
0:人対人 1:Ichigo(先手)対人 2:人対Neko(後手) 3:Ichigo対Neko
  ※他のプログラム実行後にこのゲームするときは、CLV:RUN で実行すること
  ※O=3の時はIchigoJam同士で永久に対戦を続けます(デモ用)

【ざっくりしたプログラム説明】
10~50  初期化と初期画面表示
    30~40 先手と後手の石のキャラクタコード設定(#E0以下にすること)
    50~ 初期ピラミッドの石のキャラクタコード設定。
       頂上はあえて!マーク。

70~90  先手の処理(入力と表示)および勝負判定
100~120 後手の処理および勝負判定

140~190 勝利者の表示と、再ゲーム待ち(ゲームモードの変更)
      190行は、本当にこれで動くのか試したかっただけ

200~280 入力サブルーチン:積み上げる石数の入力と判定
     230  人間の入力
         現在のプレイヤのキャラクタが#E0以下だったら人間と判断
     240~ IchigoJamの入力(計算)
         260行のWAIT文は、いかにも考えているふりをするため。
     270  入力値判定
         1~7の範囲で、合計して100を超えない値であること
     280  プレイヤが積んだ石の数だけ、配列[0]-[99]にプレイヤの石のキャラクタコードを代入する

290~450 ピラミッド表示サブルーチン
300~ タイトルとピラミッド本体の表示
     330~ 左右の地平線を表示
     370~ ピラミッド本体を表示
[0]から[99]のキャラクタコードを下段から上段へ向かって表示

  • 1
  • 2
  • 1
  • 2

SOURCE CODE

10 'ピラミッド100 V1.3 TOMO(2017/9)
20 CLS:C=100:A=0:B=0
30 E=#1:IF O&1 E=#FF
40 F=#2:IF O&2 F=#EC
50 FOR I=0 TO 99:[I]=#A5:NEXT:[I]=#21:GSB@DSP
60 @MAIN
70 P=E:GSB@INPUT
80 A=A+N:GSB@DSP
90 IF !C GOTO@WIN
100 P=F:GSB@INPUT
110 B=B+N:GSB@DSP
120 IF !C GOTO@WIN
130 GOTO@MAIN
140 @WIN
150 PLAY"GAGA"
160 IF P=E LC0,2 ELSE LC28,2
170 ?"WIN!":LC4,16:?CHR$(P);" ノ カチ!"
180 IF O<>3 LC4,18:INPUT"Enterキー デ モウイチド",O ELSE WAIT600
190 RUN
200 @INPUT
210 IF P=E LC0,20 ELSE LC28,20
220 ?CHR$(#18,P);
230 IF P<#E0 CLK:INPUT N:GOTO@HANTEI
240 N=C%8 
250 IF !N N=RND(7)+1
260 WAIT RND(30)*10:?N
270 @HANTEI:IF N<1 or N>7 or C-N<0 BEEP50:GOTO@INPUT
280 BEEP:FOR I=100-C TO 99-C+N:[I]=P:NEXT:C=C-N:RTN
290 @DSP
300 LC0,1:?CHR$(E,#3A);A
310 LC28,1:?CHR$(F,#3A);B
320 LC3,14:?"メザセ!チョウジョウ(1-7) ノコリ ";C;" コ",
330 FOR X=0 TO 5
340 LC X,12:?CHR$(#91);
350 LC X+25,12:?CHR$(#91)
360 NEXT
370 Z=6:L=24:I=0
380 FOR Y=12 TO 3 STEP -1
390 FOR X=Z TO L
400 LC X,Y:?CHR$([I]);
410 I=I+1
420 NEXT
430 Z=Z+1:L=L-1
440 NEXT
450 RTN

COMMENT

Kidspod運営チーム
Kidspod運営チーム2017/10/02 09:43:06

ルールはおなじみのものですけど、こうしてゲームとしてグラフィックが付くと新鮮です。プレイヤーごとにブロックの模様が違うのもいいですね。しかもコメントにプログラムの解説まで書いていただけるとは。ありがとうございます!