该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/*

初始化游戏界面:

1.绘图环境

2.背景图片

3.背景音乐

4.绘制格子

5.绘制边界线

6.显示黑棋为玩家1,白棋为玩家2

下棋:

1.while循环让游戏能不断的玩下去

2.定义一个保存鼠标消息的变量,获取鼠标消息

3.鼠标左键按下的时候下棋

4.探讨怎样实现玩家轮流下棋

5.探讨怎样让玩家在十字交叉的位置下棋

6.解决同位置可以反复下棋的问题

*/

#include

#include

#include

#include

#define N20

int chess[N][N] = { 0 };

//用来记录轮到玩家1还是玩家2

int flag = 0;

void initGame();

void playChess();

int judge(int, int);

HWND hWnd;

int main()

{

//初始化游戏

initGame();

playChess();

return 0;

}

void initGame()

{

initgraph(600, 500);

loadimage(NULL, L"1.jpg");

//绘制棋盘

for (int i = 1; i < 20; i++)

{

setlinestyle(PS_SOLID, 1);

setlinecolor(BLACK);

line(i * 25, 0, i * 25, 500);

line(0, i * 25, 500, i * 25);

}

//绘制棋盘边界线

setlinestyle(PS_SOLID, 2);

line(500, 0, 500, 500);

line(0, 500, 500, 500);

outtextxy(505, 20, L"黑棋:玩家1");

outtextxy(505, 50, L"白棋:玩家2");

outtextxy(505, 70, L"加群");

outtextxy(505, 90, L"626871916");

outtextxy(505, 110, L"邀请码,华灯");

}

void playChess()

{

int a = 0, b = 0;

int x, y;

MOUSEMSG m;

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 (chess[a][b] != 0)

{

MessageBox(hWnd, L"这里已经有棋子了,请重新选择下棋的位置", L"提示", MB_OK);

continue;

}

else

{

if (flag % 2 == 0)

{

outtextxy(505, 200, L"请玩家2落子");

setfillcolor(BLACK);

solidcircle(x, y, 10);

chess[a][b] = 1;

}

else

{

outtextxy(505, 200, L"请玩家1落子");

setfillcolor(WHITE);

solidcircle(x, y, 10);

chess[a][b] = 2;

}

}

flag++;

}

if (judge(a, b))

{

if (1 == flag % 2)

{

MessageBox(hWnd, L"玩家1胜利", L"游戏结束", MB_OK);

return;//修复BUG

}

else

{

MessageBox(hWnd, L"玩家2胜利", L"游戏结束", MB_OK);

return;//修复BUG

}

}

}

}

int judge(int x, int y)

{

int i, j;

int t = 2 - flag % 2;//flag%2=0时,t=2

for (i = x - 4, j = y; i <= x; i++)

{

if (i >= 1 && i <= N - 4 && t == chess[i][j] && t == chess[i + 1][j] && t == chess[i + 2][j] && t == chess[i + 3][j] && t == chess[i + 4][j])

return 1;

}

for (i = x, j = y - 4; j <= y; j++)

{

if (j >= 1 && j <= N - 4 && t == chess[i][j] && t == chess[i][j + 1] && t == chess[i][j + 2] && t == chess[i][j + 3] && t == chess[i][j + 4])

return 1;

}

for (i = x - 4, j = y - 4; i <= x, j <= y; i++, j++)

{

if (i >= 1 && i <= N - 4 && j >= 1 && j <= N - 4 && t == chess[i][j] && t == chess[i + 1][j + 1] && t == chess[i + 2][j + 2] && t == chess[i + 3][j + 3] && t == chess[i + 4][j + 4])

return 1;

}

for (i = x - 4, j = y + 4; i <= x, j >= 1; i++, j--)

{

if (i >= 1 && i <= N - 4 && j >= 1 && j <= N - 4 && t == chess[i][j] && t == chess[i + 1][j - 1] && t == chess[i + 2][j - 2] && t == chess[i + 3][j - 3] && t == chess[i + 4][j - 4])

return 1;

}

return 0;

}

guan

c语言五子棋游戏报告,C语言五子棋游戏相关推荐

  1. c语言课程设计猜数字游戏报告,C语言课程设计猜数字游戏报告

    C语言课程设计猜数字游戏报告 C 语言课程设计----猜数字1摘 要该 软 件 在 Windows 系 统 上 为 玩 家 提 供 猜 数 字 游 戏的 基 本 功 能 , 游 戏 用 户 可 以 选 ...

  2. C语言实践作业报告,c语言社会实践报告

    资料简介 c 语言社会实践报告 c 语言社会实践报告 随着个人素质的提升,越来越多的事务都会使用到报告,报告 中提到的所有信息应该是准确无误的. 相信许多人会觉得报告很难写 吧,下面是为大家的 c 语 ...

  3. c语言课程设计猜数字游戏报告,C语言课程设计-猜数字游戏报告.doc

    C语言课程设计-猜数字游戏报告 摘要 该软件在Windows系统上为玩家提供猜数字游戏的基本功能,游戏用户可以选择开始游.排行榜查看.帮助等主要功能.当用户选择开始游戏时,系统会提示用户排行榜上猜数字 ...

  4. c语言四则运算实验报告,c语言四则运算实验报告.doc

    c语言四则运算实验报告.doc 课程编号 1300050027 得分教师签名批改日期深 圳 大 学 实 验 报 告课程名称 C语言实验 实验名称 100以内的四则运算游戏 学 院 信息工程学院 指导教 ...

  5. 杂志订阅管理系统c语言实训报告,C语言程序设计报告—杂志订阅管理软件、、.doc...

    C语言程序设计报告-杂志订阅管理软件.. 中国地质大学(武汉)C语言课程设计报告 学 院: 专 业: 题 目: 杂志订阅管理系统 班 级: 姓 名: 学 号: 指导教师: 2011年1月9日 程序在最 ...

  6. c语言初步实验报告,c语言实验报告(大一c语言实验报告答案)

    哪位帮我一下啊,我这有个作业,要写C语言程序设计实验报告,包括五个部. 最低0.27元/天开通百度文库会员,可在文库查看完整内容> 原发布者:aming7728081 计算机科学与技术系C语言实 ...

  7. c语言程序设计实验8,c语言程序设计实验报告8_c语言实验报告格式及实验内容_c语言设计报告...

    实验名称 计算出1000以内10个最大素数之和 实验目的 1.熟练掌握if.if-else.if-else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和s ...

  8. c语言考试系统设计报告,c语言课程设计报告单项选择题标准化考试系统.doc

    c语言课程设计报告单项选择题标准化考试系统.doc <C语言程序设计>课程设计题目:单项选择题标准化考试系统专业:计算机科学与技术班级:计科1001目录<C语言程序设计>课程设 ...

  9. 华北科技c语言综合实验报告,C语言综合性实验报告1.doc

    C语言综合性实验报告1.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

  10. c语言专业实习报告,C语言个人实习报告(范文1)

    <C语言个人实习报告.doc>由会员分享,可免费在线阅读全文,更多与<C语言个人实习报告>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索. 1.好的学 ...

最新文章

  1. 常见问题:内存,循环引用,runloop的简单理解
  2. 数据流动控制学习笔记
  3. HDU 2704 Bulletin Board
  4. ApplicationContext和BeanFactory
  5. 英文求职信计算机网络,计算机网络专业毕业生英文求职信.doc
  6. Android Studio 3.4增可视化资源管理工具 可管理和预览项目资源
  7. linux 命令案例学习——文件搜索
  8. python webui测试ie浏览器环境配置_python+selenium做ui自动化测试用法必会
  9. SP2-0734: 未知的命令开头 imp scott/... - 忽略了剩余的行。
  10. pandas尾部添加一条_Numpy与Pandas
  11. 云图说 | GPU共享型AI容器,让AI开发更普及
  12. java线程的小问题与回答
  13. JAVA可以赋值分数吗_Java数据类型知多少?
  14. 判断是否是64位操作系统
  15. C++制作鼠标连点器
  16. Chrome OS:“比 Linux 更好的 Linux”,这样你就可以忘记 Windows
  17. netkeeper客户端_中国电信创翼客户端下载
  18. 资深程序员教你,用python入门的知识抓取抖音短视频,太厉害了
  19. 分支-07. 比较大小(10)
  20. Codeforces 985 E - Pencils and Boxes

热门文章

  1. Python爬虫工程师是干什么的?能赚多少钱?需要掌握哪些技术?
  2. 自动化框架搭建面试题
  3. C++ Primer(顺序容器 上)
  4. 深度学习模型压缩技术概览
  5. swagger 报错
  6. 当你学会了Python爬虫,网上的图片免费下
  7. STM32F427 CAN总线配置
  8. 用EasyBoot制作光盘启动菜单
  9. access denied
  10. java 来自集合中泛型序列化的bug,难得一遇