Здравствуйте, я новичок в c, и в настоящее время я учусь по учебной программе университета, поэтому мне нужно соблюдать эти правила: мы не можем использовать массивы или глобальные переменные.
Итак, я ' мы пытались сделать игру в кости под названием "большая свинья". Я сейчас создаю функцию, которую компьютер собирается использовать для игры, под названием «play_computer ()». Существует также функция с именем computer_strategy_decider (). Computer_strategy_decider () должна выбирать да или нет. Я только что сделал функцию rand, которая вызывает 1 или 2, чтобы заставить это работать. Play_computer () позволяет вам выбрать две кубики, и оттуда нужно вычислить счет. Если вы выберете только один, ваш счет не увеличится, и ваша игра будет прекращена. Если вы добавите два, вы получите 25 добавленных. Если вы получаете любое другое двойное значение, например, добавляется, например, (a + a) * 2 или 4 * a. И, наконец, если вы получите два случайных числа, компьютер решит, хочет ли он продолжить. Вот где приходит computer_strategy_decider () ..
Проблема заключается в функции play_computer (). Кажется, все работает хорошо, когда компьютер выдает два разных значения и не продолжает работу. Это заканчивается нормально. Но если он хочет продолжить, он уходит в бесконечное число l oop. Бесконечный l oop также имеет те же значения кости. То же самое l oop происходит, когда выпадают двойники. Что-то в моем коде некорректно. Я не знаю, связано ли это с rand () или нет. Я не думаю, что это rand (), так как я использую rand () на computer_strategy_decider (). Моя теория, надеюсь, что-то маленькое, что я пропустил.
Мой код работал час go, прежде чем я добавил некоторые изменения, поэтому я разочарован, хаха.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
int computer_strategy_decider(){
int deci;
srand(time(NULL));
deci=1+ (int) rand() % 2;
return deci;}
int play_computer(round_number,strategy){
int roll_1,roll_2,cntrl_var=0,score_comp=0;
char answ;
printf("\nRound %d-- My Turn:",round_number);printf("\n---------------------------------");
while(cntrl_var==0){
srand(time(NULL));
roll_1 = 1 + (int) rand() % 6;
roll_2 = 1 + (int) rand() % 6;
printf("\nI got --> [Dice 1]: %d [Dice 2]: %d",roll_1,roll_2);
if(roll_1==roll_2 && roll_1!=1){
score_comp=score_comp+roll_1*4;
printf("\nScore: %d",score_comp);printf("\nDoubles! Roll again!");}
else if(roll_1==1 && roll_2==1){
score_comp=score_comp+25;
printf("\nScore: %d",score_comp);printf("\nDoubles! Roll again!");}
else if(roll_1==1 || roll_2==1){
cntrl_var=1;
printf("\nYou got a single one! End of your turn!");}
else{
score_comp=score_comp+roll_1+roll_2;
printf("\nScore: %d",score_comp);
while(cntrl_var==0){
printf("\nDo you want to continue (Y/N)?");
if (strategy==1){
printf("Y");
break;}
else if (strategy==2){
printf("N");
break;}}
if (strategy==1)
cntrl_var=0;
else if (strategy==2)
cntrl_var=1;
else
cntrl_var=0;}}
printf("\nMy Score: %d",score_comp);
return score_comp;}
int main(){
int round_no=1,deci;
deci=computer_strategy_decider();
play_computer(round_no,deci);
}