第1ステージから第2ステージへの切り替えプログラム・・・ – プログラミング – Home

第1ステージから第2ステージへの切り替...
 
通知
すべてクリア

[解決済] 第1ステージから第2ステージへの切り替えプログラム・・・


初心者Mと申します。
 初心者Mと申します。
(@初心者Mと申します。)
ゲスト
結合: 23年前
投稿: 1
Topic starter  

こんばんわ。

私は今、バラバラになった絵をスライドさせて元の絵に直すパズルを作っています。
一応タイトル画面→ゲーム画面→操作と今のところ遊ぶ事は出来るのですが、
それだけでは物足りないので、絵が完成するとクリア画面になり、次のステージへ続く風にした
いのです・・・。

void InitGame(void){
int y,x,yy,xx,temp;
for(y=0;y<4;y++){
for(x=0;x<4;x++){
st[y][x]=y*4+x;}
}
srand((unsigned)time(NULL)); //乱数パターンの初期化
for(y=0;y<4;y++){
for(x=0;x<4;x++){
xx=rand()%4; //ランダムな位置を求める
yy=rand()%4;
temp=st[y][x];//入れ替え
st[y][x]=st[yy][xx]; st[yy][xx]=temp;}
}
}
BOOL Checknumber(void){
BOOL n; int x,y,cnt=0;
n=TRUE;//TRUE;そろった、FALSE;そろっていない。
for(y=0;y<4;y++){
for(x=0;x<4;x++){
if(st[y][x]!=cnt){
n=FALSE;}
cnt++;}
}
return n;}
クリア画面に切り替わり、次のステージへ続けさせるにはどういったプログラムを組めば良いの
でしょうか?
頼りきったような質問で申し訳無いのですが出来たらご教授お願い致します。m(__)m


引用未解決
トピックタグ
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

いわゆる「16パズル」ってやつを作ったことがあります。
私の場合はゲームではなくスクリーンセーバで、勝手に絵を組み立てていき、
完成したら次の画面で同じように...の繰り返しです。
その時は、WM_TIMERイベントを利用しました。

絵を復元する関数を用意しておきます。
(復元関数内で)絵が完成したら、n秒間隔のタイマーを生成し、関数は終了です。
n秒後にイベントが発生したら、そのタイマーは即刻廃棄し、
復元関数をコールします(いわゆる次のステージ)。

私がこれを作った時は、Windowsアプリなので、
何をするにも何らかのイベント発生をトリガにしたかったという思いがあり、
こういう手段をとってみましたが、
これはあくまで一例ですので、他にもやり方は色々あるはずです。

参考になればよいのですが。


返信引用
初心者M。
 初心者M。
(@初心者M。)
ゲスト
結合: 23年前
投稿: 2
 

早速のお返事ありがとうございます!

スクリーンセーバでも「16パズル」が作れるのですねぇ。(・o・)

私のはVisual C++を使ってマウスで動かし、絵が揃い完成したら今度は数が縦横4ブロッ
クだったのが5ブロックと細かくなり、難易度を増せるようにしたいんです・・・。
それが頭では分っかているつもりでもいざ、プログラムを組み立て始めようとすると、
どうやってプログラムを組めばいいのか迷い行き詰まってしまったのです・・・。(__),

>参考になればよいのですが。
いえいえ、返事を貰えただけでも有難いです。(^-^)


返信引用
TAKA
 TAKA
(@TAKA)
ゲスト
結合: 23年前
投稿: 117
 

手順だけならばこうですね。
下記を一つのダイアログ等で処理すれば簡単に出来るはず・・

メイン処理 {
// タイトル表示
// メインループ開始( while(1)等のループ
// 初期化処理(一回目は4で以降5・6・・)で初期化(initgemeに引数を渡そう
// サブルーチンへ
// 終了ならメインループを抜ける
// メインループ終了
}

サブルーチン{
// 入力判定
// チェックナンバー
}


返信引用
EIJI
 EIJI
(@EIJI)
ゲスト
結合: 25年前
投稿: 76
 

CheckNumber()関数はFALSEになった時点でreturnするなりして
ループから抜けないとまずくないですか?


返信引用
初心者M。
 初心者M。
(@初心者M。)
ゲスト
結合: 23年前
投稿: 2
 

あ、なるほど!

確かにループから抜けないとまずかったですね・・・。
TAKAさんのやり方にしてみたらうまくいきました!

sugarさん、TAKAさん、EIJIさん親切に教えていただき、ありがとうございましたぁ。
m(__)m


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました