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

📄 init.cpp

📁 坦克大战3.0源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "public.h"/* ----------------------------------- */voidGameEngine_Init (GameEngine * ge){	Uint32 VideoFlags;	int SVolume = 128;	/* Video stuff */	if (!Video_Init (ge))	{		fprintf (stderr, "Can't init video!\n");		exit (1);	}	SDL_WM_SetCaption ("Tank Battle", "Tank");	SDL_ShowCursor (1);	ge->swapscreen =	    SDL_CreateRGBSurface (SDL_SRCALPHA | SDL_HWSURFACE, WIDTH, HEIGHT, BPP,	                          ge->screen->format->Rmask,	                          ge->screen->format->Gmask,	                          ge->screen->format->Bmask,	                          ge->screen->format->Amask);	if (ge->swapscreen == NULL)		fprintf (stderr, "Can't allocate SwapScreen!\n");	ge->swapscreen = SDL_DisplayFormat (ge->swapscreen);	SDL_EnableKeyRepeat (0, 0);	/* Audio stuff */	////////////////////////////////////////////////////////////	///-----------------------------------------------	if (Sound)	{		if (Mix_OpenAudio (22050, AUDIO_S16, 1, 256) < 0)		{			fprintf (stderr, "Couldn't set 22050 Hz 16-bit audio :%s\n",			         SDL_GetError ());			Sound = 0;		}	}	if (Sound)	{		/* Allocate 4 channels for mixing */		//Mix_AllocateChannels (2);		Mix_Volume (-1, SVolume);		Snd_bom = Mix_LoadWAV ("./snd/bom.wav");		Snd_ding = Mix_LoadWAV ("./snd/ding.wav");		Snd_dow = Mix_LoadWAV ("./snd/dow.wav");	}	/* More data init */	ge->bg1 =	    SDL_CreateRGBSurface (SDL_SRCALPHA | SDL_HWSURFACE, WIDTH, HEIGHT, BPP,	                          ge->screen->format->Rmask,	                          ge->screen->format->Gmask,	                          ge->screen->format->Bmask,	                          ge->screen->format->Amask);	ge->bg2 =	    SDL_CreateRGBSurface (SDL_SRCALPHA | SDL_HWSURFACE, WIDTH, HEIGHT, BPP,	                          ge->screen->format->Rmask,	                          ge->screen->format->Gmask,	                          ge->screen->format->Bmask,	                          ge->screen->format->Amask);	if (ge->bg1 == NULL || ge->bg2 == NULL)	{		fprintf (stderr, "Can't allocate SwapScreen!\n");		Video_Close (ge);	}	ge->bg1 = SDL_DisplayFormat (ge->bg1);	ge->bg2 = SDL_DisplayFormat (ge->bg2);	ge->tiles = IMG_Load ("pics/tiles.png");	SDL_SetColorKey (ge->tiles, SDL_SRCCOLORKEY,	                 SDL_MapRGB (ge->tiles->format, 255, 0, 255));	ge->tiles = SDL_DisplayFormat (ge->tiles);	ge->player1 = IMG_Load ("pics/player1.png");	SDL_SetColorKey (ge->player1, SDL_SRCCOLORKEY,	                 SDL_MapRGB (ge->player1->format, 255, 0, 255));	ge->player1 = SDL_DisplayFormat (ge->player1);	ge->player2 = IMG_Load ("pics/player2.png");	SDL_SetColorKey (ge->player2, SDL_SRCCOLORKEY,	                 SDL_MapRGB (ge->player2->format, 255, 0, 255));	ge->player2 = SDL_DisplayFormat (ge->player2);	ge->enemys = IMG_Load ("pics/enemys.png");	SDL_SetColorKey (ge->enemys, SDL_SRCCOLORKEY,	                 SDL_MapRGB (ge->enemys->format, 255, 0, 255));	ge->enemys = SDL_DisplayFormat (ge->enemys);	ge->bullets = IMG_Load ("pics/bullets.png");	SDL_SetColorKey (ge->bullets, SDL_SRCCOLORKEY,	                 SDL_MapRGB (ge->bullets->format, 255, 0, 255));	ge->bullets = SDL_DisplayFormat (ge->bullets);	ge->explodes = IMG_Load ("pics/explodes.png");	SDL_SetColorKey (ge->explodes, SDL_SRCCOLORKEY,	                 SDL_MapRGB (ge->explodes->format, 255, 0, 255));	ge->explodes = SDL_DisplayFormat (ge->explodes);	ge->level = 0;	ge->score[0] = 0;	ge->score[1] = 0;}/* ----------------------------------- */voidGameEngine_Close (GameEngine * ge){	if (ge->swapscreen != NULL)		SDL_FreeSurface (ge->swapscreen);	if (ge->bg1 != NULL)		SDL_FreeSurface (ge->bg1);	if (ge->bg2 != NULL)		SDL_FreeSurface (ge->bg2);	if (ge->tiles != NULL)		SDL_FreeSurface (ge->tiles);	if (ge->player1 != NULL)		SDL_FreeSurface (ge->player1);	if (ge->player2 != NULL)		SDL_FreeSurface (ge->player2);	if (ge->enemys != NULL)		SDL_FreeSurface (ge->enemys);	if (ge->bullets != NULL)		SDL_FreeSurface (ge->bullets);	if (ge->explodes != NULL)		SDL_FreeSurface (ge->explodes);	if (ge->bigtank != NULL)		SDL_FreeSurface (ge->bigtank);	if (Sound)	{		Mix_FreeChunk (Snd_bom);		Mix_FreeChunk (Snd_ding);		Mix_FreeChunk (Snd_dow);		Mix_CloseAudio ();	}}/* ----------------------------------- */intVideo_Init (GameEngine * ge){	Uint32 InitFlags;	InitFlags = SDL_INIT_VIDEO;	if (!Sound)		InitFlags |= SDL_INIT_AUDIO;	if (SDL_Init (InitFlags) < 0)	{		fprintf (stderr, "Can't init SDL:%s\n", SDL_GetError ());		return FALSE;	}	atexit (SDL_Quit);	Video_Set (ge);	return TRUE;}/* ----------------------------------- */voidVideo_Set (GameEngine * ge){	Uint32 VideoFlags;	if (ge->FULLSCREEN)	{		VideoFlags = SDL_SRCALPHA | SDL_SWSURFACE | SDL_FULLSCREEN;	}	else		VideoFlags = SDL_SRCALPHA | SDL_SWSURFACE;	if ((ge->screen =	            SDL_SetVideoMode (WIDTH, HEIGHT, BPP, VideoFlags)) == NULL)	{		fprintf (stderr, "Couldn't set %ix%i video mode: %s\n",		         WIDTH, HEIGHT, SDL_GetError ());		Video_Close (ge);		exit (2);	}}/* ----------------------------------- */voidVideo_Reset (GameEngine * ge){	SDL_BlitSurface (ge->screen, NULL, ge->swapscreen, NULL);	ge->FULLSCREEN = !ge->FULLSCREEN;	Video_Init (ge);	SDL_BlitSurface (ge->swapscreen, NULL, ge->screen, NULL);	SDL_UpdateRect (ge->screen, 0, 0, 0, 0);}/* ----------------------------------- */voidVideo_Close (GameEngine * ge){	SDL_Quit ();}/* ----------------------------------- */voidPlaySound (Mix_Chunk * snd){	int Ch;	if (Sound)	{		if (Mix_PlayChannel (-1, snd, 0) < 0)		{			Ch = Mix_GroupOldest (-1);			Mix_HaltChannel (Ch);			Mix_PlayChannel (Ch, snd, 0);		}	}}/* ----------------------------------- */voidClearUp (GameEngine * ge){	if (ge->swapscreen != NULL)		SDL_FreeSurface (ge->swapscreen);	if (ge->bg1 != NULL)		SDL_FreeSurface (ge->bg1);

⌨️ 快捷键说明

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