#include<iostream>
#include<cstdlib>
#include<time.h>
#include<ctime>
#include<iomanip>
using namespace std;
const int End=70; //constant fixed integer for the entire game.
void MoveTurtoise (int *);
void MoveHare (int *);
void PrintPosition (int *, int*);
int main()
{
int Tortoise = 1;
int Hare = 1;
int Time = 0;
srand(time(0));
cout<<"BANG!!!!!\n"
<<"AND THEY'RE OFF !!!!!\n";
while(Tortoise != End && Hare != End)
{
srand(time(0));
MoveTurtoise (&Tortoise);
MoveHare (&Hare);
PrintPosition (&Tortoise,&Hare);
Time++;
}
if (Tortoise==Hare)
cout<<"It's a tie."<<endl;
else if (Tortoise>Hare)
cout<<"Tortoise wins."<<endl;
else if (Hare>Tortoise)
cout<<"Hare wins."<<endl;
system("PAUSE");
return 0;
}
void MoveTurtoise (int *Tortoise)
{
srand(time(0));
int p = 1+ rand()%10; // 1 <= i <= 10
if (1<=p && p<=5) //Fast plod
Tortoise+=3; //3 squares right
else if (p>=6 && p<=7) //Slip
Tortoise-=6;//6 squares left
else //Slow plod
++Tortoise; //1 square right
if (*Tortoise<1)
*Tortoise=1;
}
void MoveHare (int *Hare)
{
srand(time(0));
int p = 1+ rand()%10; // 1 <= p <= 10
if (1<= p && p<=2); //Sleep
//No move
else if (p>=3 && p<=4) //Big hop
Hare+=9;//9 squares right
else if (p==5) //Big Slip
Hare-=12;// 12 squares left
else if (p>=6 && p<=8) // Small hop
++Hare;// 1 square right
else if (p>=9 && p<=10)// Small Slip
Hare-=2; // 2 squares left
if (*Hare<1)
*Hare=1;
}
void PrintPosition (int *Tortoise, int *Hare)
{
if (Tortoise==Hare)
cout<<"OUCH!!!"<<endl;
else if (Tortoise<Hare)
{
cout<<setw(*Tortoise)<<"T"<<endl;
cout<<setw(Hare-Tortoise)<<"H"<<endl;
}
else if (Hare<Tortoise)
{
cout<<setw(Tortoise-Hare)<<"T"<<endl;
cout<<setw(*Hare)<<"H"<<endl;
}
}
Hello all. Я просто сделал код для игры Tortoise и Hare в C++. У меня возникла проблема с поиском того, что приводит к тому, что моя программа «не завершается». Это продолжается и продолжается с таким же результатом. Я предполагаю, что существует ошибка цикла и неправильное использование srand() .. но я до сих пор не знаю ...Окончательный выпуск модели черепах и зайцев
Вы пробовали отладить его? Увеличиваются ли «Черепаха» и «Заяц»? Достигают ли они 70? Более 70? –
Я отлаживал, и все, что я вижу, было T и H, повторяющееся с тем же результатом. – user3543568
Я не думаю, что вам нужно использовать 'srand' в каждой функции. Просто используйте его один раз в 'main' и удалите' srand' в цикле, так как у вас уже есть его. –