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

📄 function.cpp

📁 坦克大战3.0源代码
💻 CPP
字号:
#include "public.h"/* ----------------------------------- */voidChangeDirection (Sprite_t * sprite, int direction){  int dir;  int row, col;  int dx, dy;  dir = direction < 0 ? (int) (4.0 * rand () / (RAND_MAX + 1.0)) : direction;  if (dir == sprite->dir)    return;  sprite->dir = dir;  row = sprite->x / TILE_W;  col = sprite->y / TILE_H;  dx = sprite->x % TILE_W;  dy = sprite->y % TILE_H;  if (dir == DIR_UP || dir == DIR_DOWN)    {      if (dx < 4)	sprite->x = row * TILE_W;      if (dx > 12)	sprite->x = (row + 1) * TILE_W;    }  else if (dir == DIR_LEFT || dir == DIR_RIGHT)    {      if (dy < 4)	sprite->y = col * TILE_H;      if (dy > 12)	sprite->y = (col + 1) * TILE_H;    }}/* ----------------------------------- */void BorePlayer (GameEngine * ge, Sprite_t * sprite,int id){  if (ge->player_left[id] < 0)    return;  sprite->armor = 0;  sprite->width = 32;  sprite->height = 32;  if(id==0)  sprite->x = 13 * 16;  else  sprite->x = 19 * 16;  sprite->y = 25 * 16;  sprite->ox = sprite->x;  sprite->oy = sprite->y;  sprite->boring = 1;  sprite->active = 1;  sprite->dir = DIR_UP;  sprite->speed = 3;  sprite->type = 0;  if(id==0)  sprite->image = ge->player1;  else  sprite->image=ge->player2;  //ge->player_left--;  //if(ge->player_left<0)ge->player_left=4;}/* ----------------------------------- */voidPlayerFire (GameEngine * ge, Sprite_t * sprite,int id){  int dx[4] = { 10, 0, 10, 16 };  int dy[4] = { 0, 10, 16, 10 };  if (bullet[id].active == 1)    return;  bullet[id].width = 12;  bullet[id].height = 12;  bullet[id].x = sprite->x + dx[sprite->dir];  bullet[id].y = sprite->y + dy[sprite->dir];  bullet[id].active = 1;  bullet[id].dir = sprite->dir;  bullet[id].speed = 7;  bullet[id].timer1 = 0;  bullet[id].image = ge->bullets;}/* ----------------------------------- */voidEnemyFire (GameEngine * ge, Sprite_t * sprite, int index){  int dx[4] = { 10, 0, 10, 16 };  int dy[4] = { 0, 10, 16, 10 };  int i;  i = index + 4;  if (bullet[i].active == 1)    return;  bullet[i].width = 12;  bullet[i].height = 12;  bullet[i].x = sprite->x + dx[sprite->dir];  bullet[i].y = sprite->y + dy[sprite->dir];  bullet[i].active = 1;  bullet[i].dir = sprite->dir;  bullet[i].speed = 5;  bullet[i].timer1 = 0;  bullet[i].image = ge->bullets;}/* ----------------------------------- */voidBigTankFire (GameEngine * ge, Sprite_t * bigtank, int index){  int i;  i = index + 4;  if (bullet[i].active == 1)    return;  bullet[i].width = 12;  bullet[i].height = 12;  bullet[i].x = bigtank->x + bigtank->width / 2;  bullet[i].y = bigtank->y + bigtank->height;  bullet[i].active = 1;  bullet[i].dir = DIR_DOWN;  bullet[i].speed = 5;  bullet[i].timer1 = 0;  bullet[i].image = ge->bullets;}/* ----------------------------------- */voidBoreEnemy (GameEngine * ge){  int i;  int pos, dir;  if (ge->bore_enemy < 1)    return;  for (i = 0; i < ge->max_enemys; i++)    {      if (enemy[i].active != 1)	{	  pos = (int) (5.0 * rand () / (RAND_MAX + 1.0));	  dir = (int) (3.0 * rand () / (RAND_MAX + 1.0));	  enemy[i].armor = 0;	  enemy[i].width = 32;	  enemy[i].height = 32;	  //enemy[i].x=pos*32*4;	  //pos=(int)(3.0*rand()/(RAND_MAX+1.0));	  //enemy[i].y=pos*32;	  enemy[i].x = ge->enemy_pos[pos][0] * 16;	  enemy[i].y = ge->enemy_pos[pos][1] * 16;	  enemy[i].ox = enemy[i].x;	  enemy[i].oy = enemy[i].y;	  enemy[i].boring = 1;	  enemy[i].active = 1;	  enemy[i].dir = DIR_DOWN;	  if (ge->bore_enemy < 3)	    {	      enemy[i].armor = 2;	      enemy[i].type = 2;	      enemy[i].speed = 1;	    }	  else if (ge->bore_enemy < 7)	    {	      enemy[i].type = 1;	      enemy[i].speed = 4;	    }	  else	    {	      enemy[i].type = 0;	      enemy[i].speed = 3;	    }	  enemy[i].clock = 0;	  enemy[i].image = ge->enemys;	  ge->bore_enemy--;	  return;	}    }}/* ----------------------------------- */voidBoreBigTank (GameEngine * ge, int type){  int i;  for (i = ge->max_enemys; i < ge->max_enemys + 2; i++)    {      enemy[i].armor = 14;      enemy[i].width = 128;      enemy[i].height = 54;      enemy[i].x = 48 + (i - ge->max_enemys) * 160;      enemy[i].y = 10 + (i - ge->max_enemys) * 64;      enemy[i].ox = enemy[i].x;      enemy[i].oy = enemy[i].y;      enemy[i].boring = 0;      enemy[i].active = 1;      enemy[i].dir = DIR_RIGHT;      enemy[i].type = type;      enemy[i].speed = 2;      enemy[i].clock = 0;      enemy[i].timer1 = 0;      enemy[i].image = ge->bigtank;    }}/* ----------------------------------- */voidExplode (GameEngine * ge, Sprite_t * tank){  int i, x, y;  SDL_Rect rect;  x = tank->x - 24;  y = tank->y - 24;  for (i = 0; i < 4; i++)    {      if (explode[i].active == 1)	continue;      explode[i].width = 80;      explode[i].height = 80;      explode[i].x = x;      explode[i].y = y;      explode[i].ox = x;      explode[i].oy = y;      explode[i].active = 1;      explode[i].timer1 = 0;      explode[i].image = ge->explodes;      rect.w = 80;      rect.h = 80;      rect.x = explode[i].x;      rect.y = explode[i].y;    }}/* ----------------------------------- */voidExplodeHawk (GameEngine * ge){  Sprite_t hawk;  SDL_Rect rect;  hawk.width = hawk.height = 32;  hawk.ox = hawk.x = 16 * 16;  hawk.oy = hawk.y = 25 * 16;  rect.w = rect.h = 32;  rect.x = hawk.x;  rect.y = hawk.y;  SDL_BlitSurface (ge->bg1, &rect, ge->screen, &rect);  SDL_BlitSurface (ge->bg1, &rect, ge->bg2, &rect);  hawk.active = 1;  Explode (ge, &hawk);  /* Clear bg flags */  bg[25][16] = OO;  bg[25][17] = OO;  bg[26][16] = OO;  bg[26][17] = OO;}/* ----------------------------------- */voidBurst (GameEngine * ge, Sprite_t * object){  ClearSprite (ge, object);  if (object->ox != object->x || object->oy != object->y)    {      object->ox = object->x;      object->oy = object->y;      ClearSprite (ge, object);    }  object->active = 0;}/* ----------------------------------- */voidAdd_Score (GameEngine * ge, int player, Sprite_t * tank){  int value[3] = { 400, 600, 1000 };  if (tank->type < 10)    ge->score[player] += value[tank->type];  else    ge->score[player] += 3000;}

⌨️ 快捷键说明

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