VC++游戏开发:五子棋

一、程序运行时情况

开发:五子棋-vc++6.0">

二、本程序里的计算机具有自动判断的功能,能根据当前棋子的布局情况采用相关的 走子方式。为了避免在走子时候出现屏幕闪烁,采用双缓冲进行绘图输出,以下是软件实 现的部分代码:

#include "stdafx.h"
在CFiveChessView类中定义了如下的数据结构:
  enum  {MAX_X = 18, MAX_Y=18, MIN_X =1, MIN_Y =1};

  // NONE :空位置:BLACK :黑 WHITE 白
  enum  {NONE = 0, BLACK = 1, WHITE = 2};
  // ATTACK :进攻:DEFEND :防守
    enum  {ATTACK = 0, DEFEND = 1};
  // MAN_FIRST :黑先:COMPUTER_FIRST :白先
    enum  {MAN_FIRST = 0, COMPUTER_FIRST = 1};
  // BOTH_PEASE :和:BLACK_WIN :黑胜 WHITE_WIN: 白胜
    enum  {BOTH_PEASE=0, BLACK_WIN = 1, WHITE_WIN = 2};
  // L_TO_R:左到右 T_TO_B :上到下: LB_TO_RT :左下到右上,LT_TO_RB左上到右 下
    enum  {L_TO_R=0, T_TO_B = 1, LB_TO_RT = 2 , LT_TO_RB = 3};
    CChess fiveChess;
  int m_nLastBlackPos_x;
  int m_nLastBlackPos_y;
  int m_nCurrentWhitePos_x;
  int m_nCurrentWhitePos_y;
在CMainFrame类中PreCreateWindow(CREATESTRUCT& cs)增加如下代码设置固定窗口 大小:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
  if( !CFrameWnd::PreCreateWindow(cs) )
    return FALSE;
  cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX;// | WS_THICKFRAME;
  cs.style &= ~WS_BORDER;
  cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
  int iWinBorderX = GetSystemMetrics(SM_CXBORDER);
  int iWinBorderY = GetSystemMetrics(SM_CYBORDER);
  int iCaptionY = GetSystemMetrics(SM_CYCAPTION);
  int iMenuY = GetSystemMetrics(SM_CYMENU);
  int iStausY = GetSystemMetrics(SM_CYMENU);
  cs.cx = 510 + iWinBorderX ;
  cs.cy = 530 + iWinBorderY + iCaptionY + iStausY + iMenuY;
  return TRUE;
}

时间: 2024-10-01 21:05:52

VC++游戏开发:五子棋的相关文章

IOS游戏开发之五子棋OC版_IOS

先上效果图 - 功能展示 - 初高级棋盘切换效果 实现思路及主要代码详解 1.绘制棋盘 利用Quartz2D绘制棋盘.代码如下 - (void)drawBackground:(CGSize)size{ self.gridWidth = (size.width - 2 * kBoardSpace) / self.gridCount; //1.开启图像上下文 UIGraphicsBeginImageContext(size); //2.获取上下文 CGContextRef ctx = UIGraph

【ANDROID游戏开发十六】ANDROID GESTURE之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/337.html ----------------------- 『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块:请点击下面联系进入阅读:

HTML5游戏开发的5条实用建议

HTML5很棒,因为它几乎无所不能--它并不是为某种特殊的应用设计的.更重要的是,HTML5几乎是无处不在的.它就在你的PC机上.你的手机上.你的平板设备上--它甚至可能就在你的厨房电器上. 正是由于HTML5具有丰富的功能并且无处不在,所以它给开发者带来了很多的灵感.俗话说得好,"一旦开发者有了灵感,他们就开始编写游戏了."(这句话应该是作者编的) 幸运的是,有关HTML5游戏开发的指南现在已经有很多了.而这篇文章则是要告诉开发者在开发HTML5游戏以前应该具备的一些全局概念.你能

【IOS-COCOS2D游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)/图片缩放后模糊透明/图片不清晰【2013年12月13日补充】/动画播放出现毛边以及禁止游戏中自动锁屏问题!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2d/507.html 本章节主要为大家介绍在游戏开发过程中经常遇到的两个问题:  1. 解决滚屏背景或拼接地图有黑边! 对于游戏开发中,背景(游戏地图)是必要的元素之一,那么对于大部分游戏的背景都是动态,或者不断移动的:例如RPG中的背景随着人物.主角而移动,那么一般情况下背景都是由地图编辑器(图块)拼出来的,要不就

监听器在游戏开发中的应用----消息回调

我一向是不太喜欢给一些东西强加上个名字.但为了随波逐流,我还是这样做了. 在我们的游戏开发中,通常会遇到两个模块之间的通信. 回调估计是最常用的方式了. 回调的设计思想很简单,就是两个对象相互注册,然后在需要的时候调用对方的函数. 如下: class B;   class A   {   public:       void RegisterCallback(B* pB)       {           m_pB = pB;       }       void ActiveA()     

大家快来玩转盘抽奖游戏(走在网页游戏开发的路上(七))

.  抽奖流程 其实我们的Flash只是一个显示作用,要转到哪个位置(中哪个奖品)是后台来完成的.而且每个奖品的概率是不同的,不是等概率的,我想没有转盘抽奖游戏是等概率的.从玩家点击"抽奖"开始到结束,与后台的交互如下: 转盘抽奖的大致流程是这样的: F  玩家点击Flash中的"抽奖"按钮: F  Flash调用web页面中的Javascript函数,告诉它玩家开始抽奖了.当然Flash调用JS的时候是带了参数的,比如是谁在抽奖等详细信息: web页面中的Java

一起学wp7 XNA游戏开发(一. 初识XNA)

XNA中的X表示能够在Windows Xbox和合作伙伴之间达到跨平台的强大的软件工具.N表示"下一代(Next-generation)",A表示"架构(Architecture)". XNA是基于DirectX的游戏开发环境,是微软对于 Managed DirectX 的修正及扩充版本.它的任务是帮助开发者在创建更加优秀快速和跨平台的游戏时能够减少费用.通过整合Microsoft的最佳创新和来自业界的对于游戏开发的最佳创新,XNA旨在降低大量的开发费用并且允许开发

一起学wp7 XNA游戏开发(三. 一 SpriteFont)

在游戏开发中,一般首先碰到的是文字,对于文字又需要字体的支持,在XNA中,如果要使用文字,就需要先指定字体,对于字体XNA使用了SpriteFont和 SpriteFontTexture两种方式来指定字体. SpriteFont 这个字体文件实际上是一个XML的配置文件,用来配置字体.字体大小.字体样式.字体编码范围.然后在编译时会按这个配置,将字体编译成.xnb二进制文件. <?xml version="1.0″ encoding="utf-8″?><XnaCont

J2ME游戏开发中时钟的简单实现

时钟 在游戏开发中,有时候我们需要一个时钟来记录游戏的时间,如果时间结束则结束游戏.本文介绍如何在J2ME中使用Timer和TimerTask来实现这样一个时钟,并给出具体代码实例. 在java.util包中有一个TimerTask类,你可以扩展这个类并且实现他的run()方法,在run()方法中编写我们的逻辑代码.如果我们想制作一个游戏时钟,那么非常简单我们编写一个GameClock类扩展TimerTask,GameClock需要维持一个实例变量timeLeft,这样我们就可以记录游戏剩余的时