五子棋c语言代码详解 源码分享C五子棋简易小游戏

01

编码过程

  • 定义函数和变量
  • 游戏初始化,绘制界面
  • 游戏过程函数,绘制鼠标点击位置的棋子
  • 判断鼠标点击位置是否超出边界
02

效果展示

五子棋c语言代码详解 源码分享C五子棋简易小游戏(1)

03

代码分享

#include <graphics.h> #include <stdio.h> #include <math.h> #include <mmsystem.h> #pragma comment(lib,"winmm.lib") void initGame();//函数声明 void playChess(); int judge(int a, int b); int flag = 0;//标记轮到谁下棋 int board[20][20] = { 0 };//0表示没有下棋的状态 int main() { initGame();//函数调用,不加返回值类型和参数类型 playChess(); closegraph(); return 0; } void initGame() { initgraph(600, 500);//绘图环境 loadimage(NULL, "背景.jpg"); //背景图片 mciSendString("open G弦之歌.mp3", 0, 0, 0);//打开音乐 mciSendString("play G弦之歌.mp3", 0, 0, 0);//播放音乐 //绘制棋盘 setlinecolor(BLACK);//设置线条颜色为黑色 for (int i = 1; i < 20; i ) { line(0, i * 25, 500, i * 25);//绘制线条 line(i * 25, 0, i * 25, 500); } setlinestyle(PS_SOLID, 2);//设置线条为实线,宽度为2 line(500, 0, 500, 500);//边界线 outtextxy(512, 60, "玩家1:黑棋"); outtextxy(512, 100, "玩家2:白棋"); } void playChess() { int x=0, y=0; int a=0, b=0; MOUSEMSG m;//定义鼠标消息 HWND hwnd; hwnd = GetHWnd(); while (1)//实现不断下棋 { m = GetMouseMsg();//获取一个鼠标消息 //求距离绝对值 for (int i = 1; i < 20; i ) { for (int j = 1; j < 20; j ) { if (abs(m.x - i * 25) < 12 && abs(m.y - j * 25) < 12) { a = i; b = j; x = i * 25; y = j * 25; } } } if (m.uMsg == WM_LBUTTONDOWN)//判断当前鼠标消息是不是鼠标左键按下 { if (board[a][b] != 0) { MessageBox(hwnd, "这里已经有棋子了,请重新选择.", "五子棋", MB_OK); continue; } if (flag % 2 == 0) { setfillcolor(BLACK); solidcircle(x, y, 10); board[a][b] = 1; } else { setfillcolor(WHITE); solidcircle(x, y, 10); board[a][b] = 2; } flag ; } if (judge(a, b)) { if (1 == flag % 2) { MessageBox(hwnd, "玩家1胜利", "游戏结束", MB_OK); return; //修复BUG } else { MessageBox(hwnd, "玩家2胜利", "游戏结束", MB_OK); return; //修复BUG } } } } int judge(int a, int b) { int i, j; int t = 2 - flag % 2; for (i = a - 4, j = b; i <= a; i ) { if (i >= 1 && i < 16 && t == board[i][j] && t == board[i 1][j] && t == board[i 2][j] && t == board[i 3][j] && t == board[i 4][j]) return 1; } for (i = a, j = b - 4; j <= b; j ) { if (j >= 1 && j < 16 && t == board[i][j] && t == board[i][j 1] && t == board[i][j 2] && t == board[i][j 3] && t == board[i][j 4]) return 1; } for (i = a - 4, j = b - 4; i <= a, j <= b; i , j ) { if (i >= 1 && i < 16 && j >= 1 && j < 16 && t == board[i][j] && t == board[i 1][j 1] && t == board[i 2][j 2] && t == board[i 3][j 3] && t == board[i 4][j 4]) return 1; } for (i = a - 4, j = b 4; i <= a, j >= b; i , j--) { if (i >= 1 && i < 16 && j >= 1 && j < 16 && t == board[i][j] && t == board[i 1][j - 1] && t == board[i 2][j - 2] && t == board[i 3][j - 3] && t == board[i 4][j - 4]) return 1; } return 0; }

更多有关C语言和C 的知识和学习资料,欢迎关注C语言学习基地!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页