前提・実現したいこと
フラグが立ったら、スロットのところの数字をそろわせたい
ここで乱数によるフラグ管理
C++
#pragma once #include<iostream> #include<set> #include<random> #include"Checkbet.h" void count(int hantei) { std::set<unsigned int> s; std::random_device rnd; bool flag = false; for (int i = 0; i < 10; i++) { unsigned int r = rnd() % 250 + 1;//rを乱数とします if (!s.insert(r).second)flag = true; } if (flag) { printf("当たったよ\n", hantei); } else { printf("当たってないよ\n", hantei); } return; }
#pragma once #include <stdio.h> bool endCheck() { //入力用変数 int input = 0; //終了確認用変数(trueでゲーム終了、falseでゲームを続ける) bool end = false; //画面に表示する内容 printf("\n"); printf("スロットを続けますか?\n"); printf("1. 続ける 2.やめる\n"); //入力の受けつけ scanf_s("%d", &input); //数字に応じて条件を切りかえる if (input == 1) { end = false; } else if (input == 2) { end = true; } else { printf("選択肢以外の数字が入力されたのでゲームを終了します\n"); end = true; } //変数endの内容をメインに返す return end; }
#pragma once #include <stdio.h> void printOwnMoney(int money) { //画面のUI printf("\n"); printf("スロットゲーム\n"); printf("===================\n"); printf("|所持金 : %dコイン\n", money); return; }
#pragma once #include<iostream> #include<set> #include<random> #include"Checkbet.h" void count(int hantei) { std::set<unsigned int> s; std::random_device rnd; bool flag = false; for (int i = 0; i < 10; i++) { unsigned int r = rnd() % 250 + 1;//rを乱数とします if (!s.insert(r).second)flag = true; } if (flag) { printf("当たったよ\n", hantei); } else { printf("当たってないよ\n", hantei); } return; }
#pragma once #include <stdio.h> #include"Randcount.h" int kaiten = -1; int checkBet() { int bet; //回転数加算 kaiten++; printf("現在の回転数は:%d\n", kaiten); //掛け金のUI printf("\n"); printf("掛け金を入力してください(数字)\n"); //掛け金の入力 scanf_s("%d", &bet); printf("\n"); printf("掛け金 :%d\n", bet); return bet; }
#pragma once #include <stdio.h> #include <stdlib.h> void showSlotUI(int bet, int slotNum[3]) { system("cls"); printf("\n"); printf("・掛け金:%dコイン\n", bet); printf("■===■===■===■\n"); printf("■ %d ■ %d ■ %d ■\n", slotNum[0] + 1, slotNum[1] + 1, slotNum[2] + 1); return; }
#pragma once #include <stdio.h> #include <stdlib.h> #include "Showslot.h" #include "Checkslot.h" int stopSlotAndGetMoney(int bet) { int const slotNum = 3; int maxNumber = 8; int slotContent[slotNum]; for (int i = 0; i < slotNum; i++) { slotContent[i] = -1; } int input = 0; for (int i = 0; i < slotNum; i++) { showSlotUI(bet, slotContent); printf("数字を入力してストップ\n"); scanf_s("%d", &input); slotContent[i] = rand() % maxNumber; } showSlotUI(bet, slotContent); bet = checkSlotAndCalcMoney(bet, slotContent); return bet; }
C++
int main() { //所持金の変数 int money = 1000; //賭け金の変数 int bet = 0; int hantei = 0; //ゲームが終了するかの条件用の変数 bool isEnd = false; while (isEnd == false) { //所持金を表示 printOwnMoney(money); count(hantei); //賭け金を設定する関数 bet = checkBet(); //掛け金が所持金以内かどうかで分岐 if (bet <= money) { //スロットを開始して所持金を変動させる money += stopSlotAndGetMoney(bet); } else { printf("所持金より多い金額は賭けられません。"); } //ゲームを続けるかどうかを確認する isEnd = endCheck(); } //今は入力で止めるために使用 printf("\n"); printf("数字を入力して終了します。"); scanf_s("%d", &bet); return 0; }
スロットでの数字表示
C++
1#pragma once 2#include <stdio.h> 3#include"Checkbet.h" 4#include"Randcount.h" 5 6int checkSlotAndCalcMoney(int bet, int num[3]) 7{ 8 9 if (num[0] == num[1] && num[1] == num[2]) { 10 bet = 10 * bet * (num[0] + 1); 11 12 printf("当たり\n"); 13 printf("%dコイン増えました\n", bet); 14 kaiten = -1; 15 } 16 else { 17 printf("残念"); 18 printf("%dコイン減りました\n", bet); 19 20 bet = -bet; 21 } 22 return bet; 23}
試したこと
フラグ(ture)になったときに、スロットの数字のところで数字を揃うようにしたいです
補足情報(FW/ツールのバージョンなど)
ちなみに投稿主は全然C++を触ったことはなく、独学で一からサイトとうあさりながら作りました。
現在投稿しているのが、作っているスクリプトです。
void count(int hantei) は何がしたいのか...さっぱりわからん。
count() の flag が true になったら、checkSlotAndCalcMoney()にわたす num[3] の中身をどうにかしたい、ということでしょうか?
count()とcheckSlotAndCalcMoney()を呼ぶコードも開示してください。
コードを見るに「`num`」がスロットの表示盤と思われます。
> 表示盤の実装がなくて、`flag`がtrueのときに`num`の数字が揃うような処理の書き方がわからない。
ということでしょうかね。
「hantei」の意図が不明ですが、思うに
```cpp
bool flag = false; // 本当はグローバルなのか、count関数の返り値なのでは?(命名的には違いそうだが)
int bet;
int num[3];
void main(){
bet = 1;
count();
if(flag){ /* numが[1,1,1]などおなじ値3つになる処理 */ }
else { /* numが[1,2,5]など別の値3つになる処理 */ }
checkSlotAndCalcMoney(bet,num);
}
```
のようなコードで、コメントにした分岐の部分がわからないということか。
int32_t氏の言うように、呼び出し元と、実装のわからないところを明記しないとなんも答えられないでしょうね。
回答2件
あなたの回答
tips
プレビュー