最近文章更新
- 1966年生产的广州 珠江 SB6-2型 ..
- HD6870/6850全面评测,让你大饱眼..
- 百万现金刚入门 中国7大奢华私人..
- 罕见4G希捷酷鱼系类万转SCSI服务..
- IBM 6x86MX PR333 CPU
- 采用MC68000 CPU的进口老计算机主..
- 1989年IBM-XT机软驱
- BC3型饱和标准电池拆解
- JUKO ST
- Kingston 品牌的CPU
- YAMAHA 719
- intel 30线 内存条
- intel mmx cpu和主板
- 首款xHCI 1.0正式版标准USB 3.0控..
- 《极品飞车:地下狂飙》纹理MOD视..
- USB接口加扩展子卡:影驰神秘GTX..
- 阿里巴巴将发布浏览器 核心不是W..
- 黄仁勋大秀NVIDIA LOGO纹身
- Google Earth上的奇特卫星图片
- 开火!讯景限量版HD 5970详细测试..
相关文章链接
本类文章排行
最新新闻资讯
本周下载排行
- ArcSoft TotalMedia Theatre 3 P..
- Windows 7 Build 7600 16385 RTM..
- 《姗姗来迟软件光盘+飞扬PE工具箱..
- MSDN Windows 7 RTL 7600 Ultima..
- Windows 7 Home Premium (x86) -..
- Windows Virtual PC (x86) - (Mu..
- MSDN Windows 7 Language Pack X..
- Windows 7 Language Pack (x64) ..
- Windows 7 Starter (x86) - DVD ..
- Windows 7 Professional (x86) -..
- Windows 7 Language Pack (x86) ..
- Windows 7 Home Premium (x64) -..
- Windows XP Mode (x86, x64) - (..
- 7127.0.090507-1820_x86fre_clie..
- DMG2ISO
本月下载排行
- ArcSoft TotalMedia Theatre 3 P..
- Windows 7 Build 7600 16385 RTM..
- 《姗姗来迟软件光盘+飞扬PE工具箱..
- MSDN Windows 7 RTL 7600 Ultima..
- MSDN Windows 7 Language Pack X..
- Windows 7 Home Premium (x86) -..
- Windows 7 Language Pack (x64) ..
- Windows 7 Professional (x86) -..
- 7127.0.090507-1820_x86fre_clie..
- Windows 7 Professional (x64) -..
- Windows 7 Starter (x86) - DVD ..
- Windows Virtual PC (x86) - (Mu..
- Windows 7 Ultimate (x64) - DVD..
- Lenovo Windows 7 Ultimate OEM ..
- Windows 7 Home Premium (x64) -..
- 阅览次数: 文章来源: 网络 原文作者: 佚名 整理日期: 2009-11-30
C语言写的简单井字过三关(初学者入门版)
C语言写的简单井字过三关(初学者入门版)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
void prinf(void);/*这里负责输出与清屏*/
int judge_chess(void);/*判断棋局输赢,同时为电脑服务*/
int Computer_strategy(void);/*作为电脑攻防优先级*/
int compurter_think(void);/*电脑思考,实质是发生随机数*/
int a[9]={49,50,51,52,53,54,55,56,57};/*棋盘*/
int b_j=0,who=0; /*who为限制使用权限*/
struct computer_construe/*作为电脑判断用*/
{
int n;
int attack;
}b[8];
int main(void)
{
int scan,i,j=5;
char compurter_one;
prinf();
puts("电脑先下,请按y或Y,否则按其它键,默认电脑为X,用户黙认为O");
compurter_one=getchar();
if(compurter_one=='y'||compurter_one=='Y')/*电脑先下,按y,否则按其它键*/
{
compurter_think();
prinf();
j=4;
}
for(i=0;i<j;i++)
{
printf("\t\t\t\t\t\t输入时按数字:");
do{
scanf("%d",&scan);
if(scan<0||scan>9)
printf("请新重生输入");
}
while(scan<1||scan>9);
if(who==0)
who=1;
switch(scan)
{
case 1:scan=i;if(a[0]>='1'&&a[0]<='9')a[0]=79;else{--i;printf("己使用\n");}break;
case 2:scan=i;if(a[1]>='1'&&a[1]<='9')a[1]=79;else{--i;printf("己使用\n");}break;
case 3:scan=i;if(a[2]>='1'&&a[2]<='9')a[2]=79;else{--i;printf("己使用\n");}break;
case 4:scan=i;if(a[3]>='1'&&a[3]<='9')a[3]=79;else{--i;printf("己使用\n");}break;
case 5:scan=i;if(a[4]>='1'&&a[4]<='9')a[4]=79;else{--i;printf("己使用\n");}break;
case 6:scan=i;if(a[5]>='1'&&a[5]<='9')a[5]=79;else{--i;printf("己使用\n");}break;
case 7:scan=i;if(a[6]>='1'&&a[6]<='9')a[6]=79;else{--i;printf("己使用\n");}break;
case 8:scan=i;if(a[7]>='1'&&a[7]<='9')a[7]=79;else{--i;printf("己使用\n");}break;
case 9:scan=i;if(a[8]>='1'&&a[8]<='9')a[8]=79;else{--i;printf("己使用\n");}break;
}
if(scan==i)
{
if(!(judge_chess()))
if(Computer_strategy())
compurter_think();
who=0;
prinf();
if(judge_chess())
{
if(judge_chess()==3)
puts("YOU WIN");
else
puts("COM WIN");
break; }
}
scan=j;
}
if(scan==j)
puts("a draw in chess");/*和局*/
getch();
return 0;
}
void prinf(void)
{
int i;
system("cls");
for(i=0;i<7;i++)
puts("");
for(i=1;i<4;i++)
{
printf("\t\t\t %c | %c | %c \n",a[3*(i-1)],a[3*(i-1)+1],a[3*(i-1)+2]);
if(i!=3)
printf("\t\t\t_________________\n");}
}
int judge_chess(void)
{
int i,j,k,m,n,X,O;
for(i=1;i<4;i++)
{
k=0;X=0;O=0;
for(j=0;j<9;j++)
{
switch(i)
{
case 1:m=a[j];break;
case 2:m=a[j%3*3+k];break;
case 3:if(j<6) m=a[2*(2-k)*(j%3+k)];break;
}
switch(m)
{
case 'O':++O;break;
case 'X':--X;break;
default:
switch(i)
{
case 1:n=j;break;
case 2:n=j%3*3+k;break;
case 3:if(j<6) n=2*(2-k)*(j%3+k);break;
}
}
if(2==j%3)
{
m=O+X;
switch(m)
{
case 2:if(who){b[b_j].n=n;b[b_j].attack=-1;++b_j;}break;
case 3:return 3;break;
case -2:if(who){b[b_j].n=n;b[b_j].attack=1;++b_j;}break;
case -3:return -3;break;
}
++k;
X=0;
O=0;
}
}
if(i==3&&j>5)
return 0;
}
}
int Computer_strategy(void)/*电脑战略*/
{
int i;
for(i=0;i<b_j;i++)
if(b[i].attack==1&&a[b[i].n]!=88&&a[b[i].n]!=79)
{a[b[i].n]=88;
return 0;}
for(i=0;i<b_j;i++)
if(b[i].attack!=1&&a[b[i].n]!=88&&a[b[i].n]!=79)
{a[b[i].n]=88;
return 0;}
return 1;
}
int compurter_think(void)
{
int i,j,k=1,m=0;
srand(time(NULL));
do{
m=rand()%10;
if(m==0&&a[4]!=88&&a[4]!=79)
{a[4]=88;return 0;} }while(m==0);
for(j=0;j<9;j++)
for(i=0;i<9;i++)/*选译功能*/
if(a[i]>='1'&&a[i]<='9')
{if(k==m)
{a[i]=88;
return 0;
}
k++;
}
}