⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 主程序.cpp

📁 过程的c++编译器 里面有超级玛丽的源代码 还有一个 管理系统的源代码
💻 CPP
字号:
/*********************************************
程序设计:罗穆峰  2008-11-20
http://lmf.biaotian.com
E-mail: lmf@biaotian.com
QQ: 16324942 [模范英雄]
*********************************************/

#include "Graph.h"
#include "GraphMan.h"
#include "Sound.h"
#include "SoundMan.h"
#include "Game.h"
#include "Control.h"

CGraph gGraph;
CGraphMan gGraphMan;
CSound gSound;
CSoundMan gSoundMan;
CControl gControl;
CGame gGame;

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	int KeyState;
	switch(uMsg)
	{
	case WM_CLOSE:
		PostQuitMessage(0);
		break;
	case WM_PAINT://刷新显示
		BeginPaint(hWnd,&ps);
		BitBlt(ps.hdc,0,0,288,256,gGraph.GetMemDC(),0,0,SRCCOPY);
		EndPaint(hWnd,&ps);
		break;
	case WM_TIMER:
		gControl.Clock();//向游戏控制器发送时钟信号
		break;
	case WM_KEYDOWN:
	case WM_KEYUP:
		//检查各个按键的状态
		KeyState=0;
		if(GetKeyState(VK_UP)&0x80000000)KeyState|=1<<0;
		if(GetKeyState(VK_DOWN)&0x80000000)KeyState|=1<<1;
		if(GetKeyState(VK_LEFT)&0x80000000)KeyState|=1<<2;
		if(GetKeyState(VK_RIGHT)&0x80000000)KeyState|=1<<3;
		if(GetKeyState('W')&0x80000000)KeyState|=1<<4;
		if(GetKeyState('Q')&0x80000000)KeyState|=1<<5;
		if(GetKeyState(VK_RETURN)&0x80000000)KeyState|=1<<6;
		gControl.KeyChanged(KeyState);
		break;
	default:
		return DefWindowProc(hWnd,uMsg,wParam,lParam);
	}
	return 0;
}

int main()
{
	//从资源文件中加载声音数据
	HMODULE hModule=GetModuleHandle(NULL);
	HRSRC hrSrc;
	hrSrc=FindResource(hModule,"BackMusic1","WAVE");
	BackMusic_Len[0]=SizeofResource(hModule,hrSrc);
	BackMusic_Sound[0]=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"BackMusic2","WAVE");
	BackMusic_Len[1]=SizeofResource(hModule,hrSrc);
	BackMusic_Sound[1]=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"AttackDemon","WAVE");
	AttackDemon_Len=SizeofResource(hModule,hrSrc);
	AttackDemon_Sound=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"AttackMario","WAVE");
	AttackMario_Len=SizeofResource(hModule,hrSrc);
	AttackMario_Sound=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"Block","WAVE");
	Block_Len=SizeofResource(hModule,hrSrc);
	Block_Sound=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"Bullet","WAVE");
	Bullet_Len=SizeofResource(hModule,hrSrc);
	Bullet_Sound=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"Coin","WAVE");
	Coin_Len=SizeofResource(hModule,hrSrc);
	Coin_Sound=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"Death","WAVE");
	Death_Len=SizeofResource(hModule,hrSrc);
	Death_Sound=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"EatFlower","WAVE");
	EatFlower_Len=SizeofResource(hModule,hrSrc);
	EatFlower_Sound=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"FlowerRise","WAVE");
	FlowerRise_Len=SizeofResource(hModule,hrSrc);
	FlowerRise_Sound=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"Jump","WAVE");
	Jump_Len=SizeofResource(hModule,hrSrc);
	Jump_Sound=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"KillDemon","WAVE");
	KillDemon_Len=SizeofResource(hModule,hrSrc);
	KillDemon_Sound=(char*)LockResource(LoadResource(hModule,hrSrc));
	hrSrc=FindResource(hModule,"BrickBroken","WAVE");
	BrickBroken_Len=SizeofResource(hModule,hrSrc);
	BrickBroken_Sound=(char*)LockResource(LoadResource(hModule,hrSrc));

	//注册一个窗口类
	WNDCLASS wc;
	wc.cbClsExtra=0;
	wc.cbWndExtra=0;
	wc.hbrBackground=(HBRUSH)GetStockObject(NULL_BRUSH);
	wc.hCursor=LoadCursor(NULL,IDC_ARROW);
	wc.hInstance=GetModuleHandle(NULL);
	wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
	wc.lpfnWndProc=WndProc;
	wc.lpszClassName="MarioWnd";
	wc.lpszMenuName=NULL;
	wc.style=0;
	RegisterClass(&wc);

	//创建主窗口
	HWND hMainWnd=CreateWindow("MarioWnd","采磨菇",WS_OVERLAPPED|WS_SYSMENU,CW_USEDEFAULT,CW_USEDEFAULT,288,256,NULL,NULL,wc.hInstance,NULL);
	//调整主窗口客户区的大小为288*256
	RECT rect;
	GetClientRect(hMainWnd,&rect);
	rect.right=288+(288-rect.right);
	rect.bottom=256+(256-rect.bottom);
	SetWindowPos(hMainWnd,NULL,0,0,rect.right,rect.bottom,SWP_NOZORDER|SWP_NOMOVE);
	//显示主窗口
	ShowWindow(hMainWnd,SW_SHOW);
	
	//将各个类连接起来
	gGraph.Init(hMainWnd);
	gGraphMan.SetGraph(&gGraph);
	gGraphMan.SetGame(&gGame);
	gSound.Init();
	gSoundMan.SetSound(&gSound);
	gControl.SetGraph(&gGraphMan);
	gControl.SetGame(&gGame);
	gGame.SetSound(&gSoundMan);

	//启动定时器
	SetTimer(hMainWnd,1,50,NULL);

	//进入消息循环
	MSG msg;
	while(GetMessage(&msg,NULL,NULL,NULL))
	{
		DispatchMessage(&msg);
	}

	gGraph.UnInit();

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -