2014-03-26 3 views
-2

플레이어 A 롤 m 주사위, 플레이어 B는 m +1 주사위를 굴립니다. 플레이어 A가 을 굴리고 n이 이고 플레이어 B가 을 굴림이면 > b 인 경우 플레이어 A가 승리합니다. 그렇지 않으면 플레이어 A는 m 주사위 점 k 까지 굴림 (다시 표시되지 않는 숫자는 n) 롤백합니다. 만약> B '이들의 이 N의 다음 플레이어 A는 경우 + 에 WINS이다'. a + a '< = b이면 플레이어 B가 승리합니다.C++ 2 플레이어 주사위 게임

그래서 내가 쓴 것이 맞는지 궁금합니다. 다음과 함께 :

m, k 및 q의 각 값에 대해 10000 번 프로그램을 실행하고 플레이어 B가이긴 횟수를 계산합니다. 이와 함께 m, k 및 q의 다른 값을 통해 값을 각각 10, 10, 15로 루프 할 수 있기를 원합니다.

#include <iostream> 
#include <stdio.h> // NULL 
#include <stdlib.h> // srand, rand 
#include <time.h> // time 
#include <fstream> 
using namespace std; 

void cheddar(); 

int main(){ 
    cheddar(); 
} 

void cheddar(){ 
    int m = 3; 
    int n = 6; 
    int k = 1; 
    int q = 6; 
    int dicerolledA = m; 
    int dicerolledB = m+1; 
    int dicererolled = k; 
    int diceA[20]; 
    int diceB[20]; 
    int countnA = 0; 
    int countnB = 0; 
    int awins = 0; 
    int bwins = 0; 
    int totalcount = 1; 
    srand(time(0)); 
    //while (totalcount <= 10000){ 
    for(int i=dicerolledA-1;i>=0;i--){ 
     diceA[i]=rand()%q+1; 
     //cout << diceA[i] << ' '; 
     if (diceA[i] == n){ 
     countnA++; 
     } 
    } 
    //cout << endl; 
    for(int i=dicerolledB-1;i>=0;i--){ 
     diceB[i]=rand()%q+1; 
     //cout << diceB[i] << ' '; 
     if (diceB[i] == 6){ 
     countnB++; 
     } 
    } 
    //cout << endl; 
    if(countnB >= countnA){ 
     for(int i=dicererolled-1;i>=0;i--){ 
     diceA[i] = rand()%q+1; 
     //cout << diceA[i]; 
     if(diceA[i] == n){ 
      countnA++; 
     } 
     } 
     //cout << endl; 
     if(countnB >= countnA){ 
     bwins++; 
     } 
     else{ 
     awins++; 
     } 
    } 
    else if (countnA > countnB){ 
     awins++; 
    } 
    totalcount++; 
    dicerolledA = m; 
    dicerolledB = m+1; 
    dicererolled = k; 
    countnA = 0; 
    countnB = 0; 
    //} 
    cout << bwins << ' '; 
    awins = 0; 
    bwins = 0; 
    totalcount = 1; 
} 
+3

그래서 당신은 프로그램을 작성하고 그것이 무엇을 할 것인지 궁금합니다. 그냥 실행하지 않는 이유는 무엇입니까? 아니면 당신이 그것을 실행하는 경우, 당신이 고칠 필요가 (헐떡 거림) 버그가있을 수 있습니다 두려워합니까? – PaulMcKenzie

+0

아니, 다양한 m, k 및 q 변수에 대한 프로그램을 루프하는 방법을 궁금합니다. 프로그램이 올바르게 실행됩니다. – hockeynl

+1

'나는 쓴 글이 맞는지 궁금합니다. '이것이 무슨 뜻입니까? – PaulMcKenzie

답변

2

먼저 필수 매개 변수가있는 cheddar() 함수를 만듭니다.

void cheddar(int m, int k, int q); 
int main() 
{ 
    int mValue, kValue, qValue; 
    //... 
    cheddar(mValue, kValue, qValue); 
} 

void cheddar(int m, int k, int q) 
{ 
    // function 
} 

일단 함수 호출에 익숙해지면 다양한 값을 사용하여이 함수를 호출하는 루프를 작성하십시오.