資源簡介
此為博主的windows編程課程作業,游戲模式和是“男人就下一百層”相似。代碼簡潔易懂,非常適合學習使用,ui設計美觀可愛(賤萌的提莫)。各種資源完備,可以直接調試。并且由博主調試完成后上傳,可直接運行。
代碼片段和文件信息
//瘋狂的提百萬
#include?
#pragma?comment(lib“winmm.lib“)
#include?
//常量
//窗口大小
#define?WINDOW_WIDTH GetSystemMetrics(SM_CXSCREEN)
#define?WINDOW_HEIGHT GetSystemMetrics(SM_CYSCREEN)
//計時器ID
#define?TIMER 1
//板塊類型
//石板
#define?BOARD_STONE 0
//木板
#define?BOARD_WOOD 1
//釘板
#define?BOARD_DOG 2
//彈簧
#define?BOARD_SPRING 3
//板塊元素數
#define?BOARD_COUNT 10
//角色高度
#define?ROLE_HEIGHT 83
#define?ROLE_WIDTH 83
//角色狀態
//向左
#define?ROLE_LEFT 0
//向右
#define?ROLE_RIGHT 1
//發呆
#define?ROLE_LOGY 2
//全局變量
HDC?g_hDrawDC;//繪制設備上下文
HBITMAP?g_hDrawBmp;//繪制位圖
bool?g_bStart=false;//指示是否開始游戲
HWND?g_hMainWnd;//主窗口句柄
HINSTANCE?g_hInstance;//程序實例句柄
bool?bMoved=false;//角色是否移動過
int?num=0;
int?nKey;
struct?Board//板塊描述
{
int?nType;//板塊類型
int?nState;//板塊狀態
int?nStep;//計數
int?xy;//板塊位置
};
Board?g_Board[BOARD_COUNT];
struct?Role//角色信息
{
int?nState;//角色狀態用于繪制圖片0向左1向右2發呆
int?nStep;//向左向右的步數0~2
int?nFloorCount;//當前層數
int?xy;//角色位置
int?Count;//角色生命數
}?g_Role;
char?g_strInfo[10];//提示信息
//子程式聲明
LRESULT?CALLBACK?WndProc(HWND?hWndUINT?uMsgWPARAM?wParamLPARAM?lParam);
void?Draw();//繪制游戲畫面
void?GameInit();//游戲初始化
void?BoardDeal();//板塊上升處理
int?WINAPI?WinMain(HINSTANCE?hInstanceHINSTANCE?hPrevInstanceLPSTR?lpCmdLineint?nShowCmd)
{
HWND?hWnd;
WNDCLASS?wc;
MSG?Msg;
//注冊窗口類
wc.lpszClassName=“TheMan“;
wc.lpszMenuName=NULL;
wc.lpfnWndProc=WndProc;
wc.style=CS_OWNDC;
wc.hCursor=LoadCursor(NULLIDC_ARROW);
wc.hIcon=LoadIcon(hInstance“ICON“);
wc.hbrBackground=(HBRUSH)COLOR_WINDOW;
wc.hInstance=hInstance;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
RegisterClass(&wc);
//將窗口顯示到屏幕中央
int?xy;//用于計算窗口顯示位置
int?x2y2;
x=(GetSystemMetrics(SM_CXSCREEN)-393)/2;
y=(GetSystemMetrics(SM_CYSCREEN)-330)/6;
x2=(GetSystemMetrics(SM_CXSCREEN)-407)/2;
y2=(GetSystemMetrics(SM_CYSCREEN)-495)/4;
hWnd=CreateWindow(“TheMan““瘋狂的提百萬--MADE?BY?Gatsbyla?Q2450569529“WS_VISIBLE|WS_SYSMENU|WS_MINIMIZEBOX
CW_USEDEFAULT
CW_USEDEFAULT
GetSystemMetrics(SM_CXSCREEN)?GetSystemMetrics(SM_CYSCREEN)
NULLNULL
hInstanceNULL);
if(!hWnd)
{
MessageBox(NULL“創建窗口失敗!““Error“MB_OK);
return?0;//退出程序
}
g_hMainWnd=hWnd;
g_hInstance=hInstance;
//創建繪制設備上下文
g_hDrawDC=CreateCompatibleDC(GetDC(hWnd));
//必須用GetDC(hWnd)作為下面函數的參數,若用g_hDrawDC繪制出的為黑白圖,不是彩色的
g_hDrawBmp=CreateCompatibleBitmap(GetDC(hWnd)WINDOW_WIDTHWINDOW_HEIGHT);//創建與窗口大小相同的位圖用于刷新窗口
//綁定位圖到DC
Selectobject(g_hDrawDCg_hDrawBmp);
//繪制底色
RECT?rt;
rt.left=0;
rt.top=0;
rt.right=WINDOW_WIDTH;
rt.bottom=WINDOW_HEIGHT;
FillRect(g_hDrawDC&rtNULL);
//繪制Logo
HBITMAP?hBmp;
HDC?hDC;
hDC=CreateCompatibleDC(GetDC(hWnd));
hBmp=LoadBitmap(hInstance“LOGO“);
Selectobject(hDChBmp);
TransparentBlt(g_hDrawDCx-150y393330hDC003933300xFFFFFF);//0xFFFFFF為要屏蔽的白色
????hBmp=LoadBitmap(hInstance“背景1“);
評論
共有 條評論