【发布时间】:2014-02-12 15:11:28
【问题描述】:
我只是想制作一个简单的两人游戏。第一个玩家进入电影,第二个玩家使用一些基本的 C++ 猜测它。
movie[] = entered by player 1.
movie_temp[]= a temp array with '_' in it. It updates after every guess by player 2.
我的问题:请参考我调用函数movie_check()的主要函数。
这会在每次猜测后更新生活。我希望我的movie_temp array 也能发生同样的事情。
当我运行这个程序时,只有生命值被正确更新,正确猜测的生命值不会减少,但接下来array_temp 不会更新,并且在每次加油后一次又一次地显示相同的数组。
请帮助我创建一个有助于返回数组并将其保存在movie_temp 中的函数(就像我一生所做的那样)。
IDE:代码::块 编译器:GCC 编译器
#include<iostream.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#include<conio.h>
void display_movie(char movie_temp[], int);
void display_life(int);
int win_player2(char movie_temp[]);
int check_life(char movie[], char, int);
void display_movie(char movie_temp[], int len)
{
for(int i=0 ; i<len ; i++)
cout<<movie_temp[i];
}
void display_life(int life)
{
for(int i=0 ; i<=life ; i++)
cout<<"\3";
}
int check_life(char movie[], char ch, int life)
{
int count1=0;
for(int i=0 ; movie[i]!='\0' ; i++)
{
if(movie[i]==ch)
count1++;
}
if(count1==0)
return --life;
else
return life;
}
int win_player2(char movie_temp[])
{
int count=0;
for(int i=0 ; movie_temp[i]!='\0' ; i++)
{
if(movie_temp[i]=='_')
count++;
}
if(count==0)
return 0;
else
return 1;
}
int main()
{
char movie[100], movie_temp[100], ch;
cout<<"Enter the movie: ";
cin.getline(movie,100);
int len= strlen(movie);
system("cls");
for(int i=0 ; movie[i]!='\0' ; i++)
{
if(movie[i]=='a' || movie[i]=='e' || movie[i]=='i' || movie[i]=='o' ||
movie[i]=='u' || movie[i]==' ')
movie_temp[i]= movie[i];
else
movie_temp[i]='_';
}
int life=9;
cout<<"\nLives left: ";
display_life(life);
while(life!=0 || win_player2(movie_temp)!=0)
{
cout<<"\n";
display_movie(movie_temp, len);
cout<<"\nEnter your guess: ";
cin>>ch;
life=check_life(movie, ch, life);
cout<<"\n\nLives left: ";
display_life(life);
}
getch();
return 0;
}
enter code here
【问题讨论】:
-
使用
std::string会容易得多。 -
如果您使用 conio.h,为什么不直接使用
clrscr()而不是system("cls")? -
看起来更像是 C 趋向于 C++。除了
cout和cin之外,一切似乎都是C。使用C++ 结构让你的生活更轻松。 -
紧跟在
return life;之后的count1=0;是无法访问的代码(它也是多余的,因为它只在count1 == 0首先执行)。一定要提高你的警告级别来捕捉这样的东西。 -
@lazygeek 如果你所学习的任何东西都没有提到 std::string,我建议你 pick up a good book 并学习如何使用你正在使用的语言的特性。
标签: c++ arrays function return-value