赋予程序判断和思维
利用经验来决定出拳的猜拳游戏程序示例
#include <stdio.h>
#include <stdlib.h>
void main() {
int human;
int prev=0;
int memory[3][3]={{0,0,0},{0,0,0},{0,0,0}};
int max;
int counter=0;
int computer;
srand(time(NULL));
while(-1){
printf("石头,,,剪刀,,,布!\n");
scanf("%d",&human);
if(human>=3||human<=-1)
break;
counter++;
if(counter<10)
computer=rand()%3;
else
max=0;
if(memory[prev][max]<memory[prev][1]) max=1;
if(memory[prev][max]<memory[prev][2]) max=2;
computer=(max+2)%3;
if(computer==0)
printf("机器出石头\n");
else if(computer==1)
printf("机器出剪刀\n");
else
printf("机器出布\n");
memory[prev][human]++;
prev=human;
}
return 0;
}
我们用数组memory保存了对手的出拳信息,数组索引0,1,2分别代表了石头,剪
刀,布。就记忆功能来说,计算机无疑比人强大很多,对程序进行一些改造,比如
使计算机记住“对手出石头胜利后会出剪刀,出石头输了接下来会出布”这些细节信
息,计算机会更擅长猜拳游戏。(数组改成memory[6][3],记录prev胜负信息)
根据思维模式来决定出拳的猜拳游戏程序示例
#include <stdio.h>
#include <stdlib.h>
int main() {
int pattern[2][4]={{0,0,2,1},{1,0,0,2}};
int lose=0;
int p=0;
int n=0;
int computer;
int human;
while(-1){
printf("石头,,,剪刀,,,布!\n");
scanf("%d",&human);
if(human<0||human>2)
break;
computer=pattern[p][n];
n=(n+1)%4;
if(computer==0)
printf("机器出石头\n");
else if(computer==1)
printf("机器出剪刀\n");
else
printf("机器出布\n");
if((human==0&&computer==1)||(human==1&&computer==2)||human==2&&computer==0)
lose++;
else
lose=0;
if(lose>=2){
p=(p+1)%2;
n=0;}
}
return 0;
}
运行该程序后,大家会察觉到“该计算机有自己的出拳方式”,接近人类的思维模式