返回首页
  主页 > 编程 > c语言 >

C语言游戏实现向下滚动背景 代码记录

2019-07-18 14:24 阅读:72 来源:智宇SEO自媒体


#pragma once
//-----------------------------------------------------------------
// 包含的文件
//-----------------------------------------------------------------
#include <windows.h>
#include "Resource.h"
#include "GameEngine.h"
#include "Bitmap.h"
#include "Sprite.h"
#include "ScrollingBackground.h"
#include "PersonSprite.h"

//-----------------------------------------------------------------
// 全局变量
//-----------------------------------------------------------------
HINSTANCE             g_hInstance;		  
GameEngine*           g_pGame;			  
HDC                   g_hOffscreenDC;	  
HBITMAP               g_hOffscreenBitmap; 

BackgroundLayer*      g_pBackgroundLayer; 
ScrollingBackground*  g_pBackground;	  


#include "plane.h"
BOOL GameInitialize(HINSTANCE hInstance)
{
              
	g_pGame = new GameEngine(hInstance, TEXT("Plane"), TEXT("飞机大战"), IDI_FEIJI, IDI_FEIJI, 512, 768);
	if (g_pGame == NULL)
		return FALSE;
	//帧频 30/秒 ,设置游戏速度
	g_pGame->SetFrameRate(30);
	//保存实例句柄
	g_hInstance = hInstance;
	return TRUE;
}

void GameStart(HWND hWindow)
{
	//设置随机数的种子
	srand(GetTickCount());
	//屏幕外绘图 和游戏窗口兼容
	g_hOffscreenDC = CreateCompatibleDC(GetDC(hWindow));
	//创建和游戏窗口一样宽高大小的位图
	g_hOffscreenBitmap = CreateCompatibleBitmap(GetDC(hWindow), g_pGame->GetWidth(), g_pGame->GetHeight());
	//把位图选入DC,可以用于屏幕外绘图
	SelectObject(g_hOffscreenDC, g_hOffscreenBitmap);
	//设备上下文环境
	HDC hDC = GetDC(hWindow);
	
	// 创建滚动背景和图层
	g_pBackground = new ScrollingBackground(512, 768);
	g_pBackgroundLayer = new BackgroundLayer(hDC, IDB_BG1, g_hInstance, 2, SD_DOWN);
	g_pBackground->AddLayer(g_pBackgroundLayer);


}

void GameCycle()
{
	g_pBackground->Update();
	// 获取设备环境以重新绘制游戏
	HWND  hWindow = g_pGame->GetWindow();
	HDC   hDC = GetDC(hWindow);
	// 在屏幕外设备环境上绘制游戏
	GamePaint(g_hOffscreenDC);

	// 将屏幕外位图位块传送到游戏屏幕
	BitBlt(hDC, 0, 0, g_pGame->GetWidth(), g_pGame->GetHeight(),
		g_hOffscreenDC, 0, 0, SRCCOPY);

	// 清理
	ReleaseDC(hWindow, hDC);
}



返回首页
利博娱乐计划 利博娱乐官网 利博娱乐APP 利博娱乐走势图 利博娱乐下载 利博娱乐官方 利博娱乐网站 利博娱乐怎么玩 利博娱乐官方 利博娱乐靠谱吗 利博娱乐代理 利博娱乐骗局 利博娱乐投注 利博娱乐倍率 利博娱乐开奖 利博娱乐漏洞