井子棋实验报告_第1页
井子棋实验报告_第2页
井子棋实验报告_第3页
井子棋实验报告_第4页
井子棋实验报告_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEword文档可自由复制编辑数学计算机科学学院实验报告专业名称12级软件工程实验室2号实验楼201室实验课程程序设计实验课实验名称井子棋实验目的制作出一个井子棋游戏,可以人机互动实验原理1)c程序设计编程环境visual

c++,掌握运行一个c程序设计的基本步骤,包括编辑、编译、连接和运行。2)熟练掌握Visual

C++

6.0环境运行的C程序上机步骤3)数据类型、常量和变量的使用4)表达式及运算符的应用5)C程序的调试。需求分析判断每个键入数值的合理情况输入1-9共九个数字,已经被占领的数字不可再输入计算机可以根据人所走的地点和计算机之前走过的地点确定下一步的位置概要设计选择人机顺序选择人机顺序人先行机器先行人先行机器先行人机交替人机交替判断赢家判断赢家详细设计#include"jziqi.h"statusmain(){ Hello();//简洁的界面设计 statusi,l=0,set; printf("请输入你想进行的操作:1.开局,0退出\n"); scanf("%d",&i); system("CLS"); while(i==1)//进行开局选项 { printf("请选择游戏难度:0.困难1.简单");//困难按分高下棋,简单按分低下棋 scanf("%d",&set);//选择游戏难度 if(set==0) { statuschoose,flag;//存储用户选择(落子),决定谁先走 Start(); //初始化游戏 table();//打印游戏界面 printf("决定谁先走:用户0,计算机1\n"); scanf("%d",&flag); //由用户选择先手 system("CLS");//清屏操作 if(flag==0) { //用户先手 printf("亲,轮到你了'0'\n"); printf("落子:"); scanf("%d",&choose);//用户选择落子位置 People(choose);//用户 table(); system("pause");//暂停系统的编译,为了看到之前的界面 while(1) { if(GameOver()) //每次用户落子后,都要游戏是否结束,结束就退出 { system("CLS"); printf("游戏结束\n"); IsWin(); //在游戏结束后,开始判定赢家或平局 return0; } system("CLS"); //清屏操作,为了不在一个界面处打印电脑的操作界面 printf("计算机在下'X',稍等\n"); Computer();//计算机下棋的函数 table(); system("pause"); //暂停系统的编译,为了看到之前的界面 if(GameOver()) //每次用户落子后,都要游戏是否结束,结束就退出 { system("CLS"); printf("游戏结束\n"); IsWin(); //在游戏结束后,开始判定赢家或平局 return0; } printf("亲,轮到你了'0'\n"); printf("落子:"); scanf("%d",&choose);//用户选择落子位置 People(choose);//用户 system("CLS"); //清屏操作,为了不在一个界面处打印下一轮用户的操作 table(); system("pause");//暂停系统的编译,为了看到之前的界面 if(GameOver()) { system("CLS"); printf("游戏结束\n"); IsWin(); return0; } }//while }//人先手操作 elseif(flag==1) { //计算机先手 while(1) { printf("计算机在下'X',稍等\n"); Computer();//计算机 table(); system("pause"); if(GameOver()) { system("CLS"); printf("游戏结束\n"); IsWin(); return0; } printf("亲,轮到你了'0'\n"); printf("落子:"); scanf("%d",&choose); People(choose);//用户 system("CLS"); table(); system("pause"); system("CLS"); if(GameOver()) { system("CLS"); printf("游戏结束\n"); IsWin(); return0; } }//while }//计算机先手下棋操作 else return0; } elseif(set==1) { statuschoose,flag;//存储用户选择(落子),决定谁先走 Start(); //初始化游戏 table();//打印游戏界面 printf("决定谁先走:用户0,计算机1\n"); scanf("%d",&flag); //由用户选择先手system("CLS");//清屏操作 if(flag==0) { //用户先手 printf("亲,轮到你了'0'\n"); printf("落子:"); scanf("%d",&choose);//用户选择落子位置 People(choose);//用户 table(); system("pause");//暂停系统的编译,为了看到之前的界面 while(1) { if(GameOver()) //每次用户落子后,都要游戏是否结束,结束就退出 { system("CLS"); printf("游戏结束\n"); IsWin(); //在游戏结束后,开始判定赢家或平局 return0; } system("CLS"); //清屏操作,为了不在一个界面处打印电脑的操作界面 printf("计算机在下'X',稍等\n"); Computer_1();//计算机下棋的函数 table(); system("pause"); //暂停系统的编译,为了看到之前的界面 if(GameOver()) //每次用户落子后,都要游戏是否结束,结束就退出 { system("CLS"); printf("游戏结束\n"); IsWin(); //在游戏结束后,开始判定赢家或平局 return0; } printf("亲,轮到你了'0'\n"); printf("落子:"); scanf("%d",&choose);//用户选择落子位置 People(choose);//用户 system("CLS"); //清屏操作,为了不在一个界面处打印下一轮用户的操作 table(); system("pause");//暂停系统的编译,为了看到之前的界面 if(GameOver()) { system("CLS"); printf("游戏结束\n"); IsWin(); return0; } }//while }//人先手操作 elseif(flag==1) { //计算机先手 while(1) { printf("计算机在下'X',稍等\n"); Computer_1();//计算机 table(); system("pause"); if(GameOver()) { system("CLS"); printf("游戏结束\n"); IsWin(); return0; } printf("亲,轮到你了'0'\n"); printf("落子:"); scanf("%d",&choose); People(choose);//用户 system("CLS"); table(); system("pause"); system("CLS"); if(GameOver()) { system("CLS"); printf("游戏结束\n"); IsWin(); return0; } }//while }//计算机先手下棋操作 else return0; } else return0; }//while游戏结束,退出 return0;}//main头文件:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<windows.h>#defineTrue1#defineFalse0typedefintstatus;structNineQ//九宫格结构体{ intscore;//记录当前格子的分值 charface;//记录当前格子的状态(*、o或空)};voidtable();//游戏界面voidStart();//初始化statusPeople(statuschoose);//用户下棋statusComputer();//计算机下棋(困难)statusComputer_1();//计算机下棋(简单)statusGeziEmpty(statusside);//判断当前格子是否为空statusGameOver();//判断游戏是否结束statusBoardFull();//判断棋盘是否已满statusHu_Man();//人赢statusCom_puter();//电脑赢voidIsWin();//判断谁赢statusHello();//弹出对话框下棋位置算法程序:#include"jziqi.h"structNineQQ[10];//1~9为九个格子(宏定义)voidtable()//游戏界面{ printf("_________________________\n"); printf("||||\n"); printf("|%c|%c|%c|\n",Q[1].face,Q[2].face,Q[3].face);//分别对应格子1、2、3的落子情况 printf("||||\n"); printf("\n"); printf("||||\n"); printf("|%c|%c|%c|\n",Q[4].face,Q[5].face,Q[6].face);//分别对应格子4、5、6的落子情况 printf("||||\n"); printf("\n"); printf("||||\n"); printf("|%c|%c|%c|\n",Q[7].face,Q[8].face,Q[9].face);//分别对应格子7、8、9的落子情况 printf("||||\n"); printf("_________________________\n\n");}voidStart()//初始化,打印游戏界面{ statusi; Q[0].score=0; for(i=1;i<10;i++) { Q[i].face=''; Q[i].score=0; }}statusPeople(statuschoose)//用户下棋{ while(GeziEmpty(choose))//当格子不为空时(满),用户重新从键盘获取一次输入 { printf("满了,下别处吧\n"); printf("\a"); //提示信息,若落子位置重复,发出响声 printf("亲,重新落子\n");//将用户下棋重新来一遍 printf("落子:"); scanf("%d",&choose); } Q[choose].face='0'; //当用户按任意数字键时,对应的数字键界面处打印出‘0’ //统计数字键界面每个格的分数,用于计算机下棋的算法 return1;}statusComputer()//计算机下棋{ inti,t=0,num[10],l=0; for(i=0;i<10;i++) num[i]=0; for(i=1;i<10;i++) { switch(i) { case1: if(Q[2].face=='X'&&Q[3].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判断1格子是否加‘XX’ if(Q[2].face=='0'&&Q[3].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判断1格子是否加‘00’ if((Q[2].face=='X'&&Q[3].face=='')||(Q[2].face==''&&Q[3].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[7].face=='')||(Q[4].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[9].face=='')||(Q[5].face==''&&Q[9].face=='X')) Q[i].score+=10; //判断1格子是否加‘X空’ if((Q[2].face=='0'&&Q[3].face=='')||(Q[2].face==''&&Q[3].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[7].face=='')||(Q[4].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[9].face=='')||(Q[5].face==''&&Q[9].face=='0')) Q[i].score+=8; //判断1格子是否加‘0空’ if((Q[2].face=='X'&&Q[3].face=='0')||(Q[2].face=='0'&&Q[3].face=='X')) Q[i].score+=0; if((Q[4].face=='0'&&Q[7].face=='0')||(Q[4].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[5].face=='0'&&Q[9].face=='0')||(Q[5].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判断1格子是否加‘X0’ if(Q[2].face==''&&Q[3].face=='') Q[i].score+=4; if(Q[4].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[9].face=='') Q[i].score+=4; //判断1格子是否加‘空空’ break; case2: if(Q[1].face=='X'&&Q[3].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[8].face=='X') Q[i].score+=50; //判断2格子是否加‘XX’ if(Q[1].face=='0'&&Q[3].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[8].face=='0') Q[i].score+=25; //判断2格子是否加‘00’ if((Q[1].face=='X'&&Q[3].face=='')||(Q[1].face==''&&Q[3].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[8].face=='')||(Q[5].face==''&&Q[8].face=='X')) Q[i].score+=10; //判断2格子是否加‘X空’ if((Q[1].face=='0'&&Q[3].face=='')||(Q[1].face==''&&Q[3].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[8].face=='')||(Q[5].face==''&&Q[8].face=='0')) Q[i].score+=8; //判断2格子是否加‘0空’ if((Q[1].face=='X'&&Q[3].face=='0')||(Q[1].face=='0'&&Q[3].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[8].face=='0')||(Q[5].face=='0'&&Q[8].face=='X')) Q[i].score+=0; //判断2格子是否加‘X0’if(Q[1].face==''&&Q[3].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[8].face=='') Q[i].score+=4; //判断2格子是否加‘空空 break; case3: if(Q[1].face=='X'&&Q[2].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[6].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判断3格子是否加‘XX’ if(Q[1].face=='0'&&Q[2].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[6].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判断3格子是否加‘00’ if((Q[1].face=='X'&&Q[2].face=='')||(Q[1].face==''&&Q[2].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[7].face=='')||(Q[5].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[6].face=='X'&&Q[9].face=='')||(Q[6].face==''&&Q[9].face=='X')) Q[i].score+=10; //判断3格子是否加‘X空’ if((Q[1].face=='0'&&Q[2].face=='')||(Q[1].face==''&&Q[2].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[7].face=='')||(Q[5].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[6].face=='0'&&Q[9].face=='')||(Q[6].face==''&&Q[9].face=='0')) Q[i].score+=8; //判断3格子是否加‘0空’ if((Q[1].face=='X'&&Q[2].face=='0')||(Q[1].face=='0'&&Q[2].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[7].face=='0')||(Q[5].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[6].face=='X'&&Q[9].face=='0')||(Q[6].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判断3格子是否加‘X0’ if(Q[1].face==''&&Q[2].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[6].face==''&&Q[9].face=='') Q[i].score+=4; //判断3格子是否加‘空空’ break; case4: if(Q[1].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[6].face=='X') Q[i].score+=50; //判断4格子是否加‘XX’ if(Q[1].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[6].face=='0') Q[i].score+=25; //判断4格子是否加‘00’ if((Q[1].face=='X'&&Q[7].face=='')||(Q[1].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[6].face=='')||(Q[5].face==''&&Q[6].face=='X')) Q[i].score+=10; //判断4格子是否加‘X空’ if((Q[1].face=='0'&&Q[7].face=='')||(Q[1].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[6].face=='')||(Q[5].face==''&&Q[6].face=='0')) Q[i].score+=8; //判断4格子是否加‘0空’ if((Q[1].face=='X'&&Q[7].face=='0')||(Q[1].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[6].face=='0')||(Q[5].face=='0'&&Q[6].face=='X')) Q[i].score+=0; //判断4格子是否加‘X0’if(Q[1].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[6].face=='') Q[i].score+=4; //判断4格子是否加‘空空 break; case5: if(Q[1].face=='X'&&Q[9].face=='X') Q[i].score+=50; if(Q[2].face=='X'&&Q[8].face=='X') Q[i].score+=50; if(Q[3].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[6].face=='X') Q[i].score+=50; //判断5格子是否加‘XX’ if(Q[1].face=='0'&&Q[9].face=='0') Q[i].score+=25; if(Q[2].face=='0'&&Q[8].face=='0') Q[i].score+=25; if(Q[3].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[6].face=='0') Q[i].score+=25; //判断5格子是否加‘00’ if((Q[1].face=='X'&&Q[9].face=='')||(Q[1].face==''&&Q[9].face=='X')) Q[i].score+=10; if((Q[2].face=='X'&&Q[8].face=='')||(Q[2].face==''&&Q[8].face=='X')) Q[i].score+=10; if((Q[3].face=='X'&&Q[7].face=='')||(Q[3].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[6].face=='')||(Q[4].face==''&&Q[6].face=='X')) Q[i].score+=10; //判断5格子是否加‘X空’ if((Q[1].face=='0'&&Q[9].face=='')||(Q[1].face==''&&Q[9].face=='0')) Q[i].score+=8; if((Q[2].face=='0'&&Q[8].face=='')||(Q[2].face==''&&Q[8].face=='0')) Q[i].score+=8; if((Q[3].face=='0'&&Q[7].face=='')||(Q[3].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[6].face=='')||(Q[4].face==''&&Q[6].face=='0')) Q[i].score+=8; //判断5格子是否加‘0空’ if((Q[1].face=='X'&&Q[9].face=='0')||(Q[1].face=='0'&&Q[9].face=='X')) Q[i].score+=0; if((Q[2].face=='X'&&Q[8].face=='0')||(Q[2].face=='0'&&Q[8].face=='X')) Q[i].score+=0; if((Q[3].face=='X'&&Q[7].face=='0')||(Q[3].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[4].face=='X'&&Q[6].face=='0')||(Q[4].face=='0'&&Q[6].face=='X')) Q[i].score+=0; //判断5格子是否加‘X0’ if(Q[1].face==''&&Q[9].face=='') Q[i].score+=4; if(Q[2].face==''&&Q[8].face=='') Q[i].score+=4; if(Q[3].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[4].face==''&&Q[6].face=='') Q[i].score+=4; //判断5格子是否加‘空空’ break; case6: if(Q[3].face=='X'&&Q[9].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[5].face=='X') Q[i].score+=50; //判断6格子是否加‘XX’ if(Q[3].face=='0'&&Q[9].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[5].face=='0') Q[i].score+=25; //判断6格子是否加‘00’ if((Q[3].face=='X'&&Q[9].face=='')||(Q[3].face==''&&Q[9].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[5].face=='')||(Q[4].face==''&&Q[5].face=='X')) Q[i].score+=10; //判断6格子是否加‘X空’ if((Q[3].face=='0'&&Q[9].face=='')||(Q[3].face==''&&Q[9].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[5].face=='')||(Q[4].face==''&&Q[5].face=='0')) Q[i].score+=8; //判断6格子是否加‘0空’ if((Q[3].face=='X'&&Q[9].face=='0')||(Q[3].face=='0'&&Q[9].face=='X')) Q[i].score+=0; if((Q[4].face=='X'&&Q[5].face=='0')||(Q[4].face=='0'&&Q[5].face=='X')) Q[i].score+=0; //判断6格子是否加‘X0’if(Q[3].face==''&&Q[9].face=='') Q[i].score+=4; if(Q[4].face==''&&Q[5].face=='') Q[i].score+=4; //判断6格子是否加‘空空 break; case7: if(Q[1].face=='X'&&Q[4].face=='X') Q[i].score+=50; if(Q[3].face=='X'&&Q[5].face=='X') Q[i].score+=50; if(Q[8].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判断7格子是否加‘XX’ if(Q[1].face=='0'&&Q[4].face=='0') Q[i].score+=25; if(Q[3].face=='0'&&Q[5].face=='0') Q[i].score+=25; if(Q[8].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判断7格子是否加‘00’ if((Q[1].face=='X'&&Q[4].face=='')||(Q[1].face==''&&Q[4].face=='X')) Q[i].score+=10; if((Q[3].face=='X'&&Q[5].face=='')||(Q[3].face==''&&Q[5].face=='X')) Q[i].score+=10; if((Q[8].face=='X'&&Q[9].face=='')||(Q[6].face==''&&Q[9].face=='X')) Q[i].score+=10; //判断7格子是否加‘X空’ if((Q[1].face=='0'&&Q[4].face=='')||(Q[1].face==''&&Q[4].face=='0')) Q[i].score+=8; if((Q[3].face=='0'&&Q[5].face=='')||(Q[3].face==''&&Q[5].face=='0')) Q[i].score+=8; if((Q[8].face=='0'&&Q[9].face=='')||(Q[8].face==''&&Q[9].face=='0')) Q[i].score+=8; //判断7格子是否加‘0空’ if((Q[1].face=='X'&&Q[4].face=='0')||(Q[1].face=='0'&&Q[4].face=='X')) Q[i].score+=0; if((Q[3].face=='X'&&Q[5].face=='0')||(Q[3].face=='0'&&Q[5].face=='X')) Q[i].score+=0; if((Q[8].face=='X'&&Q[9].face=='0')||(Q[8].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判断7格子是否加‘X0’ if(Q[1].face==''&&Q[4].face=='') Q[i].score+=4; if(Q[3].face==''&&Q[5].face=='') Q[i].score+=4; if(Q[8].face==''&&Q[9].face=='') Q[i].score+=4; //判断7格子是否加‘空空’ break; case8: if(Q[2].face=='X'&&Q[5].face=='X') Q[i].score+=50; if(Q[7].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判断8格子是否加‘XX’ if(Q[2].face=='0'&&Q[5].face=='0') Q[i].score+=25; if(Q[7].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判断8格子是否加‘00’ if((Q[2].face=='X'&&Q[5].face=='')||(Q[2].face==''&&Q[5].face=='X')) Q[i].score+=10; if((Q[7].face=='X'&&Q[9].face=='')||(Q[7].face==''&&Q[9].face=='X')) Q[i].score+=10; //判断8格子是否加‘X空’ if((Q[2].face=='0'&&Q[5].face=='')||(Q[2].face==''&&Q[5].face=='0')) Q[i].score+=8; if((Q[7].face=='0'&&Q[9].face=='')||(Q[7].face==''&&Q[9].face=='0')) Q[i].score+=8; //判断8格子是否加‘0空’ if((Q[2].face=='X'&&Q[5].face=='0')||(Q[2].face=='0'&&Q[5].face=='X')) Q[i].score+=0; if((Q[7].face=='X'&&Q[9].face=='0')||(Q[7].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判断6格子是否加‘X0’if(Q[2].face==''&&Q[5].face=='') Q[i].score+=4; if(Q[7].face==''&&Q[9].face=='') Q[i].score+=4; //判断6格子是否加‘空空 break; case9: if(Q[1].face=='X'&&Q[5].face=='X') Q[i].score+=50; if(Q[3].face=='X'&&Q[6].face=='X') Q[i].score+=50; if(Q[7].face=='X'&&Q[8].face=='X') Q[i].score+=50; //判断9格子是否加‘XX’ if(Q[1].face=='0'&&Q[5].face=='0') Q[i].score+=25; if(Q[3].face=='0'&&Q[6].face=='0') Q[i].score+=25; if(Q[7].face=='0'&&Q[8].face=='0') Q[i].score+=25; //判断9格子是否加‘00’ if((Q[1].face=='X'&&Q[5].face=='')||(Q[1].face==''&&Q[5].face=='X')) Q[i].score+=10; if((Q[3].face=='X'&&Q[6].face=='')||(Q[3].face==''&&Q[6].face=='X')) Q[i].score+=10; if((Q[7].face=='X'&&Q[8].face=='')||(Q[7].face==''&&Q[8].face=='X')) Q[i].score+=10; //判断9格子是否加‘X空’ if((Q[1].face=='0'&&Q[5].face=='')||(Q[1].face==''&&Q[5].face=='0')) Q[i].score+=8; if((Q[3].face=='0'&&Q[6].face=='')||(Q[3].face==''&&Q[6].face=='0')) Q[i].score+=8; if((Q[7].face=='0'&&Q[8].face=='')||(Q[7].face==''&&Q[8].face=='0')) Q[i].score+=8; //判断9格子是否加‘0空’ if((Q[1].face=='X'&&Q[5].face=='0')||(Q[1].face=='0'&&Q[5].face=='X')) Q[i].score+=0; if((Q[3].face=='X'&&Q[6].face=='0')||(Q[3].face=='0'&&Q[6].face=='X')) Q[i].score+=0; if((Q[7].face=='X'&&Q[8].face=='0')||(Q[7].face=='0'&&Q[8].face=='X')) Q[i].score+=0; //判断9格子是否加‘X0’ if(Q[1].face==''&&Q[5].face=='') Q[i].score+=4; if(Q[3].face==''&&Q[6].face=='') Q[i].score+=4; if(Q[7].face==''&&Q[8].face=='') Q[i].score+=4; //判断9格子是否加‘空空’ break; }} for(i=1;i<10;i++) { if(!GeziEmpty(i))//找出当前格子为空的位置 num[t++]=i; //用数组存储位置 } for(i=0;i<=t;i++) //找出当前格子为空的,分数最高的位置 {// printf("输出当前空位%d",num[i]);// printf("当前对应的分数%d",Q[num[i]].score);// printf("\n"); if(Q[num[i]].score>Q[0].score) { Q[0].score=Q[num[i]].score; l=num[i]; } } Q[0].score=0; Q[l].face='X'; //计算机在分数最高的位置下棋 printf("\n计算机下在第%d格\n",l); printf("计算机当前格的分数%d\n",Q[l].score);for(i=0;i<10;i++){ Q[i].score=0;}return1;}statusGeziEmpty(statusside)//判断当前所下的格子是否为空{ if(Q[side].face!='') //当前格子为满 return1; return0; //当前格子为空}statusHu_Man()//人赢{ statusi,j; for(j=0;j<2;j++) {if(Q[3*j+1].face=='0'&&Q[3*j+2].face=='0'&&Q[3*j+3].face=='0')//行连成三子,Q[1]Q[2]Q[3],Q[4]Q[5]Q[6],Q[7]Q[8]Q[9]分别判断连三子 returnTrue;} for(i=1;i<=3;i++) if(Q[i].face=='0'&&Q[i+3].face=='0'&&Q[i+6].face=='0')//列连成三子,Q[1]Q[4]Q[7],Q[2]Q[5]Q[8],Q[3]Q[6]Q[9]分别判断连三子 returnTrue; if((Q[1].face=='0'&&Q[5].face=='0'&&Q[9].face=='0')||(Q[3].face=='0'&&Q[5].face=='0'&&Q[7].face=='0'))//两条对角线连成三子 returnTrue; returnFalse;// return0;}statusCom_puter()//计算机赢{ statusi,j; for(j=0;j<2;j++) { if(Q[3*j+1].face=='X'&&Q[3*j+2].face=='X'&&Q[3*j+3].face=='X')//行连成三子,Q[1]Q[2]Q[3],Q[4]Q[5]Q[6],Q[7]Q[8]Q[9]分别判断连三子 returnTrue;} for(i=1;i<=3;i++) if(Q[i].face=='X'&&Q[i+3].face=='X'&&Q[i+6].face=='X')//列连成三子,Q[1]Q[4]Q[7],Q[2]Q[5]Q[8],Q[3]Q[6]Q[9]分别判断连三子 returnTrue; if((Q[1].face=='X'&&Q[5].face=='X'&&Q[9].face=='X')||(Q[3].face=='X'&&Q[5].face=='X'&&Q[7].face=='X'))//两条对角线连成三子 returnTrue; returnFalse;// return0;}statusBoardFull()//判断棋盘是否已满{ statusi; for(i=1;i<10;i++) { if(Q[i].face=='')//九个格子中至少有一个为空,没满的情况 returnFalse; } returnTrue;// return0;}statusGameOver()//判断游戏是否结束{ if(!Com_puter()&&!Hu_Man()&&!BoardFull())//电脑没赢,人没赢并且棋盘不为空的情况,即游戏还在进行 return0; return1;} voidIsWin()//判断谁赢{ if(Com_puter()) printf("Computerwins!\n");//游戏结束,电脑赢了 else if(Hu_Man()) printf("Hunmanwins!\n"); //游戏结束,人赢了 else if(BoardFull()) printf("Boardisfull!平局\n");//游戏结束,平局 }statusComputer_1()//计算机下棋{ inti,t=0,num[10],l=0; for(i=0;i<10;i++) num[i]=0; for(i=1;i<10;i++) { switch(i) { case1: if(Q[2].face=='X'&&Q[3].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判断1格子是否加‘XX’ if(Q[2].face=='0'&&Q[3].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判断1格子是否加‘00’ if((Q[2].face=='X'&&Q[3].face=='')||(Q[2].face==''&&Q[3].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[7].face=='')||(Q[4].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[9].face=='')||(Q[5].face==''&&Q[9].face=='X')) Q[i].score+=10; //判断1格子是否加‘X空’ if((Q[2].face=='0'&&Q[3].face=='')||(Q[2].face==''&&Q[3].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[7].face=='')||(Q[4].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[9].face=='')||(Q[5].face==''&&Q[9].face=='0')) Q[i].score+=8; //判断1格子是否加‘0空’ if((Q[2].face=='X'&&Q[3].face=='0')||(Q[2].face=='0'&&Q[3].face=='X')) Q[i].score+=0; if((Q[4].face=='0'&&Q[7].face=='0')||(Q[4].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[5].face=='0'&&Q[9].face=='0')||(Q[5].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判断1格子是否加‘X0’ if(Q[2].face==''&&Q[3].face=='') Q[i].score+=4; if(Q[4].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[9].face=='') Q[i].score+=4; //判断1格子是否加‘空空’ break; case2: if(Q[1].face=='X'&&Q[3].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[8].face=='X') Q[i].score+=50; //判断2格子是否加‘XX’ if(Q[1].face=='0'&&Q[3].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[8].face=='0') Q[i].score+=25; //判断2格子是否加‘00’ if((Q[1].face=='X'&&Q[3].face=='')||(Q[1].face==''&&Q[3].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[8].face=='')||(Q[5].face==''&&Q[8].face=='X')) Q[i].score+=10; //判断2格子是否加‘X空’ if((Q[1].face=='0'&&Q[3].face=='')||(Q[1].face==''&&Q[3].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[8].face=='')||(Q[5].face==''&&Q[8].face=='0')) Q[i].score+=8; //判断2格子是否加‘0空’ if((Q[1].face=='X'&&Q[3].face=='0')||(Q[1].face=='0'&&Q[3].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[8].face=='0')||(Q[5].face=='0'&&Q[8].face=='X')) Q[i].score+=0; //判断2格子是否加‘X0’if(Q[1].face==''&&Q[3].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[8].face=='') Q[i].score+=4; //判断2格子是否加‘空空 break; case3: if(Q[1].face=='X'&&Q[2].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[6].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判断3格子是否加‘XX’ if(Q[1].face=='0'&&Q[2].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[6].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判断3格子是否加‘00’ if((Q[1].face=='X'&&Q[2].face=='')||(Q[1].face==''&&Q[2].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[7].face=='')||(Q[5].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[6].face=='X'&&Q[9].face=='')||(Q[6].face==''&&Q[9].face=='X')) Q[i].score+=10; //判断3格子是否加‘X空’ if((Q[1].face=='0'&&Q[2].face=='')||(Q[1].face==''&&Q[2].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[7].face=='')||(Q[5].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[6].face=='0'&&Q[9].face=='')||(Q[6].face==''&&Q[9].face=='0')) Q[i].score+=8; //判断3格子是否加‘0空’ if((Q[1].face=='X'&&Q[2].face=='0')||(Q[1].face=='0'&&Q[2].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[7].face=='0')||(Q[5].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[6].face=='X'&&Q[9].face=='0')||(Q[6].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判断3格子是否加‘X0’ if(Q[1].face==''&&Q[2].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[6].face==''&&Q[9].face=='') Q[i].score+=4; //判断3格子是否加‘空空’ break; case4: if(Q[1].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[6].face=='X') Q[i].score+=50; //判断4格子是否加‘XX’ if(Q[1].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[6].face=='0') Q[i].score+=25; //判断4格子是否加‘00’ if((Q[1].face=='X'&&Q[7].face=='')||(Q[1].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[6].face=='')||(Q[5].face==''&&Q[6].face=='X')) Q[i].score+=10; //判断4格子是否加‘X空’ if((Q[1].face=='0'&&Q[7].face=='')||(Q[1].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[6].face=='')||(Q[5].face==''&&Q[6].face=='0')) Q[i].score+=8; //判断4格子是否加‘0空’ if((Q[1].face=='X'&&Q[7].face=='0')||(Q[1].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[6].face=='0')||(Q[5].face=='0'&&Q[6].face=='X')) Q[i].score+=0; //判断4格子是否加‘X0’if(Q[1].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[6].face=='') Q[i].score+=4; //判断4格子是否加‘空空 break; case5: if(Q[1].face=='X'&&Q[9].face=='X') Q[i].score+=50; if(Q[2].face=='X'&&Q[8].face=='X') Q[i].score+=50; if(Q[3].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[6].face=='X') Q[i].score+=50; //判断5格子是否加‘XX’ if(Q[1].face=='0'&&Q[9].face=='0') Q[i].score+=25; if(Q[2].face=='0'&&Q[8].face=='0') Q[i].score+=25; if(Q[3].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[6].face=='0') Q[i].score+=25; //判断5格子是否加‘00’ if((Q[1].face=='X'&&Q[9].face=='')||(Q[1].face==''&&Q[9].face=='X')) Q[i].score+=10; if((Q[2].face=='X'&&Q[8].face=='')||(Q[2].face==''&&Q[8].face=='X')) Q[i].score+=10; if((Q[3].face=='X'&&Q[7].face=='')||(Q[3].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[6].face=='')||(Q[4].face==''&&Q[6].face=='X')) Q[i].score+=10; //判断5格子是否加‘X空’ if((Q[1].face=='0'&&Q[9].face=='')||(Q[1].face==''&&Q[9].face=='0')) Q[i].score+=8; if((Q[2].face=='0'&&Q[8].face=='')||(Q[2].face==''&&Q[8].face=='0')) Q[i].score+=8; if((Q[3].face=='0'&&Q[7].face=='')||(Q[3].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[6].face=='')||(Q[4].face==''&&Q[6].face=='0')) Q[i].score+=8; //判断5格子是否加‘0空’ if((Q[1].face=='X'&&Q[9].face=='0')||(Q[1].face=='0'&&Q[9].face=='X')) Q[i].score+=0; if((Q[2].face=='X'&&Q[8].face=='0')||(Q[2].face=='0'&&Q[8].face=='X')) Q[i].score+=0; if((Q[3].face=='X'&&Q[7].face=='0')||(Q[3].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[4].face=='X'&&Q[6].face=='0')||(Q[4].face=='0'&&Q[6].face=='X')) Q[i].score+=0; //判断5格子是否加‘X0’ if(Q[1].face==''&&Q[9].face=='') Q[i].score+=4; if(Q[2].face==''&&Q[8].face=='') Q[i].score+=4; if(Q[3].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[4].face==''&&Q[6].face=='') Q[i].score+=4; //判断5格子是否加‘空空’ break; case6: if(Q[3].face=='X'&&Q[9].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[5].face=='X') Q[i].score+=50; //判断6格子是否加‘XX’ if(Q[3].face=='0'&&Q[9].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[5].face=='0') Q[i].score+=25; //判断6格子是否加‘00’ if((Q[3].face=='X'&&Q[9].face=='')||(Q[3].face==''&&Q[9].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[5].face=='')||(Q[4].face==''&&Q[5].face=='X')) Q[i].score+=10; //判断6格子是否加‘X空’ if((Q[3].face=='0'&&Q[9].face=='')||(Q[3].face==''&&Q[9].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[5].face=='')||(Q[4].face==''&&Q[5].face=='0')) Q[i].score+=8; //判断6格子是否加‘0空’ if((Q[3].face=='X'&&Q[9].face=='0')||(Q[3].face=='0'&&Q[9].face=='X')) Q[i].score+=0; if((Q[4].face=='X'&&Q[5].face=='0')||(Q[4].face=='0'&&Q[5].face=='X')) Q[i].score+=0; //判断6格子是否加‘X0’if(Q[3].face==''&&Q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论