このスレッドはロックされています。記事の閲覧のみとなります。
トップページ > 記事閲覧
ランダム関数を用いたさいころの処理※解決済み
名前:学生 日時: 2021/07/09 11:27

賽子を振った時の挙動をまねてみようと思ったのですが、さいころの出る値を変える方法が分かりません。 教えていただけると幸いです。 以下現在の状態 #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE);//非全画面にセット SetGraphMode(640, 480, 32);//画面サイズ指定 SetOutApplicationLogValidFlag(FALSE);//Log.txtを生成しないように設定 if (DxLib_Init() == -1) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } unsigned int Cr; Cr = GetColor(255, 255, 255); DrawString(200, 240, "クリックしてさいころを振ってね", Cr); WaitKey(); int Random[6]; SRand(123456); Random[0] = GetRand(5) + 1; Random[1] = GetRand(5) + 1; Random[2] = GetRand(5) + 1; Random[3] = GetRand(5) + 1; Random[4] = GetRand(5) + 1; Random[5] = GetRand(5) + 1; int i; for (i = 0; i < 2; i++) { // BMP画像の表示 LoadGraphScreen(0, 0,"dice1.png", TRUE); WaitTimer(200); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice2.png", TRUE); WaitTimer(200); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice3.png", TRUE); WaitTimer(200); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice4.png", TRUE); WaitTimer(200); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice5.png", TRUE); WaitTimer(200); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice6.png", TRUE); WaitTimer(200); ClearDrawScreen(); i + 1; } //ここから減速する LoadGraphScreen(0, 0, "dice1.png", TRUE); WaitTimer(400); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice2.png", TRUE); WaitTimer(600); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice3.png", TRUE); WaitTimer(800); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice4.png", TRUE); WaitTimer(1000); DrawString(240, 240, "4進む!!", Cr); WaitKey(); DxLib_End(); // DXライブラリ使用の終了処理 return 0; // ソフトの終了 }
メンテ

Page: 1 |

Re: ランダム関数を用いたさいころの処理 ( No.1 )
名前:たろう 日時:2021/07/07 18:23

どうしてもLoadGraphScreenを使わないといけないのでしょうか? LoadGraphとDrawGraphを使う方がいいと思いますが、 あえてこのままでやるとすれば、全体をwhileで挟んで、賽の目が出たら繰り返す仕組みに 変えた上で、GetRand(5)をやり直せばいいと思います。 ※下で一応動きましたが、ほとんど変えてませんので無駄は色々ありそうです<(_ _)> #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE);//非全画面にセット SetGraphMode(640, 480, 32);//画面サイズ指定 SetOutApplicationLogValidFlag(FALSE);//Log.txtを生成しないように設定 if (DxLib_Init() == -1) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } unsigned int Cr; Cr = GetColor(255, 255, 255); DrawString(200, 240, "クリックしてさいころを振ってね", Cr); WaitKey(); int Random; while(1){ Random = GetRand(5); int i; for (i = 0; i < 2; i++) { // BMP画像の表示 LoadGraphScreen(0, 0,"dice1.png", TRUE); WaitTimer(200); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice2.png", TRUE); WaitTimer(200); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice3.png", TRUE); WaitTimer(200); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice4.png", TRUE); WaitTimer(200); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice5.png", TRUE); WaitTimer(200); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice6.png", TRUE); WaitTimer(200); ClearDrawScreen(); i + 1; } //ここから減速する LoadGraphScreen(0, 0, "dice1.png", TRUE); WaitTimer(400); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice2.png", TRUE); WaitTimer(600); ClearDrawScreen(); LoadGraphScreen(0, 0, "dice3.png", TRUE); WaitTimer(800); ClearDrawScreen(); if(Random==0){ LoadGraphScreen(0, 0, "dice1.png", TRUE);} else if(Random==1){ LoadGraphScreen(0, 0, "dice2.png", TRUE);} else if(Random==2){ LoadGraphScreen(0, 0, "dice3.png", TRUE);} else if(Random==3){ LoadGraphScreen(0, 0, "dice4.png", TRUE);} else if(Random==4){ LoadGraphScreen(0, 0, "dice5.png", TRUE);} else if(Random==5){ LoadGraphScreen(0, 0, "dice6.png", TRUE);} WaitTimer(1000); DrawString(240, 240, "4進む!!", Cr); WaitKey(); } DxLib_End(); // DXライブラリ使用の終了処理 return 0; // ソフトの終了 }
メンテ

Page: 1 |