0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ゲーム『NO MORE KING』 CASIO 関数電卓 fx-5800P BASIC用 ソースコード

Posted at

1. ゲーム説明

  • JQKの3枚のカードがあります
  • ランダムに伏せられていますので1枚を選びます
  • Kを引かないことがゲームの目的です(No More King)
  • Kの場所を推理して123のキーを押すと、カードがオープンされます
  • Kを引かずに何回続けられるか⁉️
  • 10回連続できればかなりすごいです。その場合の確率は(1/3)^10≒1.7%
     (自分の最高記録は13回です)
  • このゲームは当方が発案したものです

No More King - 1.jpeg
ゲーム開始画面。?が伏せられたカードです。番号のキーを押して下さい

No More King - 3.jpeg
1番のカードを選んでオープン‼️Jackなのでセーフ。右下の数字はスコアです。なにかキーを押して次へ進みます

No More King - 2.jpeg
次は2番のカードを選びましたが、Kingでしたのでドボンです。ゲームオーバー泣

2. ソースコード ※fx-5800P BASIC用です

注意: ソースは可読性UPのため字下げして//でコメントを書いていますが、いずれもCASIO BASICではエラーになりますので、実際にご利用される際には除去して下さい。

  • 配列(DimZ)を使わず行列(Mat)を使用しましたので、GetKeyのキーコードだけ差し替えればfx-9750GIIIやfx-CG50などでも動作可能だと思います(試していません)
  • プログラムで使用する変数 
    • Mat A[2,3]: [1,1-3]は札の管理。[2,1-3]は置き場の管理に使っています
    • X:札の乱数を格納    Y:札置き場の乱数を格納
    • K:キー入力判定用   L:入力されたキー値を格納
    • S:スコアの格納
    • I:ループ制御用
0→S           // スコア。Kingを引かなかった回数

While 1        // メイン(無限ループ)
	[[0,0,0][0,0,0]]→Mat A    // 行列A確保。[1,1-3]は札管理。[2,1−3]は置き場管理

	Do                             // 場札の取り出しと格納
		RanInt#(1,3)→X             // 手札乱数発生(1:J,2:Q,3:K)
		If Mat A[1,X]=0:Then       // 手札未使用(=0)なら使用済にする。使用済なら再Loop
			X→Mat A[1,X]
			Do
                RanInt#(1,3)→Y         // 場所の乱数発生
				If Mat A[2,Y]=0:Then   // 空き地なら札を格納、Loopを抜ける
					X→Mat A[2,Y]:Break:IfEnd
			LpWhile 1
		IfEnd
	LpWhile (Mat A[1,1]=0 Or Mat A[1,2]=0 Or Mat A[1,3]=0)   // 全札配り終わるまでLoop

	Locate 1,1,"<NO MORE KING>  "
	Locate 1,2,"[?] [?] [?] "
	Locate 1,3," 1   2   3       "    // スペース1個、3個、3個、6個
	Locate 1,4,"            (  )"      // スペース12個
	Locate 14,4,S

	Do:Getkey→K:LpWhile K<35 Or K>37  // BET待ち。1,2,3キーのみ有効
	K-34→L                            // キー値(1,2,3)をLに格納
	Locate L*2+(L-1)*2,4,"="         // 押したキー番号にマーキング
	
	For 1→I To 3       // 場札をすべてめくる
		Mat A[2,I]=1⇒Locate I*2+(I-1)*2,2,"J"
		Mat A[2,I]=2⇒Locate I*2+(I-1)*2,2,"Q"
		Mat A[2,I]=3⇒Locate I*2+(I-1)*2,2,"K"
	Next

	Locate 1,3,"  1   2   3    ▶r∠θ"    // ▶Eを表示 スペース1個、3個、3個、4個
	Locate 16,3,"E"
	
	If Mat A[2,L]=3:Then             // King引き。ドボンでBreak
		Locate L*2-1+(L-1)*2,4,"x=x" // 座標を算出してドボンマーク"x=x"表示
		Locate 1,1,"<U ARE THE KING>"
		Break
	Else
		S+1→S        // JackまたはQueenならスコア+1
		Locate 14,4,S
	IfEnd

	Do:Getkey→K:LpWhile Not(K)    // ポーズ。キー押せば継続
WhileEnd

Locate 12,2,">BYE<"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?