2024年07月02日
【ゲーム制作】テーブルゲーム 第20回
テーブルゲーム 第20回です。
今回は勝敗判定処理を組んでいきます。
場残枚数が「0」ならばゲーム終了でBASICへ戻ってきます。
BASIC部でプレイヤーと相手の枚数を比較して勝敗判定します。
取得枚数が26枚超で勝利!
取得枚数が26枚未満で敗退。
取得枚数が26枚で引き分け。
次回、BGMと効果音を作成します。
2024年07月01日
【ゲーム制作】テーブルゲーム 第19回
テーブルゲーム 第19回です。
今回は前回考えたロジックを組んでいきます。
考え方は単純でも、ロジックにすると結構ややこしいです。
2460〜2520行、ターンが回ってきたら、まず、場ワークの既に捲られたカードから2枚同じ数字がないかチェック、あれば片方を1枚目とする
2530〜2620行、なければ1枚目を乱数で捲る
2630〜2730行、SPRITE表示サブルーチン
2740〜2810行、1枚目捲った数字と、場ワークの既に捲られたカードに同じ数字がないかチェック、あれば2枚目とする
2820〜2890行、なければ2枚目を乱数で捲る
2900〜3070行、当たり/外れ判定
1枚目と2枚目のロジックが全く異なるのでロジック長くなってしまいました。
SPRITE表示、当たり/外れ判定などは、プレイヤー側ロジックとほぼ同じです。
相手のターンと分かるように、「指カーソル」は赤です。
ん!
結構簡単に上手くいきました!
これこそ詰まると思ったのですが…。
次回はゲーム終了後処理を組んでいきます。
2024年06月30日
【ゲーム制作】テーブルゲーム 第18回
テーブルゲーム 第18回です。
相手のカード選択ロジックを考えます。
「神経衰弱」ですので思考ルーチンはありません。
淡々と作業を繰り返すロジックとなります。
これも今作の最難関ロジックの一つです。
考え方ですが、自分が「神経衰弱」をプレイする時の考え方をフロー化します。
そのために用意してあったのが、場ワーク先頭1ビットのオープンフラグ。
「これは何のためにあるんだろう?」と、思われた方もいるかと思いますが、敵のカード検索用のフラグです。
一度捲られたカードは数字がオープンになっています。
と、いう事はそのカードは普通1枚目には捲らず、1枚目は捲った事のないカードを捲り、既にオープンになっている数字を引く事を祈ると思います。
それに、既に捲られたカードの数字と同じ数字を、2枚目に捲って外した時は、相手にそれを取られてしまいます。
と、言ったように一般的な「神経衰弱」の手法を再現するためのフラグです。
で、上記手法をそのままロジック化します。
・場ワーク全体で既に捲られたカードで2枚同じ数字がないかチェック
・あればその2枚両方捲って、「敵取得カード枚数」を+2、「場残枚数」を-2し、もう一度
・なければ捲られていないカードからランダムに1枚目を捲る
・場ワーク全体から既に捲られたカードに、1枚目捲った数字と同じ数字がないかチェック
・あれば捲って、「敵取得カード枚数」を+2、「場残枚数」を-2し、もう一度
・なければプレイヤーターンへ
・「場残枚数」が「0」になったらゲーム終了、BASICへ
考え方は単純です。
次回は今回考えたロジックを組んでいきます。
2024年06月29日
【ゲーム制作】テーブルゲーム 第17回
2024年06月28日
【ゲーム制作】テーブルゲーム 第16回
テーブルゲーム 第16回です。
1枚目を捲った後、2枚目の選択に移る時の処理方法を考えます。
現状は、捲ったカードの数字を覚える時間が必要かな?と思い、
・1枚目オープン
・入力待ち
・ボタン打下→2枚目選択可能
・2枚目オープン
・入力待ち
・ボタン打下
の処理となっていますが、思いのほか操作性が悪い…。
なんだかボタン押しまくりです…。
少しでも解り易いようにと、入力待ちの際は「指カーソル」を消してみたりと、色々試してみましたが余り改善しない…。
相手(CPU)がカード捲る際も同じ処理なので、ボタン打下回数が半端ない回数になります。
…と言う訳で、カード捲って伏せられるまでを時間制にします。
具体的には、捲ってから数秒すると、勝手に裏返るようにします。
この数秒が長いと、今度は待ち時間が気になる…。
んー、ストレスの掛からないバランスって難しい…。
いろいろ試してみましたが、2秒くらいがいい感じだと感じました。
次回は画面デザインを見直します。
2024年06月27日
【ゲーム制作】テーブルゲーム 第15回
テーブルゲーム 第15回です。
今回は、プレイヤーのカード選択を組んでいきます。
選択カーソル(指)は横に16ドット(2FONT)、縦に48ドット(6FONT)単位で移動します。
一気に端から端まで動かないように、1回動かず度にリピート禁止処理をします。
1枚目を選んでボタンを打下したら、指定座標にサブルーチンで作った「カード表面描画」をし、ボタン再打下で「カード裏面右半分描画」をして2枚目選択へ。
2枚目選んでボタンを打下したら、指定座標に「カード表面表示」をし、1枚目と2枚目の場ワーク値下5ビット(数字)を比較し、等しければプレイヤー取得枚数を+2、場残枚数を-2し、ボタン再打下で「場表示」してもう一度1枚目選択へ。
等しくなければ場ワーク値先頭1ビット(開いたフラグ)を立て、ボタン再打下で「場表示」し相手のターンへ。
場残枚数が「0」ならばゲーム終了、BASICへ戻る。
うーん、今回も上手く動いてくれません…。
試行錯誤の上、無事動くようになりました。
やっぱり単純なミスでした…。
凹む…。
次回はカードを捲った後の操作性改良をします。
2024年06月26日
【ゲーム制作】テーブルゲーム 第14回
テーブルゲーム 第14回です。
今回もサブルーチンの続きです。
最後のサブルーチンとなります。
場ワークにカードをシャッフル設定するロジックを考えます。
処理の考え方は、
・カードカウンタ(1バイト)を用意し、下5ビットを「1」から開始し、「13」を超えたら下5ビットを「1」にして2・3ビットを+1(記号変更)する
・52枚分カウントしたら終了(52枚終えた時点で、カードカウンタの2・3ビットは「3」、下5ビットは「13」)
・場ワーク先頭アドレスに「52」までの乱数を加えた位置の値が「0」(未配置)ならばそのアドレスにカードカウンタ値を設定し繰り返す、「0」でなければ乱数再取得へ
プログラム組めたのでテストします。
実行しても結果が見えないので、見えるように場ワークを表示するプログラムを組んで実行。
何度かテストしましたが、良い感じです。
次回はプレイヤーのカード選択を組んでいきます。