c语言,怎样用鼠标控制,用c语言编写一个可以用鼠标控制的五子棋程序

用c语言编写一个可以用鼠标控制的五子棋程序

答案:1  信息版本:手机版

解决时间 2021-05-17 03:18

已解决

2021-05-16 20:31

用c语言编写一个可以用鼠标控制的五子棋程序

最佳答案

2021-05-16 21:30

#include

#include

#include

#include

#include

#include

#define SHURU 1

#define FANGXIANG 2

#define WUXIAO 0

#define TUICHU 3

static int ii=0,jj=0,wanjia=1;

void hqp(int a[][20],int y);

int anjian(char an);

int panduan(int a[][20]);

void pingmu(void);

void guangbiaoyd(char an);

void jh(int a[][20]);

void main()

{

int a[20][20]={0},tuichu=0,ying;

char an;

hqp(a,0);

pingmu();

while(1)

{

ying=panduan(a);

if(ying!=0)

hqp(a,ying);

an=getch();

switch(anjian(an))

{

case TUICHU:clrscr();

tuichu=1;

break;

case FANGXIANG:guangbiaoyd(an);

break;

case SHURU: switch(ying)

{

case 1:hqp(a,1);tuichu=1;break;

case 2:hqp(a,2);tuichu=1;break;

case 0:jh(a);break;

}

break;

case WUXIAO:break;

}

hqp(a,0);

pingmu();

if(tuichu==1)

break;

}

}

void hqp(int a[][20],int y)

{

int i,j;

clrscr();

if(y!=0)

{

textcolor(RED);

printf("WAN JIA %d SHENG LI! ! ! ! ! \n",y);

}

for(i=0;i<20;i++)

{

for(j=0;j<20;j++)

{

switch(a[i][j])

{

case 1: textcolor(YELLOW);

putch('X');

break;

case 2: textcolor(BLUE);

putch('0');

break;

case 0: textcolor(GREEN);

if(j==0)

{

if(i==0)

{

putch(0xda);

break;

}

if(i==19)

{

putch(0xc0);

break;

}

putch(0xc3);

break;

}

if(j==19)

{

if(i==0)

{

putch(0xbf);

break;

}

if(i==19)

{

putch(0xd9);

break;

}

putch(0xb4);

break;

}

if(i==0&&j!=0&&j!=19)

{

putch(0xc2);

break;

}

if(i==19&&j!=0&&j!=19)

{

putch(0xc1);

break;

}

putch(0xc5);

break;

}

}

printf("\n");

}

}

int anjian(char an)

{

if(an==32||an==13)

return(SHURU);

else

if(an=='a'||an=='w'||an=='s'||an=='d'||

an=='j'||an=='i'||an=='k'||an=='l')

return(FANGXIANG);

else

if(an==27)

return(TUICHU);

else

return(WUXIAO);

}

int panduan(int a[][20])

{

int i,j;

for(i=0;i<20;i++)

{

for(j=0;j<15;j++)

{

if(a[i][j]==1&&a[i][j+1]==1&&a[i][j+2]==1&&a[i][j+3]==1&&a[i][j+4]==1)

return(1);

else

if(a[i][j]==2&&a[i][j+1]==2&&a[i][j+2]==2&&a[i][j+3]==2&&a[i][j+4]==2)

return(2);

}

}

for(i=0;i<15;i++)

{

for(j=0;j<20;j++)

{

if(a[i][j]==1&&a[i+1][j]==1&&a[i+2][j]==1&&a[i+3][j]==1&&a[i+4][j]==1)

return(1);

else

if(a[i][j]==2&&a[i+1][j]==2&&a[i+2][j]==2&&a[i+3][j]==2&&a[i+4][j]==2)

return(2);

}

}

for(i=0;i<15;i++)

{

for(j=0;j<15;j++)

{

if(a[i][j]==1&&a[i+1][j+1]==1&&a[i+2][j+2]==1&&a[i+3][j+3]==1&&a[i+4][j+4]==1)

return(1);

else

if(a[i][j]==2&&a[i+1][j+1]==2&&a[i+2][j+2]==2&&a[i+3][j+3]==2&&a[i+4][j+4]==2)

return(2);

}

}

for(i=4;i<20;i++)

{

for(j=4;j<20;j++)

{

if(a[i][j]==1&&a[i-1][j-1]==1&&a[i-2][j-2]==1&&a[i-3][j-3]==1&&a[i-4][j-4]==1)

return(1);

else

if(a[i][j]==2&&a[i-1][j-1]==2&&a[i-2][j-2]==2&&a[i-3][j-3]==2&&a[i-4][j-4]==2)

return(2);

}

}

return(0);

}

void pingmu(void)

{

int i,j;

char *Msg[]=

{

"Wan Jia1 an jian:",

" shang:    w",

" xia:    s",

" zuo:    a",

" you:    d",

" fang zi:  space",

"",

"Wan Jia2 an jian:",

" shang:    i",

" xia:    k",

" zuo:    j",

" you:    l",

" fang zi:  ENTER",

"tui chu:",

" ESC\n",

NULL,

};

i=0;

textcolor(RED);

while(Msg[i]!=NULL)

{

gotoxy(25,3+i);

cputs(Msg[i]);

i++;

}

gotoxy(25,20);

printf("\nqing wan jia %d chu ru:",wanjia);

gotoxy(jj+1,ii+1);

}

void guangbiaoyd(char an)

{

if(wanjia==1)

{

switch(an)

{

case 'a': jj--;break;

case 'd': jj++;break;

case 'w': ii--;break;

case 's': ii++;break;

}

}

else

{

switch(an)

{

case 'j': jj--;break;

case 'l': jj++;break;

case 'i': ii--;break;

case 'k': ii++;break;

}

}

if(ii<0)

ii++;

if(ii>19)

ii--;

if(jj<0)

jj++;

if(jj>19)

jj--;

gotoxy(ii+1,jj+1);

}

void jh(int a[][20])

{

int k=0;

if(wanjia==1&&a[ii][jj]==0&&k==0)

{

a[ii][jj]=1;

wanjia=2;

k=1;

}

else

{

if(a[ii][jj]==0&&k==0)

{

a[ii][jj]=2;

wanjia=1;

}

}

}

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
题目:五子棋对弈 对弈规则如下: 主要功能是实现两人之间的对弈,在画好的棋盘上,两个玩家轮流选择自己的落子坐标,然后由五子棋系统自动识别判断游戏的进展,知道一方的五子连成一条线或者棋盘已经无法落子时游戏结束。 选定五子棋的棋盘大小为19*19,玩家可以在这个棋盘上选择落子坐标位置,通过在棋盘上显示不同的符号来代替不同玩家所下的棋子,“o”代表A玩家,“*”代表B玩家。玩家每次落子之后游戏系统都会对落子位置进行检查,如果落子坐标输入有错应提示错误,并要求玩家继续输入。 当出现同一玩家五子连成一线时,无论是行、列或是对角线的五子连线,都表示玩家游戏胜利,退出游戏 任务:编程实现以下功能 1. 欢迎主界面 提示玩家选择游戏开始,结束,设置悔棋次数等。 2. 绘制棋盘 该模块要求的功能是实现棋盘的显示及棋子的显示,,“o”代表A玩家,“*”代表B玩家。在每次下棋后要对棋盘进行刷新,将棋盘的状态变化为当前最新状态,然后等待另一个玩家下棋。 3. 玩家交替下棋 玩家能在棋盘上下棋,玩家每次选择好下棋的行和列坐标,并在该位置落子。 要求:a.提示当前玩家输入落子坐标 b.能判断用户输入的坐标是否正确(坐标超出范围或该处已有棋子) 4. 悔棋功能 玩家选择悔棋后刷新棋盘,删除前一次的落子,悔棋次数有限制。 5. 输赢判断 判断输赢模块的作用是每次玩家落子后判断是否已分出胜负,如果是,则返回胜利者相关信息。 6. 设计丰富的用户界面,方便用户操作 设计要求: ① 根据以上功能需求,自己定义合适的数据结构,并说明原因; ② 每个功能能提供友好的用户界面,方便用户操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值