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

2018/10/06 20:09:19

MixJuice GET URL : kidspod.club/mj/644

バトルホール

■概要
1~3人で遊べます。
堀下がり系のゲームです。
♪:取ると壁が全部消えます。
イチゴ:取ると他の人たちの通路が狭くなります。

■キー操作
Player1
左:Z 右:X

Player2
左:← 右:→

Player3
左:4 右:5

■勝利条件
最後の一人まで生き残れば勝ちです。
※1人プレイの場合は壁にぶつかるまで終わりません

■敗北条件
壁にぶつかると負けです。

■開発環境の問題
ichigojamに直接キーボードを挿さない環境で開発していることが原因だと思うのですが
INKEYの値をうまく取ってくれません。
仕方なく110行にWAITを入れました。
ichigojamに直接キーボードをつないでいればWAITする必要が無いかもしれません。
試せる人は試してほしいです。

■変数表
A 壁のキャラクターコード
B I*8
C 画面消しアイテムのキャラクターコード
D 敵洞窟幅減少アイテムのキャラクターコード
E 3+B
I FORループ
J FORループ
K INKEY()
P プレイヤー数-1
S 深さ
Z 残りプレイヤー数チェック、洞窟左右移動乱数

[0] 1プレイヤーのキャラクターコード 240
[1] 1プレイヤーの左移動のキーコード 90
[2] 1プレイヤーの右移動のキーコード 88
[3] 1プレイヤーのX座標 5
[4] 1プレイヤーのX下限 1
[5] 1プレイヤーのX上限 9
[6] 1プレイヤーの幅数 5
[7] 1プレイヤーの幅相対位置 3
[8] 2プレイヤーのキャラクターコード 237
[9] 2プレイヤーの左移動のキーコード 28
[10] 2プレイヤーの右移動のキーコード 29
[11] 2プレイヤーのX座標 15
[12] 2プレイヤーのX下限 11
[13] 2プレイヤーのX上限 19
[14] 2プレイヤーの幅数 5
[15] 2プレイヤーの幅相対位置 3
[16] 3プレイヤーのキャラクターコード 243
[17] 3プレイヤーの左移動のキーコード 52
[18] 3プレイヤーの右移動のキーコード 53
[19] 3プレイヤーのX座標 25
[20] 3プレイヤーのX下限 21
[21] 3プレイヤーのX上限 29
[22] 3プレイヤーの幅数 5
[23] 3プレイヤーの幅相対位置 3

  • 1
  • 2
  • 1
  • 2

SOURCE CODE

10 CLS:CLV:CLP:A=6:C=238:D=255:LET[0],240,90,88,5,1,9,5,3,237,28,29,15,11,19,5,3,243,52,53,25,21,29,5,3
20 INPUT"Player?(1-3)=",P:IFP<1||P>3CONT
30 P=P-1:FORI=0TO20:FORJ=0TO3:LCJ*10,23:?CHR$(A);:NEXT:?:NEXT
40 @M:K=INKEY()
50 FORI=0TOP:B=I*8:E=3+B:[E]=[E]-(K=[1+B])*([E]>0)+(K=[2+B])*([E]<30):IFSCR([E],1)=CGSB@CELSEIFSCR([E],1)=DGSB@DELSEIFSCR([E],1)=A[24+I]=1:Z=0:FORJ=0TOP:Z=Z+[24+J]:NEXT:IFP-Z<=0GOTO@E
60 LC[3+B],1-([24+I]=1)*2:?CHR$([B]):NEXT:LC0,23:?CHR$(A);:COPY#BE1,#BE0,30:S=S+1
70 FORI=0TOP:B=I*8:Z=RND(3)-1:[7+B]=[7+B]-(Z=-1)*([7+B]>0)+(Z=1)*([7+B]<8-[6+B]):LC[4+B]+[7+B],23:?" ";:COPY#BE0+[4+B]+[7+B]+1,#BE0+[4+B]+[7+B],[6+B]:NEXT
80 Z=RND(100):IFZ=50LCRND(29)+1,23:?CHR$(D);
90 IFZ=33ORZ=66LCRND(29)+1,23:?CHR$(C);
100 IFS%50=0FORI=0TOP:[6+I*8]=[6+I*8]-([6+I*8]>1):NEXT
110 WAIT15:?:GOTO@M
120 @C:CLS:RTN
130 @D:FORJ=0TOP:IFJ!=I[6+J*8]=[6+J*8]-([6+J*8]>1)
140 NEXT:RTN
150 @E:LC0,23:FORJ=0TOP:IF[24+J]=0?"Winner Player";J+1;"(";CHR$([J*8]);") DEEP=";S
160 IFP=0?"DEEP=";S
170 NEXT

COMMENT