"すごろくゲームヒント"
# include <Siv3D.hpp> // OpenSiv3D v0.6.10
 
//どこの関数にも属さないところに宣言された変数
//グローバル変数(大域変数)
int count = 0;
 
//Mainの上で宣言すると、そのソースコード上の(宣言から下の)どこからでもアクセス可能!
enum GAMESTATE
{
	TITLE,
	PLAY,
	GAMEOVER,
};
 
void ShowTitleScnene(GAMESTATE& state) {
	//タイトル画面
	FontAsset(U"TFONT")(U"サイコロんZ").drawAt(Scene::Center(), Palette::Yellow);
	FontAsset(U"GFONT")(U"Click Left Mouse Button")
		.drawAt({ Scene::Center().x, Scene::Center().y + FontAsset(U"GFONT").height() }, Palette::Black);
}
 
void ShowPlayScnene(GAMESTATE& state) {
	Texture dragon = TextureAsset(U"dragon");
	Texture dice[6] = { TextureAsset(U"d1"),TextureAsset(U"d2"),TextureAsset(U"d3"),
						TextureAsset(U"d4"),TextureAsset(U"d5"),TextureAsset(U"d6"), };
	//プレイ画面
	FontAsset(U"TFONT")(U"プレイ中💛").drawAt(Scene::Center(), Palette::Aliceblue);
	dragon.resized(32, 32).draw(50, 50);
	for (int i = 0; i < 6; i++)
	{
		dice[i].resized(64, 64).draw(100 + i * 64, 200);
	}
	if (MouseL.down()) {
		count++;
		if (count > 20)
		{
			state = GAMESTATE::GAMEOVER;
		}
	}
	Print << U"count=" << count;
}
 
void ShowGameOverScnene(GAMESTATE& state) {
	//ゲームオーバー画面
	FontAsset(U"TFONT")(U"GAME OVER").drawAt(Scene::Center(), Palette::Red);
}
 
void Main()
{
	//関数などのブロック{}の中で宣言された変数
	//ローカル変数(局所変数)
	const Vec2 IMG_SIZE = { 32,32 };
	const Vec2 SCREEN_SIZE = { Scene::Width(), Scene::Height() };
 
 
	// 背景の色を設定する | Set the background color
	Scene::SetBackground(ColorF{ 0.6, 0.8, 0.7 });
 
	// 絵文字からテクスチャを作成する | Create a texture from an emoji
	//const Texture emoji{ U"🦖"_emoji };
	TextureAsset::Register(U"dragon", U"🦖"_emoji);
	TextureAsset::Register(U"d1", U"d1.png");
	TextureAsset::Register(U"d2", U"d2.png");
	TextureAsset::Register(U"d3", U"d3.png");
	TextureAsset::Register(U"d4", U"d4.png");
	TextureAsset::Register(U"d5", U"d5.png");
	TextureAsset::Register(U"d6", U"d6.png");
 
 
	//const Font titlefont{ 60, Typeface::Heavy };
	FontAsset::Register(U"TFONT", 60, Typeface::Heavy); //fontアセットに登録
	FontAsset::Register(U"GFONT", 30, Typeface::Light); //fontアセットに登録
 
 
 
	Texture sai = Texture(U"d1.png");
	GAMESTATE gameState = GAMESTATE::TITLE;//ステートをタイトルで初期化
 
	while (System::Update())
	{
		if (MouseL.down()) {
			//count++;
			//Print << count;
			switch (gameState)
			{
			case TITLE:
				gameState = GAMESTATE::PLAY;
				break;
			case PLAY:
				//gameState = GAMESTATE::GAMEOVER;
				break;
			case GAMEOVER:
				gameState = GAMESTATE::TITLE;
				break;
			default:
 
				break;
			}
		}
 
 
		switch (gameState)
		{
		case TITLE:
			ShowTitleScnene(gameState);
			break;
		case PLAY:
			ShowPlayScnene(gameState);
			break;
		case GAMEOVER:
			ShowGameOverScnene(gameState);
			break;
		default:
			ShowTitleScnene(gameState);
			break;
		}
 
		//sai.resized(IMG_SIZE).draw(SCREEN_SIZE.x/2 -IMG_SIZE.x/2, SCREEN_SIZE.y/2 - IMG_SIZE.y /2);
	}
}

サイコロ動くところまで

"サイコロ動くよ"
# include <Siv3D.hpp> // OpenSiv3D v0.6.10
 
//どこの関数にも属さないところに宣言された変数
//グローバル変数(大域変数)
int count = 0;
bool isPushButton = false;
int  diceNum = 0;
 
//Mainの上で宣言すると、そのソースコード上の(宣言から下の)どこからでもアクセス可能!
enum GAMESTATE
{
	TITLE,
	PLAY,
	GAMEOVER,
};
 
void ShowTitleScnene(GAMESTATE& state) {
	//タイトル画面
	FontAsset(U"TFONT")(U"サイコロんZ").drawAt(Scene::Center(), Palette::Yellow);
	FontAsset(U"GFONT")(U"Click Left Mouse Button")
		.drawAt({ Scene::Center().x, Scene::Center().y + FontAsset(U"GFONT").height() }, Palette::Black);
}
 
void ShowPlayScnene(GAMESTATE& state) {
	Texture dragon = TextureAsset(U"dragon");
	Texture dice[6] = { TextureAsset(U"d1"),TextureAsset(U"d2"),TextureAsset(U"d3"),
						TextureAsset(U"d4"),TextureAsset(U"d5"),TextureAsset(U"d6"), };
	//プレイ画面
	//FontAsset(U"TFONT")(U"プレイ中").drawAt(Scene::Center(), Palette::Aliceblue);
	dragon.resized(32, 32).draw(50, 50);
	//for (int i = 0; i < 6; i++)
	//{
	//	dice[i].resized(64, 64).draw(100 + i * 64, 200);
	//}
	if (FontAsset(U"TFONT")(U"START").drawAt(Scene::Center(), Palette::Aliceblue).leftClicked())
	{
		isPushButton = false;
	}
	if (FontAsset(U"TFONT")(U"STOP").drawAt({ Scene::Center().x,Scene::Center().y + FontAsset(U"TFONT").fontSize() }, Palette::Orangered).leftClicked())
	{
		isPushButton = true;
 
	}
	if (isPushButton == false)
	{
		diceNum = rand() % 6;
		dice[diceNum].resized(64, 64).draw(100 + 64, 150);
	}
	else
	{
		dice[diceNum].resized(64, 64).draw(100 + 64, 150);
	}
 
	if (MouseL.down()) {
		count++;
		if (count > 20)
		{
			state = GAMESTATE::GAMEOVER;
		}
	}
	Print << U"count=" << count;
}
 
void ShowGameOverScnene(GAMESTATE& state) {
	//ゲームオーバー画面
	FontAsset(U"TFONT")(U"GAME OVER").drawAt(Scene::Center(), Palette::Red);
}
 
void InitGame()
{
	count = 0;
	isPushButton = false;
	diceNum = 0;
 
}
 
void Main()
{
	//関数などのブロック{}の中で宣言された変数
	//ローカル変数(局所変数)
	const Vec2 IMG_SIZE = { 32,32 };
	const Vec2 SCREEN_SIZE = { Scene::Width(), Scene::Height() };
	srand((unsigned int)time(nullptr));
 
	// 背景の色を設定する | Set the background color
	Scene::SetBackground(ColorF{ 0.6, 0.8, 0.7 });
 
	// 絵文字からテクスチャを作成する | Create a texture from an emoji
	//const Texture emoji{ U"🦖"_emoji };
	TextureAsset::Register(U"dragon", U"🦖"_emoji);
	TextureAsset::Register(U"d1", U"d1.png");
	TextureAsset::Register(U"d2", U"d2.png");
	TextureAsset::Register(U"d3", U"d3.png");
	TextureAsset::Register(U"d4", U"d4.png");
	TextureAsset::Register(U"d5", U"d5.png");
	TextureAsset::Register(U"d6", U"d6.png");
 
 
	//const Font titlefont{ 60, Typeface::Heavy };
	FontAsset::Register(U"TFONT", 60, Typeface::Heavy); //fontアセットに登録
	FontAsset::Register(U"GFONT", 30, Typeface::Light); //fontアセットに登録
 
 
 
	//Texture sai = Texture(U"d1.png");
	GAMESTATE gameState = GAMESTATE::TITLE;//ステートをタイトルで初期化
	InitGame();
	while (System::Update())
	{
		if (MouseL.down()) {
			//count++;
			//Print << count;
			switch (gameState)
			{
			case TITLE:
				InitGame();
				gameState = GAMESTATE::PLAY;
				break;
			case PLAY:
				//gameState = GAMESTATE::GAMEOVER;
				break;
			case GAMEOVER:
				gameState = GAMESTATE::TITLE;
				break;
			default:
 
				break;
			}
		}
 
 
		switch (gameState)
		{
		case TITLE:
			ShowTitleScnene(gameState);
			break;
		case PLAY:
			ShowPlayScnene(gameState);
			break;
		case GAMEOVER:
			ShowGameOverScnene(gameState);
			break;
		default:
			ShowTitleScnene(gameState);
			break;
		}
 
		//sai.resized(IMG_SIZE).draw(SCREEN_SIZE.x/2 -IMG_SIZE.x/2, SCREEN_SIZE.y/2 - IMG_SIZE.y /2);
	}
}
  • game-engineer/classes/2023/game-programing-1/first-term/6/06-21-5.txt
  • 最終更新: 3年前
  • by root