c++switch实现猜拳_编写猜拳游戏程序-C语言-C/C++-程序代码库-The program code library...

C++猜单词的游戏

可能有点帮助

猜单词

#include 

#include 

#include 

#include 

using namespace std;

class wordobj

{

public:

wordobj(){};

~wordobj(){};

bool getWord();

void selectWord();

const string& getSelWord();

bool isRight(char ch, int index);

private:

vector svec;

int _size;

string _selectedWord;

char ch;

};

bool wordobj::getWord()

{

_size = 0;

ifstream infile("txt.txt");

if (!infile)

{

cout <

return false;

}

else

{

string word;

while (infile >> word)

{

svec.push_back(word);

}

_size = svec.size();

return true;

}

}

void wordobj::selectWord()

{

srand(_size);

int index = rand() % _size;

_selectedWord = svec[index];

cout <

for (int i = 0; i != _selectedWord.size(); ++i)

{

cout <

}

cout <

}

bool wordobj::isRight(char ch, int index)

{

return ch == _selectedWord[index];

}

const string& wordobj::getSelWord()

{

return _selectedWord;

}

int main()

{

wordobj wdj;

wdj.getWord();

wdj.selectWord();

int count = 0;

char ch;

cout <

while (count 

{

cin >> ch;

if(!wdj.isRight(ch, count))

{

cout <

continue;

}

else

{

if ((count + 1) == wdj.getSelWord().size())

{

break;

}

cout <

count ++;

}

}

cout <

return 0;

}

C++大学教程中有一个掷骰子的程序,跟你的要求一模一样,只不过是名字不同。

研究怎么提高电脑的胜率才有意义.

利用人的惯性,比如有人习惯出剪刀.

有人习惯再布后面跟锤子等等.

根据前几次出拳的规律,去猜测下次会出什么,这个人工智能倒是比较有意义的.

#include 

#include 

void main()

{

int use;

int computer;

char select;

do

{

printf("请出拳1.  2.  3.\n");

scanf("%d",&use);

switch(use)

{

case 1:printf("你出的是石头\n");

break;

case 2:printf("你出的是剪刀\n");

break;

case 3:printf("你出的是布\n");

break;

default:printf("你出错了\n");

}

computer=rand()%3+1;

switch(computer)

{

case 1:printf("电脑出的是石头\n");

break;

case 2:printf("电脑出的是剪刀\n");

break;

case 3:printf("电脑出的是布\n");

break;

default:printf("电脑出错了\n");

}

if((use==1&&computer==2)||(use==2&&computer==3)||(use==3&&computer==1))

{

printf("你赢了\n");

}

if((use==1&&computer==1)||(use==2&&computer==2)||(use==3&&computer==3))

{

printf("你赢了\n");

}

if((use==1&&computer==3)||(use==2&&computer==1)||(use==3&&computer==2))

{

printf("你输了\n");

}

printf("是否退出游戏 y/n \n");

select=getchar();

}while(select=='y');

}

我自己写的,为什么循环不起来啊?? 请高手指点

循环起来了,只是有一点儿问题

比如说

请出拳1.  2.  3.

1                                   ----这里你按下了按键'1'和按键回车

----按键'1'被scanf读入到use中,但是

----回车仍然在输入缓冲区内

你出的是石头

电脑出的是布

你输了

是否退出游戏 y/n

_                                   ----此处你在等待输入y或者n,但是

----上面输入缓冲区中还有一个回车键,所以下面的

----getchar()直接就读入了这个回车键

----使得select='\10'

----显然select!='y'程序直接推出

解决方案

fflush(stdin);//清除输入缓冲区中的所有未读取数据

printf("是否退出游戏 y/n \n");

select=getchar();

还有,你的第一个switch的default应该有一个continue,应为用户输入错误,就应该让他重新输入,而不是将错就错,这是基本的处理逻辑

请出拳1.  2.  3.

1

你出的是石头

电脑出的是布

你输了

是否退出游戏 y/n

_

有没有完整点的,用函数写的代码啊,《fflush(stdin);//清除输入缓冲区中的所有未读取数据》老师没教过,还是不用了

static int me,comp;

while(1)

{

scanf("%d\n",&me);

if(me==1||me==2||me==3)

continue;

comp=random()/3;

switch(me)

{

case 1:

if(comp==2)

printf("you win\n");

else if(com==3)

printf("you lose\n");

else

printf("fair\n");

break;

case 2:

...

case 3:

...

default:

break;

}

}

#include 

#include 

void use()

{

int a;

printf("请出拳1.  2.  3.\n");

scanf("%d",&a);

switch(a)

{

case 1:printf("你出的是石头\n");

break;

case 2:printf("你出的是剪刀\n");

break;

case 3:printf("你出的是布\n");

break;

default:printf("你出错了\n");

}

}

void computer()

{

int b;

b=rand()%3+1;

switch(b)

{

case 1:printf("电脑出的是石头\n");

break;

case 2:printf("电脑出的是剪刀\n");

break;

case 3:printf("电脑出的是布\n");

break;

default:printf("电脑出错了\n");

}

}

void win_lost()

{

int a,b;

if((a==1&&b==2)||(a==2&&b==3)||(a==3&&b==1))

{

printf("你赢了\n");

}

if((a==1&&b==1)||(a==2&&b==2)||(a==3&&b==3))

{

printf("你赢了\n");

}

if((a==1&&b==3)||(a==2&&b==1)||(a==3&&b==2))

{

printf("你输了\n");

}

}

void main()

{

char select;

do

{

use();

computer();

win_lost();

printf("是否退出游戏 y/n \n");

select=getchar();

}while(select=='y'||select=='Y');

}

我自己又重新用函数做了个,生成不报错,运行会报错,望高手指点啊!!

#include

void game()

{

int com=1+rand()%(3-1);

int you;

printf("这是一个剪刀,石头,布的电脑游戏!\n请选择你的出拳:\n1.石头\n2.剪刀\n3.布");

scanf("%d",&you);

switch(you)

{

case 1:

switch(com)

{

case 1:

printf("你出的是石头,电脑出的也是石头!你们是平局!\n");

break;

case 2:

printf("你出的是石头,电脑出的是剪刀!你赢了!\n");

break;

case 3:

printf("你出的是石头,电脑出的是布!你输了!\n");

break;

}

case 2:

switch(com)

{

case 1:

printf("你出的是剪刀,电脑出的是石头!你输了!\n");

break;

case 2:

printf("你出的是剪刀,电脑出的也是剪刀!你们是平局!\n");

break;

case 3:

printf("你出的是剪刀,电脑出的是布!你赢了!\n");

}

case 3:

switch(com)

{

case 1:

printf("你出的是布,电脑出的是石头!你赢了!\n");

break;

case 2:

printf("你出的是布,电脑出的是剪刀!你输了!\n");

break;

case 3:

printf("你出的是布,电脑出的也是不!你们是平局!\n");

}

default:

printf("你的输入不符合要求!请重试!\n");

}

}

void main()

{

char again;

do

{

game();

printf("是否继续(Y/N)?\n");

scanf("%c",&again);

getchar();

}

while (again=='y'||again=='Y');

}

楼上的,看看题目啊

1、          定义程序中使用的变量。

2、          接受用户出拳,使用函数完成用户出拳的功能。

3、          完成电脑出拳,使用函数完成电脑出拳的功能。

4、          判断胜负,使用函数完成判断胜负的功能。

5、          进行循环判断。

要做三个函数啊,还有高手能基于我那个帮我指点一下阿

#include

#include

int UserInput ()

{

int user;

printf("请选择你的出拳!\n1.石头2.剪刀3.布\n");

scanf("%d",&user);

return user;

}

int CompuInput()

{

int com=rand()%3+1;

return com;

}

int IsWin(int user,int com)

{

int flag;

if (com-user==-1||com-user==2)

{

flag=1;

return flag;

}

if (com-user==-2||com-user==1)

{

flag=-1;

return flag;

}

if (com==user)

{

flag=0;

return flag;

}

}

void main()

{

printf("这是一个和电脑进行的猜拳游戏!\n");

int user;

int com;

int flag;

char goon;

do

{

user=UserInput();

com=CompuInput();

flag=IsWin(user,com);

if (flag==1)

{

printf("你输了!电脑赢了!\n");

}

if (flag==-1)

{

printf("恭喜你!你赢了!\n");

}

if (flag==0)

{

printf("你们是平局!\n");

}

getchar();

printf("是否继续(Y/N)?");

scanf("%c",&goon);

}

while (goon=='y'||goon=='Y');

}

这下你看看是不是根据你的要求来做了呢?

楼上的比较好懂些!

你可能感兴趣的:(c++switch实现猜拳)