分享
 
 
 

简单坦克大战

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

今天下午赶出来的,还有很多东西要不要加进去我自己还没决定,因为有些东西以前练过了,而有些东西没练过,还有很多不足之处.

#include <graphics.h>

#include <stdlib.h>

#include <dos.h>

#include <conio.h>

#include <bios.h>

#define KEY_ESC 0x01

#define KEY_SPACE 0x39

#define KEY_UP 0x48

#define KEY_LEFT 0x4b

#define KEY_RIGHT 0x4d

#define KEY_DOWN 0x50

/*1石头,2砖块,3水,5老家,8玩家,9敌人*/

int map[20][20]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

1,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,

1,0,2,2,2,2,0,0,2,2,2,2,0,0,0,0,0,0,0,1,

1,0,0,0,0,0,0,0,2,0,0,2,0,1,1,1,1,0,0,1,

1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,

1,2,2,2,2,2,2,2,0,0,0,0,0,0,0,2,2,0,0,1,

1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,1,

1,0,1,1,1,1,3,3,3,3,0,0,0,0,0,0,0,2,0,1,

1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,

1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,

1,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1,

1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,3,3,3,0,1,

1,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1,

1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,

1,0,0,0,0,3,3,3,1,1,1,1,1,1,1,0,0,0,0,1,

1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,

1,0,2,2,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,

1,0,2,2,0,0,0,0,2,2,2,0,0,0,2,2,0,0,0,1,

1,0,0,0,0,0,0,8,2,5,2,0,0,0,0,0,0,0,0,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};

strUCt f

{

int x;

int y;

int direction;

};

struct play

{

int x;/*行坐标*/

int y;/*列坐标*/

int direction;/*方向*/

struct f fire[5];/*5颗子弹*/

int score;/*分数*/

}Playone;

struct a

{

int x;

int y;

int color;

int direction;

int directiontwo;/*用来判定走的路是否往返*/

int fireplay;/*是否攻击的变量,随机生成*/

struct f fire;

}amy[5];/*敌人的结构体,其实可以添加不同的颜色来表示不同种类的坦克*/

char key_state[128],key_pressed[128];

void Init();/*图象驱动开始*/

void End();/*图象驱动结束*/

void DrawMap();/*画地图*/

void DrawWater(int x,int y);/*画水*/

void DrawBrick(int x,int y);/*画砖*/

void DrawTone(int x,int y);/*画石头*/

void DrawHome(int x,int y);/*画老家*/

void DrawBlack(int x,int y);/*去除内容*/

void DrawPlay(int x,int y);/*画玩家*/

void DrawAmy(int x,int y,int i);/*画敌人*/

void Score();/*输出分数*/

void GamePlay();/*玩游戏过程*/

void GameOver();/*游戏失败*/

void TimeDelay(unsigned long microsec); /*延时函数 传入微秒数*/

int GetKey(int ScanCode);/*这里开始都是按键函数*/

void interrupt far (*OldInt9Handler)();

void far interrupt NewInt9();

void InstallKeyboard();

void ShutDownKeyboard();

void main(void)

{

Init();

DrawMap();

GamePlay();

End();

}

void TimeDelay(unsigned long microsec) /*延时函数 传入微秒数*/

{

union REGS r;

r.h.ah=0x86;

r.x.cx=microsec>>16;

r.x.dx=microsec;

int86(0x15,&r,&r);

}

void Init()/*图象驱动开始*/

{int gd=DETECT,gm;

initgraph(&gd,&gm,"d:\\tc\\tc");

cleardevice();

InstallKeyboard();

}

void End()/*图象驱动结束*/

{

ShutDownKeyboard();

closegraph();

}

void DrawTone(int x,int y)/*画石头*/

{

setfillstyle(SOLID_FILL,7);

bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);

}

void DrawWater(int x,int y)/*画水*/

{

setfillstyle(SOLID_FILL,BLUE);

bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);

}

void DrawBrick(int x,int y)/*画砖*/

{

setfillstyle(SOLID_FILL,6);

bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);

setcolor(15);

line(100+x*20-9,50+y*20-4,100+x*20+9,50+y*20-4);

line(100+x*20-9,50+y*20+4,100+x*20+9,50+y*20+4);

line(100+x*20-4,50+y*20-9,100+x*20-4,50+y*20+9);

line(100+x*20+4,50+y*20-9,100+x*20+4,50+y*20+9);

}

void DrawHome(int x,int y)/*画老家*/

{

setcolor(0);

setfillstyle(SOLID_FILL,GREEN);

fillellipse(100+x*20,50+y*20,9,9);

}

void DrawBlack(int x,int y)/*去除内容*/

{

setcolor(0);

setfillstyle(SOLID_FILL,0);

bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);

}

void DrawPlay(int x,int y)/*画玩家*/

{

setcolor(4);/*玩家为红色*/

circle(100+x*20,50+y*20,7);

switch(Playone.direction)/*判定玩家方向*/

{

case 1:line(100+x*20,50+y*20,100+x*20,50+y*20-9);break;/*上*/

case 2:line(100+x*20,50+y*20,100+x*20+9,50+y*20);break;/*右*/

case 3:line(100+x*20,50+y*20,100+x*20,50+y*20+9);break;/*下*/

case 4:line(100+x*20,50+y*20,100+x*20-9,50+y*20);break;/*左*/

}

}

void DrawAmy(int x,int y,int i)/*画敌人*/

{

if(amy[i].color==12)

setcolor(12);

else if(amy[i].color==13)

setcolor(13);

else/*这里是判定三种颜色的坦克*/

setcolor(14);

circle(100+x*20,50+y*20,7);

switch(amy[i].direction)/*判定玩家方向*/

{

case 1:line(100+x*20,50+y*20,100+x*20,50+y*20-9);break;/*上*/

case 2:line(100+x*20,50+y*20,100+x*20+9,50+y*20);break;/*右*/

case 3:line(100+x*20,50+y*20,100+x*20,50+y*20+9);break;/*下*/

case 4:line(100+x*20,50+y*20,100+x*20-9,50+y*20);break;/*左*/

}

}

void Score()/*输出分数*/

{

char s[10];

Playone.score+=10;

sprintf(s,"%d",Playone.score);

setfillstyle(SOLID_FILL,0);

bar(550,100,640,130);

settextstyle(0,0,2);

setcolor(YELLOW);

outtextxy(550,115,s);

}

void DrawMap()/*画地图*/

{int i,j,k;

for(i=0;i<20;i++)

{

for(j=0;j<20;j++)

if(map[i][j]==1)

DrawTone(j,i);

else if(map[i][j]==2)

DrawBrick(j,i);

else if(map[i][j]==3)

DrawWater(j,i);

else if(map[i][j]==5)

DrawHome(j,i);

else if(map[i][j]==8)

{

Playone.x=i;

Playone.y=j;

Playone.direction=1;

DrawPlay(j,i);

for(k=0;k<5;k++)

Playone.fire[k].direction=-1;/*5颗子弹的方向都为-1,表示不存在*/

}

else if(map[i][j]==9)

{

amy[0].x=1;amy[0].y=1;amy[0].direction=amy[0].directiontwo=3;/*第一个敌人*/

amy[

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有