五子棋项目(代码片段)

liugangjiayou liugangjiayou     2023-03-13     415

关键词:

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<time.h>
  4 #include<easyx.h>
  5 
  6 #define ROW 15
  7 #define COL 15
  8 #define SIZE 40
  9 /*
 10 
 11     1. 五子棋的规则  棋盘上  黑白棋走    
 12 
 13       棋盘--->二维数组  旗子    黑-1  白1  空白0
 14 
 15       判断输赢  连成5个  判断落子附近有没有成5个就行
 16 
 17       下棋   先白 然后黑   写一个函数 鼠标点击的位置 转换成数组的下标
 18         对应的元素有没有值   不赋值 视为无效操作
 19                         否则   下棋 
 20 
 21 
 22 
 23      悔棋  记录每一步的操作  
 24      判断棋盘满--->步数>=棋盘大小
 25      记录当前棋盘  存档  读档
 26      认输  可以设置一个键  按下这个键就认输
 27 
 28 
 29     游戏结束  1.一方成了5
 30              2.格子满了 无法放新的棋
 31 
 32 
 33 
 34     返回值只能返回一个数据 --->返回多个  数组?堆内存可以  或者结构体
 35 
 36 */
 37 typedef struct coor
 38 
 39     int x;
 40     int y;
 41 COOR;
 42 
 43 void drawMap(int map[][COL]);
 44 COOR play(int map[][COL],int flag);
 45 int judge(int map[][COL], int x, int y);
 46 
 47 int main()
 48 
 49     int map[ROW][COL] =  0 ;
 50 
 51     initgraph(COL * SIZE, ROW * SIZE);
 52     COOR add;//得到点击的位置
 53 
 54     int flag = 1;
 55     while (1)
 56     
 57         drawMap(map);
 58         add=play(map,flag);
 59 
 60         //判断游戏是否结束
 61         if (judge(map, add.x, add.y) == 1)
 62         
 63             drawMap(map);
 64             //游戏结束
 65             if (flag == 1) //白赢了
 66             
 67                 MessageBox(0, L"白win", L"good", MB_OK);
 68                 break;
 69             
 70             else
 71             
 72                 MessageBox(0, L"黑win", L"good", MB_OK);
 73                 break;
 74             
 75         
 76 
 77 
 78 
 79         flag = -flag;
 80     
 81     
 82     getchar();
 83     closegraph();
 84     return 0;
 85 
 86 
 87 void  drawMap(int map[][COL])
 88 
 89     BeginBatchDraw();
 90     setbkcolor(RGB(32, 178, 170));
 91     cleardevice();
 92     //  竖着 20,20     20,20+40*COL
 93     for (int i = 0; i < ROW; ++i)//画横线
 94     
 95         line(SIZE / 2 , SIZE / 2+ i*SIZE, SIZE*ROW-  SIZE / 2 ,SIZE/2+i*SIZE);
 96     
 97     for (int j = 0; j <= COL; ++j)
 98     
 99         line(j*SIZE-SIZE/2, SIZE/2, j*SIZE-SIZE/2, SIZE*COL -SIZE/2);
100     
101 
102     for (int i = 0; i < ROW; ++i)
103     
104         for (int j = 0; j < COL; ++j)
105         
106             switch (map[i][j])
107             
108             case -1://黑棋
109                 setfillcolor(BLACK);
110                 solidcircle(j*SIZE+SIZE/2, i*SIZE+SIZE/2, SIZE / 3);
111                 break;
112             case 1://白棋
113                 setfillcolor(WHITE);
114                 solidcircle(j*SIZE + SIZE / 2, i*SIZE + SIZE / 2, SIZE / 3);
115                 break;
116             default:
117                 break;
118             
119         
120     
121     EndBatchDraw();
122 
123 
124 COOR play(int map[][COL], int flag)//如果是黑 -1  如果是白  1
125 
126     MOUSEMSG msg;
127     while (1)
128     
129         msg = GetMouseMsg();
130         switch (msg.uMsg)
131         
132         case WM_LBUTTONDOWN:
133         //    msg.y/SIZE-->行下标
134         //    msg.x/SIZE-->列下标
135             if (map[msg.y / SIZE][msg.x / SIZE] == 0)
136             
137                 map[msg.y / SIZE][msg.x / SIZE] = flag;
138                 COOR add =  msg.y / SIZE, msg.x / SIZE ;
139                 return add;//返回点击的位置
140             
141 
142             break;
143         
144     
145 
146 
147 
148 int judge(int map[][COL], int x, int y)
149 
150     //判断有没有成5的
151     int arr[4] =  0 ;//四个方向
152     //判断上下
153     int i = 1;
154     while (x - i >= 0 && map[x - i][y] == map[x][y]) ++i, arr[0]++; 
155     i = 1;
156     while (x+i<ROW&&map[x + i][y] == map[x][y]) ++i, arr[0]++; 
157 
158     //左右
159     i = 1;
160     while (y - i >= 0 && map[x][y - i] == map[x][y]) ++i, arr[1]++; 
161     i = 1;
162     while (y + i<COL&&map[x ][y+ i] == map[x][y]) ++i, arr[1]++; 
163 
164     //左上 右下
165     i = 1;
166     while (x - i >= 0&&y-i>=0&& map[x - i][y-i] == map[x][y]) ++i, arr[2]++; 
167     i = 1;
168     while (x + i<ROW&&y+i<COL&&map[x + i][y+i] == map[x][y]) ++i, arr[2]++; 
169 
170     //左下右上
171     i = 1;
172     while (x - i >= 0 && y + i <COL && map[x - i][y + i] == map[x][y]) ++i, arr[3]++; 
173     i = 1;
174     while (x + i<ROW&&y - i>=0&&map[x + i][y - i] == map[x][y]) ++i, arr[3]++; 
175 
176     for (int i = 0; i < 4; ++i)
177     
178         if (arr[i] >= 4) return 1;//表示结束  赢
179     
180     return 0;//没有赢
181 

 

qtvs2017《五子棋》人机对战项目(代码片段)

...年了。一年前,自己学习qt语言时,顺便写了一个五子棋的小项目,个人感觉,这个五子棋项目还算挺大型的,整个项目代码量加起来可能有1w行,现在分享出来给有需要的朋友,参考借鉴。项目包括实... 查看详情

c语言项目:一天时间写出《五子棋项目》,包含源码分享(代码片段)

一天时间开发出老师说需要一星期的C语言游戏:五子棋项目!给大家分享一下~为了进一步了解C语言编程,熟悉优秀的编码风格,提升编码能力,丰富项目经验。所以在编程初期选择了控制台小游戏《单机五... 查看详情

项目——网络对战五子棋(web-gobang)(代码片段)

目录1.项目开发背景2.项目需求&开发环境3.项目设计&项目难点4.功能实现&难点解决4.1.用户登录/注册4.2.项目难点解决4.2.1难点一:当用户点击开始匹配按钮时,创建房间并为用户分配相应的对手。4.2.2难点二:... 查看详情

项目——网络对战五子棋(web-gobang)(代码片段)

目录1.项目开发背景2.项目需求&开发环境3.项目设计&项目难点4.功能实现&难点解决4.1.用户登录/注册4.2.项目难点解决4.2.1难点一:当用户点击开始匹配按钮时,创建房间并为用户分配相应的对手。4.2.2难点二:... 查看详情

利用easyx制作简易的五子棋项目(代码片段)

目录一:预览结果:二:代码设计 三: 安装的文件及导入的函数及头文件一:预览结果:二:代码设计   需要安装2013及以上的vs版本:官网也可以下载最新版本进行安装 之后导入easyx的专业图... 查看详情

java五子棋游戏——控制台版(代码片段)

 该项目为Java编程语言编写的五子棋游戏(控制台版),用到二维数组、for循环、if语句、while()语句、ScannerUntil包,此项目主要是对数组的使用。该项目的功能有落子、输出棋盘、判断输赢。代码条:packageedu.qizi.ga... 查看详情

五子棋项目(代码片段)

...;4#include<easyx.h>56#defineROW157#defineCOL158#defineSIZE409/*10111.五子棋的规则棋盘上黑白棋走1213棋盘--->二维数组旗子黑-1白1空白01415判断输赢连成5个判断落子附近有没有成5个就行1617下棋先白然后黑写一个函数鼠标点击的位置转换... 查看详情

项目——网络对战五子棋(web-gobang)(代码片段)

...景小时候,闲来无事最喜欢和别人玩的游戏之一就是五子棋了,它规则简单,但却玩法多变,直到现在我还时不时的在手机上和别人在线对战。最近自己学习Linux方面的相关知识,学习了多线程和Socket编程࿰... 查看详情

c语言小项目--五子棋小游戏(通用版)(代码片段)

目录1、game.h2、test.c3、game.c4、游戏功能详解(1)、棋盘初始化(2)、棋盘的打印(3)、玩家下棋(4)、电脑下棋(5)、判断游戏输赢(6)、判断棋盘是否满了1、game.hgame.h:自定义头文件,用于:库函数头文件的包含符号与结构的... 查看详情

利用easyx制作简易的五子棋项目(代码片段)

目录一:预览结果:二:代码设计 三: 安装的文件及导入的函数及头文件一:预览结果:二:代码设计   需要安装2013及以上的vs版本:官网也可以下载最新版本进行安装 之后导入easyx的专业图... 查看详情

《游戏学习》java实现连珠五子棋完整代码(代码片段)

游戏介绍五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。五子棋有两种玩法。玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。玩... 查看详情

《游戏学习》java实现连珠五子棋完整代码(代码片段)

游戏介绍五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。五子棋有两种玩法。玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。玩... 查看详情

项目实战轻松实现c/c++大作业:五子棋游戏(代码片段)

...个C语言小项目,提升你的编程能力! 基于EasyX的五子棋软件。算法部分想了很久,也参考了网上的其他游戏的。原理主要就是:遍历每个空闲的点,根据下在那个点后连成的棋形来判断其分值,再选出分... 查看详情

python小游戏五子棋小游戏设计与实现(代码片段)

...个今年(2022)最新完成的毕业设计项目作品python小游戏毕设五子棋小游戏设计与实现(源码)🥇学长根据实现的难度和等级对项目进行评分(最低0分,满分5分)难度系数:3分工作量:3分创新点:4分1游戏介绍基于pyt... 查看详情

flutter从头到尾设计一款简单的五子棋游戏|具体代码设计(代码片段)

前言在前面两篇文章中,我们已经介绍了设计一款五子棋游戏的所使用的一些思想以及部分的代码,以便我们更好地对设计模式进行理解。这次我们全面把代码铺开来讲,注意,我们这次的设计是完全使用Flutter自... 查看详情

万字解析:带你走进五子棋(普通版)和三子棋的世界(c语言)(代码片段)

今天,我们来再来实现一个大家都不陌生的小项目:三子棋。1,三子棋1,思路分析写一个小项目,必不可少的是思路的构建。写一个游戏,我们首先需要一个菜单,这是最基本的,让用户来选择是... 查看详情

简单五子棋实现(代码片段)

一、定义一个对手Rival类packagecom.itwang.gonbang;publicclassRivalprivateStringcolor;//颜色privateStringnickName;//昵称publicStringgetNickName()returnnickName;publicvoidsetNickName(StringnickName)this.nickName= 查看详情

五子棋2pygame代码(代码片段)

看看呐,点一点也好啊🤣#!python3#-*-coding:utf-8-*-importpygameimportgameROWS=17SIDE=30SCREEN_WIDTH=ROWS*SIDESCREEN_HEIGHT=ROWS*SIDEEMPTY=-1BLACK=(0,0,0)WHITE=(255,255,2 查看详情