/*
项目名称:五子棋,
vs
*/
/*
绘图环境,初始化游戏
1、绘图环境(窗口)
2、背景图片
3、背景音乐
4、绘制棋盘
*/
#include"pch.h"
#include<graphics.h>//图形库头文件
#include<stdio.h>
#include<mmsyscom.h>//播放音乐需要用到的头文件
#pragma comment(lib,"winmm.lib")//播放音乐需要用的库文件
int flag = ;//记录轮到谁下棋
int board[][] = { };//0表示没有被占用
void initGame()
{
//自己创建一个窗口
initgraph(, );
//贴图片
loadimage(NULL, "背景.jpg");
/*IMAGE img;
loadimage(&img, "背景.jpg", 300, 250);
putimage(100, 100, &img);*/
mciSendString("open 特别.mp3", , , );//打开音乐文件
mciSendString("play 特别.mp3", , , );//播放音乐
//绘制棋盘,循环
setlinecolor(BLACK);
for (int i = ; i < ; i++)
{
line(i * , , i * , );
line(, i * , , i * );
}//在同一个地方绘制了19次
setlinestyle(PS_SOLID, );
line(, , , );
settextcolor(RED);
setbkmode();
outtextxy(, , "玩家1:黑棋");
outtextxy(, , "玩家2:白棋");
}
//下棋鼠标点击
void playChess()
{
MOUSEMSG m;
int a;
int b;
int x, y;
HWND hwnd;//窗口句柄,就是一个指针,
hwnd = GetHWnd();//窗口置前 while ()
{
m = GetMouseMsg();//获取鼠标消息
//绝对值
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
if (abs(m.x - i * ) < && abs(m.y - j * ) < )
{
a = i;//行列号
b = j;
x = i * ;//坐标
y = j * ; }
}
}
if (m.uMsg == WM_LBUTTONDOWN)//判断当前鼠标消息是不是鼠标左键按下
{
if (board[a][b] != )//有棋子
{
MessageBox(hwnd, "这里已有棋子了,请重新选择下棋点", "五子棋", MB_OK);
//推出循环
continue;
}
if (flag % == )
{
setfillcolor(BLACK);
solidcircle(m.x / * , m.y / * , );//交叉下棋,位置没有对齐
board[a][b] = ;
}
else
{
setfillcolor(WHITE);
solidcircle(m.x / * , m.y / * , );
board[a][b] = ;
}
flag++;//1 3 5 2 4 6
}
if (judgewin(a, b))//找到了五子棋
{
if(flag % == )
{
MessageBox(hwnd,"玩家1获胜","游戏结束",MB_OK);
exit();//退出程序
}
else
{
MessageBox(hwnd, "玩家2获胜","游戏结束",MB_OK);
exit();//退出程序
}
}
}
}
//判断输赢
int judgewin(int a, int b)
{
int i;
int j;
int t = - flag % ;
//横着方向的判断
for (i = a - , j = b; i < a; i++)
{
j = b;
if (i >= && i <= && t == board[i][j] && t == board[i + ][j] && t == board[i + ][j] && t == board[i + ][j] && t == board[i + ][j])
{
return ;
}
}
//竖着方向
for (i = a, j = b - ; j < b; j++)
{
if (j >= && j <= && t == board[i][j] && t == board[i][j + ] && t == board[i][j + ] && t == board[i][j + ] && t == board[i][j + ])
{
return ;
}
}
for (i = a - , j = b - ; i <= a, j <= b; i++, j++)
{
if (i >= && i <= && t == board[i][j] && t == board[i + ][j + ] && t == board[i + ][j + ] && t == board[i + ][j + ] && t == board[i + ][j + ])
{
return ;
}
}
for (i = a - , j = b + ; i <= a, j >= ; i++, j--)
{
if (i >= && i <= && t == board[i][j] && t == board[i + ][j - ] && t == board[i + ][j - ] && t == board[i + ][j - ] && t == board[i + ][j - ])
{
return ;
}
}
}
int main()
{
initGame();
playChess();
getchar();//防止闪退
return ;
}

我也没写过看教程的不过,其实也不是那么难。。。但是我出现了一个问题想请教一下

觉得自己没有做错可是。。。。。知道的可以告知一下吗谢谢

最新文章

  1. Hilbert-Huang Transform(希尔伯特-黄变换)
  2. Cordova环境搭建 &amp; HelloWorld
  3. 详解收发不畅原因及U-Mail邮件中继解决之道
  4. 转载:Spring AOP (下)
  5. django 技巧锦集
  6. PLSQL_Oracle外部表的概念和使用(案例)
  7. android图片处理方法(不断收集中)
  8. STL总结之bitset
  9. 如何在eclipse使用StaggeredGridView
  10. poj 3253 Fence Repair(模拟huffman树 + 优先队列)
  11. Android03-Activity生命周期及启动模式
  12. 11gRAC CHM 管理
  13. Jvascript方法
  14. LSM树由来、设计思想以及应用到HBase的索引(转)
  15. sql注入-推断是否存在SQL注入-单引号
  16. 高性能JavaScript(数据存取)
  17. (原)使用tensorboard显示loss
  18. 代码重定位和位置无关码——运行于nor flash
  19. TensorFlow 之 手写数字识别MNIST
  20. php过滤文字中的表情字符和mysql服务端对emoji的支持

热门文章

  1. 阿里云服务器安装nginx(ubantu16.04)
  2. springdata框架
  3. Python学习笔记005
  4. [ Pytorch ] torch.squeeze() 和torch.unsqueeze()的用法
  5. 收藏 40 2 CPD (广告合作方式)
  6. Number()、parseInt()、parseFloat()、~~、~
  7. 3 (mysql实战) 事务隔离
  8. UniGUI之提示信息MessageDlg及获得信息Prompt(15)
  9. Python入门之元组
  10. 洛谷 P3320 [SDOI2015]寻宝游戏