魔塔 游戏开发 3
2013-01-16 19:07
113 查看
----------------------window.cpp--------------------------------------
#include "Game.h"
//=======================Values=============================
int nWindowltX=(GetSystemMetrics(SM_CXSCREEN)-1000)/2; //left top x position
int nWindowltY=(GetSystemMetrics(SM_CYSCREEN)-700)/2-30; //left top y position
#define WINDOWW 1000 //window width
#define WINDOWH 700+34 //window height
HWND hWnd;
HDC hdc;
//=====================Functions======================================
bool MyInitWindow(HINSTANCE hInstance,int nShowCmd);
LRESULT CALLBACK MsgProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
//=====================WinMain=======================================
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
MSG msg;
if(!MyInitWindow(hInstance,nShowCmd))
{
return 0;
}
if(!Game_Init(hdc))
{
return 0;
}
while(!bGameOver)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Game_Run(hdc);
}
Game_ShutDown();
return 1;
}
bool MyInitWindow(HINSTANCE hInstance,int nShowCmd)
{
WNDCLASSEX wndex;
wndex.cbClsExtra=0;
wndex.cbSize=sizeof(WNDCLASSEX);
wndex.cbWndExtra=0;
wndex.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndex.hCursor=LoadCursor(NULL,IDC_ARROW);
wndex.hIcon=NULL;
wndex.hIconSm=NULL;
wndex.hInstance=hInstance;
wndex.lpfnWndProc=MsgProc;
wndex.lpszClassName=L"Window";
wndex.lpszMenuName=NULL;
wndex.style=CS_HREDRAW||CS_VREDRAW;
if(!RegisterClassEx(&wndex))
{
MessageBox(NULL,L"register error!",NULL,MB_OK);
return false;
}
hWnd=CreateWindow(L"Window",L"MyWindow",WS_OVERLAPPEDWINDOW,
nWindowltX,nWindowltY,WINDOWW,WINDOWH,
NULL,NULL,hInstance,NULL);
if(!hWnd)
{
MessageBox(NULL,L"CrateWindow error!",NULL,MB_OK);
return false;
}
ShowWindow(hWnd,nShowCmd);
UpdateWindow(hWnd);
hdc=GetDC(hWnd);
return true;
}
LRESULT CALLBACK MsgProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
bGameOver=true;
PostQuitMessage(0);
break;
case WM_MOUSEMOVE:
if(bIsStartScreen)
{
WORD x=LOWORD(lParam);
WORD y=HIWORD(lParam);
if((x>10)&&(x<120)&&y>600&&y<650)//在按钮上
{
nBtnStart_y=60;
bIsBtnS=true;
}
else//不在按钮上
{
nBtnStart_y=0;
bIsBtnS=false;
bBtnSHave=false;
}
if(x>150&&x<250&&y>600&&y<650)
{
nBtnEnd_y=60;
bIsBtnE=true;
}
else
{
nBtnEnd_y=0;
bIsBtnE=false;
bBtnEHave=false;
}
}
break;
case WM_LBUTTONDOWN:
if(bIsStartScreen)
{
WORD x=LOWORD(lParam);
WORD y=HIWORD(lParam);
if((x>10)&&(x<120)&&y>600&&y<650)//在按钮上
{
bStartToMapScroll=true;
}
if(x>150&&x<250&&y>600&&y<650)
{
bGameOver=true;
PostQuitMessage(0);
}
}
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
}
#include "Game.h"
//=======================Values=============================
int nWindowltX=(GetSystemMetrics(SM_CXSCREEN)-1000)/2; //left top x position
int nWindowltY=(GetSystemMetrics(SM_CYSCREEN)-700)/2-30; //left top y position
#define WINDOWW 1000 //window width
#define WINDOWH 700+34 //window height
HWND hWnd;
HDC hdc;
//=====================Functions======================================
bool MyInitWindow(HINSTANCE hInstance,int nShowCmd);
LRESULT CALLBACK MsgProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
//=====================WinMain=======================================
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
MSG msg;
if(!MyInitWindow(hInstance,nShowCmd))
{
return 0;
}
if(!Game_Init(hdc))
{
return 0;
}
while(!bGameOver)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Game_Run(hdc);
}
Game_ShutDown();
return 1;
}
bool MyInitWindow(HINSTANCE hInstance,int nShowCmd)
{
WNDCLASSEX wndex;
wndex.cbClsExtra=0;
wndex.cbSize=sizeof(WNDCLASSEX);
wndex.cbWndExtra=0;
wndex.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndex.hCursor=LoadCursor(NULL,IDC_ARROW);
wndex.hIcon=NULL;
wndex.hIconSm=NULL;
wndex.hInstance=hInstance;
wndex.lpfnWndProc=MsgProc;
wndex.lpszClassName=L"Window";
wndex.lpszMenuName=NULL;
wndex.style=CS_HREDRAW||CS_VREDRAW;
if(!RegisterClassEx(&wndex))
{
MessageBox(NULL,L"register error!",NULL,MB_OK);
return false;
}
hWnd=CreateWindow(L"Window",L"MyWindow",WS_OVERLAPPEDWINDOW,
nWindowltX,nWindowltY,WINDOWW,WINDOWH,
NULL,NULL,hInstance,NULL);
if(!hWnd)
{
MessageBox(NULL,L"CrateWindow error!",NULL,MB_OK);
return false;
}
ShowWindow(hWnd,nShowCmd);
UpdateWindow(hWnd);
hdc=GetDC(hWnd);
return true;
}
LRESULT CALLBACK MsgProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
bGameOver=true;
PostQuitMessage(0);
break;
case WM_MOUSEMOVE:
if(bIsStartScreen)
{
WORD x=LOWORD(lParam);
WORD y=HIWORD(lParam);
if((x>10)&&(x<120)&&y>600&&y<650)//在按钮上
{
nBtnStart_y=60;
bIsBtnS=true;
}
else//不在按钮上
{
nBtnStart_y=0;
bIsBtnS=false;
bBtnSHave=false;
}
if(x>150&&x<250&&y>600&&y<650)
{
nBtnEnd_y=60;
bIsBtnE=true;
}
else
{
nBtnEnd_y=0;
bIsBtnE=false;
bBtnEHave=false;
}
}
break;
case WM_LBUTTONDOWN:
if(bIsStartScreen)
{
WORD x=LOWORD(lParam);
WORD y=HIWORD(lParam);
if((x>10)&&(x<120)&&y>600&&y<650)//在按钮上
{
bStartToMapScroll=true;
}
if(x>150&&x<250&&y>600&&y<650)
{
bGameOver=true;
PostQuitMessage(0);
}
}
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
}
相关文章推荐
- 魔塔 游戏开发1
- 魔塔 游戏开发 2
- 魔塔游戏知识点 cocos2d-x手机游戏开发
- MMORPG大型游戏设计与开发(服务器 游戏场景 核心详述)
- Cocos2d-X开发中国象棋《十二》游戏结果的显示与隐藏
- [Unity游戏开发]场景切换
- [原]【Visual C++】游戏开发笔记十五 游戏人工智能(一) 运动型游戏AI
- JS开发打气球游戏
- NDS游戏开发软件Virtual Game Maker v0.50发布
- 多人交互与体感游戏开发相关技术说明
- 面对对象之差异化的网络数据交互方式--单机游戏开发之无缝切换到C/S模式
- 【Cocos2d游戏开发之六】对触屏事件追加讲解,解决无法触发ccTouchMoved事件[重要!]
- 游戏引擎开发
- 刷一个基于html5开发的网页圣诞游戏
- 【游戏客户端开发】 IOS开发——Swift和Objective-C交互时的一些注意点
- 采用行为树快速开发游戏AI
- Nokia发布SNAP,辅助J2ME网络游戏开发
- android游戏开发实例-可局域网对战的飞行棋(二)
- 关于开发游戏时性能优化的一些方法
- 【Android游戏开发之九】(细节处理)触屏事件中的Bug解决方案以及禁止横屏和竖屏切换!