プチコンまとめWiki (初代/mkII)

Toukou/コードブレーカー(数当てゲーム) の変更点


#title(投稿プログラム : コードブレーカー(Hit&Blow))
#title(投稿プログラム : コードブレーカー (Hit&Blow))
#contents

2013年11月6日投稿

/ 投稿者 : 名無しさん
/ &tag(投稿プログラム,ゲーム,QRコード,mkII専用);
* 概要 [#Summary]
RPG「女神転生」シリーズのミニゲーム「コードブレーカー」の再現を試みました。ナンディさんネー!&br;
正式名称は「Hit&Blow」という数当てゲームです。&br;
処女作なので雑な作りかと思いますが、楽しんでいただければ幸いです。&br;
11/7付で画面に肝心のナンディさんを表示するようにしました。&br;
11/17付で、規定回数の半分以下でクリアした場合「メタルカード」を貰えるようになりました。&br;
何枚か集めるとモードが一つ追加されます。&br;
画面表示をすこし改良。付属データの名称を「CB」に統一しました。&br;
また、EASYの規定回数を6回→8回に変更しました。&br;
*操作説明 [#Sousa]
起動画面に常に説明を表示していますが、一応。&br;
十字キー…上下で数字の変更、左右でカーソル移動。&br;
Aボタン…文字送り、選択した数字のチェック。&br;
Xボタン…ゲームの終了&br;
*ルール [#Rule]
各桁の数字が全て違う、3桁ないし4桁の秘密の数字を当てるゲームです。&br;
数字を入力して、桁ごとに&br;
「正解と一致する(ヒット)」&br;
「場所は違うがその数字が含まれる(ブロー)」&br;
という情報を基に正解を導きます。&br;
難易度EASYは0〜7のうち3桁の数字を8回以内、&br;
難易度HARDは1〜9のうち4桁の数字を8回以内に当てれば成功です。&br;
**例題 [#Exam]
答えが「123」の場合、以下のようになります。&br;
「128」→ 2ヒット、0ブロー&br;
「135」→ 1ヒット、1ブロー&br;
「312」→ 0ヒット、3ブロー&br;
「111」→ 1ヒット、2ブロー&br;
* スクリーンショット [#ScreenShots]
#ref(cbplay1.jpg)
#ref(cbplay2.jpg)
* QR コード [#QR]
読み取り辛い場合は、画像をクリックして原寸表示してやってください。
プログラムの起動には下のCHRデータが必要です。&br;
PRG
#ref(prgcb.png)
CHR
#ref(chrcb.png)
* プログラムリスト [#List]
#region
#basic{{
' ─────────────────────
'’コ−ト゛フ゛レ−カ−
VISIBLE 1,1,1,1,0,0
ACLS:CLEAR
SYSBEEP=FALSE
LOAD”BGU0U:CB”,FALSE
BGOFS 0,308,380

’ナンテ゛ィサン ヒ゛ョウカ゛
I=0
@NAN
 X=FLOOR(I/7)
 Y=FLOOR(I%7)
 Z=X+16+Y*32
 BGPUT O,X,Y,Z,0,0,0
 I=I+1
 IF X>6 THEN GOTO @NANEND
 GOTO @NAN
@NANEND

@TITLE
CLS:CLEAR
BGMSTOP
’タイトル
@TIC
TC=RND(12)+2
LOCATE 8,3:COLOR TC
?”┌────────────┐”
LOCATE 8,4
?”│CODE BREAKER│”
LOCATE 8,5
?”└────────────┘”
LOCATE 5,7:COLOR FC
?”ナマステ!”
LOCATE 5,8
?”ワタシ イント゛カラ キタ ナンテ゛ィサン ネ”
LOCATE 5,9
?”マタ アエタヒト、オヒサネ− ウレシネ−”
LOCATE 8,11
?”ナンイト゛ エラフ゛ヨ−”
’メニュ−
LOCATE 9,13
?”Aホ゛タン→”;
COLOR 9:?”EASY”
LOCATE 9,14:COLOR FC
?”Bホ゛タン→”;
COLOR 13:?”HARD”
LOCATE 9,17:COLOR FC
?”Xホ゛タン→QUIT”

’PRIZE カンレン
LOAD ”MEM:CB”,FALSE
PRZ=VAL(MEM$)
LOCATE 9,19
?”メタルカ−ト゛ ”PRZ”マイ”
IF PRZ==0 THEN GOTO @FIRST
IF PRZ>=5 THEN GOTO @EDITON
GOTO @WAIT

’ショカイ フ゜レイ MEM$ カクホ
@FIRST
CLS:LOCATE 0,5
?”  オヤ アナタ メタルカ−ト゛ モッテナイ?”
?”  ショ−カ゛ナイ ネ”
?”  1マイ アケ゛ルヨ”
PRZ=PRZ+1
MEM$=STR$(PRZ)
SAVE ”MEM:CB”
LOCATE 0,9
?”  スクナイ カイスウテ゛ セイカイ テ゛キタラ”
COLOR 9:?”  EASY”;
COLOR 0:?”  ナラ 1マイ”
COLOR 13:?”  HARD”;
COLOR 0:?”  ナラ 2マイ”
?”  コノ 「メタルカ−ト゛」 アケ゛ルネ”
?””
?”  5マイ アツメルト イイコト アルヨ  А”
@WFIRST
 B5=BUTTON(2)
 IF B5==16 THEN CLS
 IF B5==16 THEN GOTO @TITLE
 GOTO @WFIRST

@EDITON
LOCATE 9,15:COLOR FC
?”Yホ゛タン→”;
COLOR 4:?”EDIT”:COLOR FC
GOTO @WAIT

@WAIT
 B1=BUTTON(2)
 IF B1==16 THEN BEEP 2
 IF B1==16 THEN GOTO @EASY
 IF B1==32 THEN BEEP 2
 IF B1==32 THEN GOTO @HARD
 IF B1==64 THEN GOTO @BYE
’Lホ゛タン テ゛ タイトルカラ− ヘンコウ
 IF B1==256 THEN GOTO @TIC
 IF PRZ>=5 THEN GOTO @WB1
 GOTO @WAIT
@WB1
 IF B1==128 THEN BEEP 2
 IF B1==128 THEN GOTO @EDIT
 GOTO @WAIT

@EASY
DIF=1:NMIN=0:NMAX=7
AC=3:LIMIT=8
GOTO @WAITRULE
@HARD
DIF=2:NMIN=1:NMAX=9
AC=4:LIMIT=8
GOTO @WAITRULE

@FONTC
FC=FC+1
IF FC==1 THEN FC=3
IF FC>4 THEN FC=O
GOTO @FOC

@EDIT
BGMSTOP:CLS:DIF=0:NMIN=1
NMAX=9:AC=4:LIMIT=8
’カ゛メン ヒ゛ョウカ゛
@FOC
COLOR 4:LOCATE 5,1:?”EDIT MODE”
COLOR FC+7:LOCATE 2,3
?”GAMEル−ルヲ カエテ アソヘ゛マス”
?”  (メタルカ−ト゛ ハ モラエマセン)”
COLOR FC
?”シ゛ュウシ゛キ−↑↓テ゛ センタク ←→テ゛ ヘンコウ”
LOCATE 1,8:?”・サイショウスウ(0or1)   : ”NMIN””
LOCATE 1,10:?”・サイタ゛イスウ(5―9)    : ”NMAX””
LOCATE 1,12:?”・セイカイノ カス゛(3or4) : ”AC”コ”
LOCATE 1,14:?”・トライ カイスウ(6―8)   : ”LIMIT”カイ”
EX=20:EY=9:LOCATE EX,EY:?”▲”
LOCATE 0,18
?”Aホ゛タン→ル−ル カクニン”
?”Bホ゛タン→タイトルニ モト゛ル”
?””
?”Rホ゛タン→モシ゛ カラ− ヘンコウ”
’エテ゛ィットヨウ ル−フ゜
@ELOOP
 GOSUB @EWRITE
 GOSUB @ECSR
 GOSUB @EB1
GOTO @ELOOP
’カ−ソル ヒ゛ョウカ゛
@EWRITE
LOCATE EX,EY:?”▲”
IF EY==9 THEN GOTO @EDMIN
IF EY==11 THEN GOTO @EDMAX
IF EY==13 THEN GOTO @EDAC
IF EY==15 THEN GOTO @EDLIMIT
RETURN
@EDMIN
NMIN=EN−48
IF NMIN<0 THEN NMIN=1
IF NMIN>1 THEN NMIN=0
LOCATE EX,8:?””NMIN””
RETURN
@EDMAX
NMAX=EN−48
IF NMAX<5 THEN NMAX=9
IF NMAX>9 THEN NMAX=5
LOCATE EX,10:?””NMAX””
RETURN
@EDAC
AC=EN−48
IF AC<3 THEN AC=4
IF AC>4 THEN AC=3
LOCATE EX,12:?””AC””
RETURN
@EDLIMIT
LIMIT=EN−48
IF LIMIT<6 THEN LIMIT=8
IF LIMIT>8 THEN LIMIT=6
LOCATE EX,14:?””LIMIT””
RETURN

’カ−ソル ト ヘンコウ
@ECSR
 ECR=BUTTON(2)
 WAIT(1)
 IF ECR==1 THEN GOTO @ECR1
 IF ECR==2 THEN GOTO @ECR2
 IF ECR==4 THEN GOTO @ECR4
 IF ECR==8 THEN GOTO @ECR8
 IF ECR==0 THEN GOTO @ECR0
 IF ECR==512 THEN GOTO @FONTC
 GOTO @ECSR
@ECR0
RETURN
@ECR1
EY=EY−2
LOCATE EX,EY+2:?” ”
IF EY<9 THEN EY=15
EN=CHKCHR(EX,EY−1)
RETURN
@ECR2
EY=EY+2
LOCATE EX,EY−2:?” ”
IF EY>15 THEN EY=9
EN=CHKCHR(EX,EY−1)
RETURN
@ECR4
EN=CHKCHR(EX,EY−1)
EN=EN−1
RETURN
@ECR8
EN=CHKCHR(EX,EY−1)
EN=EN+1
RETURN
’ABホ゛タン ショリ
@EB1
 EB1=BUTTON(2)
 IF EB1==16 THEN GOTO @RULE
 IF EB1==32 THEN GOTO @TITLE
RETURN

@WAITRULE
LOCATE 0,21
?”ル−ル キクカ?”
?” Аホ゛タン→YES”
?” Bホ゛タン→NO”
@WAITR0
 WAIT(1)
 B2=BUTTON(2)
 IF B2==16 THEN GOTO @RULE
 IF B2==32 THEN GOTO @START
 GOTO @WAITR0

@RULE
CLS:LOCATE 0,5
?”ワタシ、ココニ「”NMIN”カラ”NMAX”」マテ゛ノ”
?””AC”ツノスウシ゛、モッテル”
?”ソレ、アナタ、アテテホシイ”
COLOR FC+7
?”オナシ゛ スウシ゛ハ ハイッテナイ”;
COLOR FC:?” ネ  А”
@WAITR1
 B3=BUTTON(2)
 WAIT(1)
 IF B3==16 THEN GOTO @RULE2
 GOTO @WAITR1
@RULE2
?””
?”アナタカ゛イレタ スウシ゛カ゛”
?”スウシ゛モ ハ゛ショモ アタッテイタラ”
LOCATE 20,11:COLOR 12
?”ヒット(H)”:COLOR FC
?”スウシ゛ タ゛ケ アタッテイタラ”
LOCATE 17,12:COLOR 11
?”フ゛ロ−(B)”:COLOR FC
?””
?”コノ ヒントテ゛ ナルヘ゛ク ハヤク アテルネ”
?””AC”ツ セ゛ンフ゛”;
COLOR 12:?”ヒット(H)”;
COLOR FC:?”テ゛ セイカイ ヨ”
?””
?””LIMIT”カイ テ゛ アタラナキャ オシマイネ”
?”OK?  А”
@WAITR2
 B4=BUTTON(2)
 WAIT(1)
 IF B4==16 THEN GOTO @START
 GOTO @WAITR2

@START
CLS
LOAD ”MEM:CB”,FALSE
PRZ=VAL(MEM$)
BGMPLAY 27
’コタエノ チュウシュツ
ON DIF GOTO @AEDIT,@AE,@AH
@AEDIT
ON NMIN GOTO @MIN0,@MIN1

@MIN0
M=NMAX
A1=RND(M)
@EA2
 A2=RND(M)
 IF A2==A1 THEN GOTO @EA2
@EA3
 A3=RND(M)
 IF A3==A2 OR A3==A1 THEN GOTO @EA3
@EA4
 A4=RND(M)
 IF A4==A3 OR A4==A2 THEN GOTO @EA4
 IF A4==A1 THEN GOTO @EA4
GOTO @WRITE

@MIN1
M=NMAX
A1=RND(M−1)+1
@EA02
 A2=RND(M−1)+1
 IF A2==A1 THEN GOTO @EA02
@EA03
 A3=RND(M−1)+1
 IF A3==A2 OR A3==A1 THEN GOTO @EA03
@EA04
 A4=RND(M−1)+1
 IF A4==A3 OR A4==A2 THEN GOTO @EA04
 IF A4==A1 THEN GOTO @EA04
GOTO @WRITE

@AE
A1=RND(8)+NMIN
@A2
 A2=RND(8)+NMIN
 IF A2==A1 THEN GOTO @A2
@A3
 A3=RND(8)+NMIN
 IF A3==A2 OR A3==A1 THEN GOTO @A3
GOTO @WRITE
@AH
A1=RND(9)+NMIN
@A2H
 A2=RND(9)+NMIN
 IF A2==A1 THEN GOTO @A2H
@A3H
 A3=RND(9)+NMIN
 IF A3==A2 OR A3==A1 THEN GOTO @A3H
@A4H
 A4=RND(9)+NMIN
 IF A4==A3 OR A4==A2 THEN GOTO @A4H
 IF A4==A1 THEN GOTO @A4H
GOTO @WRITE

’カ゛メン ヒ゛ョウカ゛
@WRITE
COLOR FC
?””
?”ジュウジキ−ノ ←→テ゛ ハ゛ショヲ エラフ゛ネ”
?”ソシテ ↑↓ テ゛ スウシ゛ヲ カエルネ”
?””
?”スウシ゛ヲ キメタラ Аホ゛タンヨ”
LOCATE 23,1:?”┌───────┐
LOCATE 23,2:?”│メタルカ−ト゛│”
LOCATE 23,3:?”│       │”
LOCATE 23,4:?”│     マイ│”
LOCATE 23,5:?”└───────┘”
LOCATE 27,4:?””PRZ””
?”┌──────────────────────┐”
FOR Y=6 TO 20
LOCATE 0,Y:?”│”
LOCATE 23,Y:?”│”
NEXT
?”└──────────────────────┘
LOCATE 3,22
?”Xホ゛タン→タイトルニ モト゛ル”
GOTO @TIME

’カイスウ ショリ
@TIME
COLOR FC
TIME=TIME+1
NY=TIME+5
REMT=LIMIT−TIME+1
LOCATE 1,NY:?””TIME”カイメ”
LOCATE 23,6:?”┌───────┐”
LOCATE 23,7:?”│アト ”REMT” カイ│”
LOCATE 23,8:?”└───────┘”
IF TIME>LIMIT THEN GOTO @FAILED
FOR NX=6 TO 5+AC
LOCATE NX,NY:?””NMIN””
NEXT

’カ−ソル ト スウシ゛ノ ヒョウシ゛
CX=6:CY=TIME+6
N=CHKCHR(CX,NY)−48
LOCATE CX,NY:?””N””
LOCATE CX,CY:?”▲”
GOTO @LOOP

’メインル−チン
@LOOP
 GOSUB @CSMOVE
 GOSUB @CHECK
’GOSUB @CHEAT
GOTO @LOOP

@CSMOVE
 CK=BUTTON(2)
 WAIT(1)
 IF CK==1 THEN GOTO @CK1
 IF CK==2 THEN GOTO @CK2
 IF CK==4 THEN GOTO @CK4
 IF CK==8 THEN GOTO @CK8
 IF CK==0 THEN GOTO @CK0
@CK0
RETURN
@CK1
N=N+1
IF N>NMAX THEN N=NMIN
LOCATE CX,NY:?””N””
RETURN
@CK2
N=N−1
IF N<NMIN THEN N=NMAX
LOCATE CX,NY:?””N””
RETURN
@CK4
LOCATE CX,CY:?” ”
CX=CX−1
IF CX<6 THEN CX=5+AC
LOCATE CX,CY:?”▲”
N=CHKCHR(CX,NY)−48
LOCATE CX,NY:?””N””
RETURN
@CK8
LOCATE CX,CY:?” ”
CX=CX+1
IF CX>(5+AC) THEN CX=6
LOCATE CX,CY:?”▲”
N=CHKCHR(CX,NY)−48
LOCATE CX,NY:?””N””
RETURN

@CHECK
CHB=BUTTON(2)
IF CHB==16 THEN GOTO @CHB16
IF CHB==64 THEN GOTO @TITLE
IF CHB==0 THEN GOTO @CHB0
@CHB0
RETURN
@CHB16
BEEP 3
IF AC==3 THEN GOTO @ECHK
IF AC==4 THEN GOTO @HCHK
@ECHK
H=0:B=0
LOCATE CX,CY:?” ”
NA1=CHKCHR(6,NY):MN1=NA1−48
NA2=CHKCHR(7,NY):MN2=NA2−48
NA3=CHKCHR(8,NY):MN3=NA3−48
’ココハ ナントカ ナランカ
IF MN1==A1 THEN H=H+1
IF MN1==A2 THEN B=B+1
IF MN1==A3 THEN B=B+1
IF MN2==A1 THEN B=B+1
IF MN2==A2 THEN H=H+1
IF MN2==A3 THEN B=B+1
IF MN3==A1 THEN B=B+1
IF MN3==A2 THEN B=B+1
IF MN3==A3 THEN H=H+1
LOCATE 15,NY
COLOR 12:?””H”H””  ”;
COLOR 11:?””B”B”
IF H==AC THEN GOTO @BREAK
GOTO @TIME
@HCHK
H=0:B=0
LOCATE CX,CY:?” ”
NA1=CHKCHR(6,NY):MN1=NA1−48
NA2=CHKCHR(7,NY):MN2=NA2−48
NA3=CHKCHR(8,NY):MN3=NA3−48
NA4=CHKCHR(9,NY):MN4=NA4−48
IF MN1==A1 THEN H=H+1
IF MN1==A2 THEN B=B+1
IF MN1==A3 THEN B=B+1
IF MN1==A4 THEN B=B+1
IF MN2==A1 THEN B=B+1
IF MN2==A2 THEN H=H+1
IF MN2==A3 THEN B=B+1
IF MN2==A4 THEN B=B+1
IF MN3==A1 THEN B=B+1
IF MN3==A2 THEN B=B+1
IF MN3==A3 THEN H=H+1
IF MN3==A4 THEN B=B+1
IF MN4==A1 THEN B=B+1
IF MN4==A2 THEN B=B+1
IF MN4==A3 THEN B=B+1
IF MN4==A4 THEN H=H+1
LOCATE 16,NY
COLOR 12:?””H”H””  ”;
COLOR 11:?””B”B”
IF H==AC THEN GOTO @BREAK
GOTO @TIME

’ト゛ウサ カクニンヨウ チ−ト
@CHEAT
ANS=BUTTON(2)
IF ANS==128 THEN GOTO @ANS
IF ANS!=128 THEN GOTO @NOCHEAT
@ANS
IF AC==3 THEN GOTO @EANS
IF AC==4 THEN GOTO @HANS
@EANS
LOCATE 6,16:COLOR 13
?””A1””A2””A3””:COLOR FC
RETURN
@HANS
LOCATE 6,16:COLOR 13
?””A1””A2””A3””A4””:COLOR FC
RETURN
@NOCHEAT
RETURN

@FAILED
LOCATE 1,(LIMIT+6):?”    ”
LOCATE 1,15:?”ハス゛レ! ソン シタト゛−!!”
LOCATE 1,16
IF AC==3 THEN ?”コタエハ「”A1””A2””A3”」ヨ−”
IF AC==4 THEN ?”コタエハ「”A1””A2””A3””A4”」ヨ−”
WAIT(1) 
GOTO @ASKAGAIN

@BREAK
WAIT(1)
BGMPLAY 5
IF DIF==0 THEN GOTO @EDBRE
IF TIME<=LIMIT/2 THEN GOTO @PRIZE
@EDBRE
LOCATE 1,16:COLOR FC+7
?”BREAK!! オメテ゛トサンネ!”
GOTO @ASKAGAIN

@PRIZE
WAIT(1)
LOCATE 1,16:COLOR 3
?”ウォ− スコ゛イ!!メタルカ−ト゛ ヤルヨ!”
PRZ=PRZ+DIF
MEM$=STR$(PRZ)
SAVE ”MEM:CB”
IF PRZ>=5 THEN GOTO @PCHK1
GOTO @ASKAGAIN
@PCHK1
IF PRZ+DIF<(5+DIF*2) THEN GOTO @OPEDIT
GOTO @ASKAGAIN

@OPEDIT
COLOR 3:CLS:BEEP 7
LOCATE 0,5
?”*EDITモ−ト゛ ヲ カイホウ シマシタ!*”
?””
?”*タイトル テ゛ Хホ゛タンヲ オスト*”
?”*EDITモ−ト゛ニ ハイリマス*  А”
COLOR FC
@WPRZ
 WP1=BUTTON(2)
 IF WP1==16 THEN GOTO @TITLE
GOTO @WPRZ

@ASKAGAIN
COLOR FC:LOCATE 1,17
?”モウイチト゛ ヤルカ?”
LOCATE 1,19
?”Aホ゛タン→YES”
LOCATE 1,20
?”Bホ゛タン→NO”
@WAITASK
 WAB=BUTTON(2)
 IF WAB==16 THEN GOTO @STR
 IF WAB==32 THEN GOTO @TITLE
 IF WAB==64 THEN GOTO @TITLE
 GOTO @WAITASK
@STR
ON DIF GOTO @STRED,@STREA,@STRHA
@STRED
LOCATE 1,17:COLOR 4
?”EDITモ−ト゛ ニ モト゛リマス”
COLOR FC:LOCATE 1,20
?”Bホ゛タン→タイトル ヘ”
CLEAR
@WEDAG
 WAIT(1)
 WEA=BUTTON(2)
 IF WEA==16 THEN GOTO @EDIT
 IF WEA==32 THEN GOTO @TITLE
 IF WEA==64 THEN GOTO @TITLE
 GOTO @WEDAG
@STREA
CLEAR
DIF=1:NMIN=0:NMAX=7
AC=3:LIMIT=8
GOTO @START
@STRHA
CLEAR
DIF=2:NMIN=1:NMAX=9
AC=4:LIMIT=8
GOTO @START

@BYE
BGMPLAY 4
LOCATE 0,21
?”ナンテ゛ィサン イツテ゛モ マッテルヨ。”
?”ナマステ、ネ。”
?”*ナニカ ホ゛タン ヲ オシテクタ゛サイ*”
@QUITSEC
 WAIT(1)
 QB=BUTTON(2)
 IF QB!=0 THEN END
 GOTO @QUITSEC
' ─────────────────────
}}
#endregion
* CHECKER FLAG (ひとことコメント) [#Comments]
感想・アドバイスなどございましたら、何卒。
- ''YHY'' : 数当てゲームは苦手なのですが、「ナンディさん」のインパクトでついDLしてしまいました。 (&new{2013/11/17 (日) 19:52:45};)
- ''作成者'' : DLありがとうございます!DLしていただいた直後で申し訳ないのですが、少しばかり改良しましたのでよろしければ新ver.もお試しください! (&new{2013/11/17 (日) 20:45:53};)

#comment

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.006 秒 | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30