2 helenxd Helenxd 于 2016.04.25 18:29 提问

c语言编写五子棋游戏,出错 5C

本人在意c语言编写老师布置的一项五子棋游戏的作业,编译运行通过,但是在打开的界面上无法绘制棋子,求大神解答!谢谢!
代码:
#include
#include
#include
//-------------------------------------------------
//画棋盘
void drawpane()
{
for(int i=50;i<=900;i+=50)
{
line(i,50,i,700);
}
for(int j=50;j<=700;j+=50)
{
line(50,j,900,j);
}

}
//----------------------------------------------------
//定义一个二维数组,里面存放棋子,白子为1,黑子为0
void Initq(int arr[14][18])
{
for(int i=0;i {
for(int j=0;j {
arr[i][j]=0;
}
}
}
//--------------------------------------------------
//画棋子,奇数画白子,偶数画黑子
void drawqizi(int arr[14][18])
{
MOUSEMSG m; //定义鼠标消息
int color=0;
while(1)
{
m=GetMouseMsg();//获取一条鼠标消息
if(WM_LBUTTONDOWN==m.uMsg)
{
color++;
int x=m.x;
int y=m.y;
if(1==color%2)
{
setcolor(0xffffff);
setfillstyle(0xffffff);
arr[x][y]=0;
}
else
{
setcolor(0);
setfillstyle(0);
arr[x][y]=1;
}
if(m.x>=100&&m.x<=900&&m.y>=100&&m.y<=700)
{
fillcircle((m.x+50)/50*50,(m.y+50)/50*50,20);
setfillstyle(0x0000ff);
}

    }
}

}
//-------------------------------------------------------
void check_win(int arr[14][18])
{
//判断横方向
MOUSEMSG m;
int x=m.x;
int y=m.y;
if( arr[x][y]==0&&arr[x-1][y]==0&&arr[x-2][y]==0&&arr[x-3][y]==0&&arr[x-4][y]==0)
{
printf("白子胜利!");

}
else if( arr[x][y]==0&&arr[x+1][y]==0&&arr[x+2][y]==0&&arr[x+3][y]==0&&arr[x+4][y]==0)
{
    printf("白子胜利!");

}
else if ( arr[x][y]==1&&arr[x+1][y]==1&&arr[x+2][y]==1&&arr[x+3][y]==1&&arr[x+4][y]==1)
{
    printf("黑子胜利!");

}
else if(arr[x][y]==1&&arr[x-1][y]==1&&arr[x-2][y]==1&&arr[x-3][y]==1&&arr[x-4][y]==1)
{
  printf("黑子胜利!");
}

}
int main()
{
int arr[14][18];

initgraph(1000,800,0);
setbkcolor(0x408030);
cleardevice();
RECT r={0,0,900,100};
drawtext("五子棋游戏",&r,DT_TOP);
drawpane();
drawqizi(arr);
bar3d(400,10,500,40,2,1);
Initq(arr);
check_win(arr);//棋盘大小14行18列
return 0;

}

3个回答

caozhy
caozhy   Ds   Rxr 2016.04.26 00:02
caozhy
caozhy   Ds   Rxr 2016.04.26 00:02
CSDNXIAOD
CSDNXIAOD   2016.04.25 18:32

用c语言代码编写的游戏“简易五子棋”
用c语言编写游戏
一个C语言编写的坦克大战游戏
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
用C语言编写的简单五子棋游戏
#include<math.h> #include<stdio.h> #define N 20 void welcome(); void initqipan(); void showqi(int i); void save(int p); void panduan(int p); void heqi(); void over(); int zouqihang(); int zouqilie(); /******************结构体*****************/ struct zuobiao { int x[N*N]; int y[N*N]; }weizhi[N*N]; /******************主函数*****************/ void main() { int p=0; welcome(); initqipan(); for(p=1;p<=N*N;p++) { if(p%2==0) weizhi[p].x[p]=weizhi[p-1].x[p-1]; else weizhi[p].x[p]=zouqihang(); if(p%2==0) weizhi[p].y[p]=weizhi[p-1].y[p-1]+1; else weizhi[p].y[p]=zouqilie(); save(p); showqi(p); panduan(p); } if(p==N*N) heqi(); over(); } /******************建立棋盘*****************/ void initqipan() {char f[N]={' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s'}; int i,j; for(i=0;i<N;i++) { printf("%c",f[i]); printf(" "); } printf("\n"); for(i=1;i<N;i++) { for(j=0;j<N;j++) { if(j==0) printf("%c",f[i]); else printf(" ·"); } printf("\n"); } } /******************显示棋子*****************/ void showqi(int p) { int i,j,k,m; int a[N*N],b[N*N]; FILE *fp; fp=fopen("wuzi_list","rb"); for(i=1;i<=N*N;i++) { fread(&weizhi[i],sizeof(struct zuobiao),1,fp); a[i]=weizhi[i].x[i]; b[i]=weizhi[i].y[i]; } for(m=1;m<p;m++) { while(weizhi[p].x[p]==a[m]&&weizhi[p].y[p]==b[m]) { printf("error!\n"); weizhi[p].x[p]=zouqihang(); weizhi[p].y[p]=zouqilie(); m=1; } } for(i=0;i<N;i++) { printf("%d",i); printf(" "); } printf("\n"); for(i=1;i<N;i++) { for(j=1;j<N;j++) { if(j==1) printf("%2d",i); for(k=1;k<=p;k++) { if(i==weizhi[k].x[k]&&j==weizhi[k].y[k]) { if(k%2==1) {printf("○");break;} else if(k%2==0) {printf("●");break;} } } if(k>p)printf("·"); else continue; } printf("\n"); } } /******************走棋行*****************/ int zouqihang() { int x; printf("请输入要走棋子所在行数!\n"); printf("x="); scanf("%d",&x); while(x>N-1||x<1) { printf("error!\n"); printf("请输入要走棋子所在行数!\n"); printf("x="); scanf("%d",&x); } return x; } /******************走棋列*****************/ int zouqilie() { int y; printf("请输入要走棋子所在列数!\n"); printf("y="); scanf("%d",&y); while(y>N-1||y<1) { printf("error!\n"); printf("请输入要走棋子所在列数!\n"); printf("y="); scanf("%d",&y); } return y; } /******************文件保存*****************/ void save(int i) { FILE *fp; static int m=0; fp=fopen("wuzi_list","wb"); fwrite(&weizhi[i],sizeof(struct zuobiao),1,fp); } /****************判断输赢*******************/ void panduan(int p) { int i,j,k[8]={1,1,1,1,1,1,1,1,}; int a[N*N],b[N*N]; FILE *fp; fp=fopen("wuzi_list","rb"); for(i=1;i<=p;i++) { fread(&weizhi[i],sizeof(struct zuobiao),1,fp); a[i]=weizhi[i].x[i]; b[i]=weizhi[i].y[i]; } /*****************判断行******************/ for(i=1;i<=p;i++) { if(i%2==1) { for(j=1;j<=p;j=j+2) { if((a[i]==a[j])&&(b[i]==b[j]-1)) { k[0]++; continue; } else if((a[i]==a[j])&&(b[i]==b[j]-2)) { k[0]++; continue; } else if((a[i]==a[j])&&(b[i]==b[j]-3)) { k[0]++; continue; } else if((a[i]==a[j])&&(b[i]==b[j]-4)) { k[0]++; continue; } else if(k[0]==5) { printf("Player 1 wins!!!\n"); } else continue; } if(k[0]==5) break; k[0]=1; } else if(k[0]==5) break; else if(i%2==0) { for(j=2;j<=p;j=j+2) { if((a[i]==a[j])&&(b[i]==b[j]-1)) { k[1]++; continue; } else if((a[i]==a[j])&&(b[i]==b[j]-2)) { k[1]++; continue; } else if((a[i]==a[j])&&(b[i]==b[j]-3)) { k[1]++; continue; } else if((a[i]==a[j])&&(b[i]==b[j]-4)) { k[1]++; continue; } else if(k[1]==5) { printf("Player 2 wins!!!\n"); } else continue; } if(k[1]==5) break; k[1]=1; } } /**********************判断列************************/ for(i=1;i<=p;i++) { if(k[0]==5||k[1]==5) break; else if(i%2==1) { for(j=1;j<=p;j=j+2) { if((a[i]==a[j]-1)&&(b[i]==b[j])) { k[2]++; continue; } else if((a[i]==a[j]-2)&&(b[i]==b[j])) { k[2]++; continue; } else if((a[i]==a[j]-3)&&(b[i]==b[j])) { k[2]++; continue; } else if((a[i]==a[j]-4)&&(b[i]==b[j])) { k[2]++; continue; } else if(k[2]==5) { printf("Player 1 wins!!!\n"); } else continue; } if(k[2]==5) break; k[2]=1; } else if(k[2]==5) break; else if(i%2==0) { for(j=2;j<=p;j=j+2) { if((a[i]==a[j]-1)&&(b[i]==b[j])) { k[3]++; continue; } else if((a[i]==a[j]-2)&&(b[i]==b[j])) { k[3]++; continue; } else if((a[i]==a[j]-3)&&(b[i]==b[j])) { k[3]++; continue; } else if((a[i]==a[j]-4)&&(b[i]==b[j])) { k[3]++; continue; } else if(k[3]==5) { printf("Player 2 wins!!!\n"); } else continue; } if(k[3]==5) break; k[3]=1; } } /****************判断对角(左上-右下)******************/ for(i=1;i<=p;i++) { if(k[0]==5||k[1]==5||k[2]==5||k[3]==5) break; else if(i%2==1) { for(j=1;j<=p;j=j+2) { if((a[i]==a[j]-1)&&(b[i]==b[j]-1)) { k[4]++; continue; } else if((a[i]==a[j]-2)&&(b[i]==b[j]-2)) { k[4]++; continue; } else if((a[i]==a[j]-3)&&(b[i]==b[j]-3)) { k[4]++; continue; } else if((a[i]==a[j]-4)&&(b[i]==b[j]-4)) { k[4]++; continue; } else if(k[4]==5) { printf("Player 1 wins!!!\n"); } else continue; } if(k[4]==5) break; k[4]=1; } else if(k[2]==5) break; else if(i%2==0) { for(j=2;j<=p;j=j+2) { if((a[i]==a[j]-1)&&(b[i]==b[j]-1)) { k[5]++; continue; } else if((a[i]==a[j]-2)&&(b[i]==b[j]-2)) { k[5]++; continue; } else if((a[i]==a[j]-3)&&(b[i]==b[j]-3)) { k[5]++; continue; } else if((a[i]==a[j]-4)&&(b[i]==b[j]-4)) { k[5]++; continue; } else if(k[5]==5) { printf("Player 2 wins!!!\n"); } else continue; } if(k[5]==5) break; k[5]=1; } } /**********判断对角(左下-右上)************/ for(i=1;i<=p;i++) { if(k[0]==5||k[1]==5||k[2]==5||k[3]==5||k[4]==5||k[5]==5) break; else if(i%2==1) { for(j=1;j<=p;j=j+2) { if((a[i]==a[j]+1)&&(b[i]==b[j]-1)) { k[6]++; continue; } else if((a[i]==a[j]+2)&&(b[i]==b[j]-2)) { k[6]++; continue; } else if((a[i]==a[j]+3)&&(b[i]==b[j]-3)) { k[6]++; continue; } else if((a[i]==a[j]+4)&&(b[i]==b[j]-4)) { k[6]++; continue; } else if(k[6]==5) { printf("Player 1 wins!!!\n"); } else continue; } if(k[6]==5) break; k[6]=1; } else if(k[6]==5) break; else if(i%2==0) { for(j=2;j<=p;j=j+2) { if((a[i]==a[j]+1)&&(b[i]==b[j]-1)) { k[7]++; continue; } else if((a[i]==a[j]+2)&&(b[i]==b[j]-2)) { k[7]++; continue; } else if((a[i]==a[j]+3)&&(b[i]==b[j]-3)) { k[7]++; continue; } else if((a[i]==a[j]+4)&&(b[i]==b[j]-4)) { k[7]++; continue; } else if(k[7]==5) { printf("Player 2 wins!!!\n"); } else continue; } if(k[7]==5) break; k[7]=1; } } } /****************和棋*******************/ void heqi() { printf("************************************\n"); printf(" Tie!!!\n"); printf("************************************\n"); } /****************游戏结束*******************/ void over() { printf("************************************\n"); printf(" game over!!!\n"); printf("************************************\n"); } /****************游戏开始*******************/ void welcome() { printf("************************************\n"); printf(" Welcome!!!\n"); printf("************************************\n"); }
五子棋 (用C语言编写五子棋游戏)
game.h 文件 #ifndef __GAME_H__ #define __GAME_H__ enum OPTION { EXIT, PLAY }; #include #include #include #include #define ROWS 5 #define COLS 5 void init_board(char board[ROWS][COLS], int row
C语言编写的五子棋游戏 设计思路
现在已经大2了 ,学校的实训课要我们编写一个五子棋游戏 ,虽然过程艰辛。但还是很有成就感的,一下是我的感悟用C语言编写的五子棋游戏这个五子棋游戏是站长刚学C语言两个月时所写!!C语言制作五子棋五子棋游戏是一个深受人们喜爱的游戏,通常是人机对弈,本程序设计为人与人对弈,一方执黑棋,一方执白棋,轮流走棋,每方都试图在游戏结束前让自己的棋子五子相连。按键盘上的方向键可以移动光标,回车
用c语言代码编写的游戏“简易五子棋”
用c语言制作的小游戏,有兴趣的朋友可以试一下哦!
五子棋游戏源代码 c语言 能运行正确
一个很好的五子棋c语言源程序代码,最重要的是能运行正确!!! #include <stdio.h> #include <bios.h> #include <ctype.h> #include <conio.h> #include <dos.h> #define CROSSRU 0xbf /*右上角点*/ #define CROSSLU 0xda /*左上角点*/ #define CROSSLD 0xc0 /*左下角点*/ #define CROSSRD 0xd9 /*右下角点*/ #define CROSSL 0xc3 /*左边*/ #define CROSSR 0xb4 /*右边*/ #define CROSSU 0xc2 /*上边*/ #define CROSSD 0xc1 /*下边*/ #define CROSS 0xc5 /*十字交叉点*/ /*定义棋盘左上角点在屏幕上的位置*/ #define MAPXOFT 5 #define MAPYOFT 2 /*定义1号玩家的操作键键码*/ #define PLAY1UP 0x1157/*上移--'W'*/ #define PLAY1DOWN 0x1f53/*下移--'S'*/ #define PLAY1LEFT 0x1e41/*左移--'A'*/ #define PLAY1RIGHT 0x2044/*右移--'D'*/ #define PLAY1DO 0x3920/*落子--空格键*/ /*定义2号玩家的操作键键码*/ #define PLAY2UP 0x4800/*上移--方向键up*/ #define PLAY2DOWN 0x5000/*下移--方向键down*/ #define PLAY2LEFT 0x4b00/*左移--方向键left*/ #define PLAY2RIGHT 0x4d00/*右移--方向键right*/ #define PLAY2DO 0x1c0d/*落子--回车键Enter*/ /*若想在游戏中途退出, 可按 Esc 键*/ #define ESCAPE 0x011b /*定义棋盘上交叉点的状态, 即该点有无棋子 */ /*若有棋子, 还应能指出是哪个玩家的棋子 */ #define CHESSNULL 0 /*没有棋子*/ #define CHESS1 'O'/*一号玩家的棋子*/ #define CHESS2 'X'/*二号玩家的棋子*/ /*定义按键类别*/ #define KEYEXIT 0/*退出键*/ #define KEYFALLCHESS 1/*落子键*/ #define KEYMOVECURSOR 2/*光标移动键*/ #define KEYINVALID 3/*无效键*/ 下载可看到完整的...
C语言实现的五子棋
五子棋大家都玩儿过,所以规则就不介绍了 今天遇到一个学弟在实现的时候遇到一些问题,所以将实现的过程记录下 绘制表格的部分是这个学弟写的代码,后面的判断输赢我写的,水平有限,仅供参考,互相交流,共同进步 #include #include int main() {    int i,j;  int x,y;  /****************************
五子棋的c语言源码
#include #include #define NO_CHESS    "十" #define RED_CHESS   "❤️" #define BLACK_CHESS "♠️" #define BOARD_SIZE  15 //定义棋盘的大小 typedef int DataType; struct Stack {
一个使用纯Win32 SDK和C语言实现的五子棋游戏
GobangGame这是一个使用纯Win32 SDK和C语言实现的五子棋游戏在这个游戏中实现的功能 [x] 绘制一个15 * 15的棋盘 [x] 绘制5个着重点位置 [x] 根据鼠标左键的点击,可以绘制出黑色棋子;根据鼠标右键的点击,可以绘制出白色棋子 [x] 根据鼠标中键的点击,可以初始化棋盘 [x] 根据鼠标点击的实际位置,可以计算转化为临近点最近的那个点,在这个点上绘制棋子 [x] 当鼠标位置
笔记:C语言图形基本函数及实例五子棋游戏
初始化图形界面 int gdriver; int gmode; gdriver = DETECT; initgraph(&gdriver,&gmode,”” );清空屏幕 cleardevice ();退出图形化界面 closegraph ();画图之前未设定调用颜色,则背景色默认为黑色,前景色默认为白色 setbkcolor (WHITE) //背景色 setcolor (4);
五子棋 (linux下c语言编写)
完成品,很诡异的电脑,一般人都下不赢。是在linux下面用GCC直接编译,在终端执行的。