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

📄 public.h

📁 坦克大战3.0源代码
💻 H
字号:
/*        tank-sdl - tank.c        Copyright (c) 2004 by lanche <lanche@163.com> ___________________________________________________________________________        This program is free software; you can redistribute it and/or modify        it under the terms of the GNU General Public License as published by        the Free Software Foundation; either version 2, or (at your option)        any later version.         This program is distributed in the hope that it will be useful,        but WITHOUT ANY WARRANTY; without even the implied warranty of        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        GNU General Public License for more details.         You should have received a copy of the GNU General Public License        along with this program; if not, write to the Free Software        Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.         See the file COPYING in the same directory for more information.*/#include <stdlib.h>#include <SDL/SDL.h>#include <SDL/SDL_image.h>#include <SDL/SDL_mixer.h>#include <time.h>#define WIDTH    640#define HEIGHT   480#define BPP      16#define PLANE_W  34#define PLANE_H  27#define TILE_W   16#define TILE_H   16/* pic's code */#define RV -1#define OO 0#define A1 1#define A2 2#define A3 10#define A4 11#define A5 19#define A6 20#define B1 28#define B2 29#define B3 30#define B4 37#define B5 38#define B6 39#define C1 31#define C2 32#define C3 33#define C4 40#define C5 41#define C6 42#define D1 46#define D2 47#define D3 48#define D4 49#define D5 55#define D6 56#define D7 57#define D8 58#define E1 3#define E2 4#define E3 5#define E4 12#define E5 13#define E6 14#define E7 21#define E8 22#define E9 23#define I1 34#define I2 35#define I3 36#define I4 43#define I5 44#define I6 45#define G1 6#define G2 7#define G3 8#define G4 9#define G5 15#define G6 16#define G7 17#define G8 18#define G9 24#define Ga 25#define Gb 26#define Gc 27#define HH 50#define TT 59/* Define direct */#define DIR_UP    0#define DIR_LEFT  1#define DIR_DOWN  2#define DIR_RIGHT 3#define MAX_ENEMYS 10#define MAX_LEVELS 4#define TRUE   1#define FALSE  0typedef enum GameState{    GAME_START,    GAME_MENU,    GAME_RUNNING,    GAME_RESET,    GAME_WIN,    GAME_OVER,    GAME_EXIT} GameState;typedef struct KeyState{	int Up[2], Down[2], Left[2], Right[2], Fire[2], Move[2], F4, Quit, AnyKey, Debug;}KeyState;typedef struct GameEngine{	SDL_Surface *screen,	*swapscreen,	*bg1, *bg2,	*tiles, *player1, *player2, *enemys, *bullets, *explodes, *bigtank;	//player1 分别为图像	SDL_Event event;	int FULLSCREEN;	Uint32 last_time;	Uint32 now_time;	int max_enemys;	int bore_enemy;	int enemy_left;	int player_left[2];	//left life	int clock;	int level;            	//级别	Uint32 score[2];        //分数	int enemy_pos[5][2];}GameEngine;typedef struct Sprite_t{	int id;		//标记为哪个坦克	int type;	int armor;	int width;	int height;	int x;	int y;	int ox;	int oy;	int boring;	int active;	int dir;	int speed;	int timer1;			/* use to show subframe */	int clock;	SDL_Surface *image;}Sprite_t;extern int Sound;extern Mix_Chunk *Snd_bom, *Snd_ding, *Snd_dow;extern GameState game_state;extern GameEngine game_engine;extern KeyState key_state;extern Sprite_t player[2];extern Sprite_t enemy[MAX_ENEMYS];extern Sprite_t bullet[MAX_ENEMYS + 4];extern Sprite_t explode[4];extern int bg[][34];extern int players;void GameEngine_Init (GameEngine * ge);void GameEngine_Close (GameEngine * ge);int Video_Init (GameEngine * ge);void Video_Set (GameEngine * ge);void Video_Reset (GameEngine * ge);void Video_Close (GameEngine * ge);void Game_Menu ();void PlaySound (Mix_Chunk * snd);int EVENT_FILTER (const SDL_Event * event);void Load_Data (GameEngine * ge);void Play_Game (GameEngine * ge);void BorePlayer (GameEngine * ge, Sprite_t * sprite,int id);void BoreEnemy (GameEngine * ge);void BoreBigTank (GameEngine * ge, int type);int MoveAble (Sprite_t * sprite, int x, int y);int PlaceAble (Sprite_t * tank);void DrawSprite (GameEngine * ge, Sprite_t * sprite);void ClearSprite (GameEngine * ge, Sprite_t * sprite);void ExplodeSprite (Sprite_t * sprite);void ChangeDirection (Sprite_t * sprite, int direction);void PlayerFire (GameEngine * ge, Sprite_t * bullet,int id);void EnemyFire (GameEngine * ge, Sprite_t * bullet, int index);void BigTankFire (GameEngine * ge, Sprite_t * bigtank, int index);void Burst (GameEngine * ge, Sprite_t * object);void Explode (GameEngine * ge, Sprite_t * tank);void ExplodeHawk (GameEngine * ge);void Disp_TankLeft (GameEngine * ge);void Show_Score (GameEngine * ge);void Add_Score (GameEngine * ge, int player, Sprite_t * tank);void ClearUp (GameEngine * ge);int HitTest (Sprite_t * obj1, Sprite_t * obj2);int HitObject (Sprite_t * bullet, int x, int y);void HitTile (GameEngine * ge, Sprite_t * bullet, int x, int y);int InterSect (int x1, int y1, int x2,int  y2);void ShowGameOver (GameEngine * ge);void ShowRoundClear (GameEngine * ge);Uint32 TimeLeft ();

⌨️ 快捷键说明

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