#include <iostream>
#include <fstream>
#include <graphics.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
#include <math.h>
#define MAX 1000
//all
int timeShoot=0;//cycle of shooting
int poiNum[3];//point number
double speed;// true speed
//
using namespace std;
class self
{
public:
double selfX;//x
double selfY;//y
int dirX;//x direction
int dirY;//y direction
int life;
int bomb;
self();
void move();
IMAGE img[3];
public:
void addX(double x)//move on x
{
if((!(selfX<=10&&x<=0))&&(!(selfX>=390&&x>0)))
selfX+=x;
}
void addY(double y)//move on y
{
if((!(selfY<=10&&y<=0))&&(!(selfY>=630&&y>0)))
selfY+=y;
}
}me;
self::self()
{
dirX=3;
dirY=3;
life=3;
bomb=3;
selfX=200;
selfY=610;
loadimage(&img[0], "picture\\stop.jpg");
loadimage(&img[1], "picture\\left.jpg");
loadimage(&img[2], "picture\\right.jpg");
}
class bomb
{
public:
bomb();
int life;
double Y;
void show()
{
setlinecolor(BLACK);
line(0, Y, 400, Y);
Y-=20;//move speed
setlinecolor(RGB(rand()%123,rand()%50+40,91));
line(0, Y, 400, Y);
if(Y<0)
{
life=0;
Y=670;
}
}
}bb;
bomb::bomb()
{
life=0;
Y=670;
}
class enemy
{
public:
enemy();
double X;
double Y;
IMAGE img;
int xc;
int yc;
double EnSpeed;
int life;
void move()
{
if(X>350) xc=-1;
if(Y>200) yc=-1;
if(X<50) xc=1;
if(Y<50) yc=1;
X+=xc*en.EnSpeed;
Y+=yc*en.EnSpeed;
if((X-me.selfX)*(X-me.selfX)+(Y-me.selfY)*(Y-me.selfY)<3600)
{
me.life--;
setfillcolor(BLACK);
setlinecolor(BLACK);
fillcircle(me.selfX, me.selfY, 50);
me.selfX=200;
me.selfY=630;
bb.life=1;
}//if myself be injured
}
void show()
{
setfillcolor(BLACK);
solidrectangle(X-50,Y-50,X+50,Y+50);
move();//move() is a f(x) in show
if(life>0)
{
putimage(X-50,Y-50,&img);
char str[20];
sprintf(str,"enemy: %d ",life);
outtextxy(5, 5, str);
}
}
}en;
enemy::enemy()
{
xc=yc=1;
EnSpeed=1;
X=200;
Y=50;
life=25000;
loadimage(&img, "picture\\enemy.jpg");
}
class smallEn//a small enemy
{
public:
int X;
int Y;
int dir;//direction of small enemy
smallEn();
int life;
IMAGE img;
void set()
{
life=400;
X=410;
Y=220;
dir=1;
}
void show()
{
setfillcolor(BLACK);
setlinecolor(BLACK);
fillcircle(X,Y, 25);
X-=dir*3;
if(X<0) {dir=-dir;X=1;}
if(X>400){dir=-dir;X=399;}
putimage(X-10,Y-10,&img);
}
}smallen[4];
smallEn::smallEn()
{
loadimage(&img, "picture\\smallenemy.jpg");
}
class point
{
public:
point();
int type;
double X;
double Y;
IMAGE img;
int life;
int num;
void setPoint(double xx,double yy)
{
X=xx;
Y=yy;
}
void pointMove()
{
setlinecolor(BLACK);
if(type==1)
{
fillcircle(X, Y, 10);
Y-=20;
setfillcolor(RGB(rand()%123,rand()%50+40,91));
fillcircle(X, Y, 10);
if((en.X-X)*(en.X-X)+(en.Y-Y)*(en.Y-Y)<=3600)
{
life=0;
setfillcolor(BLACK);
fillcircle(X, Y, 20);
en.life-=5;
}
int i;
for(i=0;i<4;i++)
{
if((smallen[i].X-X)*(smallen[i].X-X)+(smallen[i].Y-Y)*(smallen[i].Y-Y)<=900)
{
life=0;
setfillcolor(BLACK);
fillcircle(X, Y, 20);
smallen[i].life-=5;
setfillcolor(BLACK);
setlinecolor(BLACK);
fillcircle(smallen[i].X,smallen[i].Y, 35);
if(smallen[i].life<=0)
{
smallen[i].X=410;
smallen[i].Y=220;
}
}
}
}
if(type==2)
{
solidrectangle(X-3,Y-15,X+3,Y+26);
Y-=30;
if(!(GetAsyncKeyState(VK_SHIFT)&0x8000))
if(X<me.selfX) X-=3;
else X+=3;
putimage(X-3,Y-3,&img);
if((en.X-X)*(en.X-X)+(en.Y-Y)*(en.Y-Y)<=3600)
{
life=0;
solidrectangle(X-3,Y-15,X+3,Y+60);
en.life-=5;
}
int i;
for(i=0;i<4;i++)
{
if((smallen[i].X-X)*(smallen[i].X-X)+(smallen[i].Y-Y)*(smallen[i].Y-Y)<=900)
{
life=0;
setfillcolor(BLACK);
solidrectangle(X-3,Y-15,X+3,Y+60);
smallen[i].life-=5;
setfillcolor(BLACK);
setlinecolor(BLACK);
fillcircle(smallen[i].X,smallen[i].Y, 35);
if(smallen[i].life<=0)
{
smallen[i].X=410;
smallen[i].Y=220;
}
}
}
}
setfillcolor(BLACK);
setlinecolor(WHITE);
}
}poi[15],poi2[30],poi3[30];
point::point()
{
loadimage(&img, "picture\\point.jpg");
life=0;
type=1;
}
class yinyang
{
public:
yinyang();
double angle;
int R;
IMAGE img;
double X1;
double Y;
double X2;
void move(int x,int y)
{
setfillcolor(BLACK);
solidrectangle(X1-7,Y-7,X1+8,Y+8);
solidrectangle(X2-7,Y-7,X2+8,Y+8);
X1=x-R*cos(angle);
X2=x+R*cos(angle);
Y=y-R*sin(angle)-10;
putimage(X1-7,Y-7,&img);
putimage(X2-7,Y-7,&img);
//setfillcolor(WHITE);
//solidrectangle(X1-7,Y-7,X1+8,Y+8);
//solidrectangle(X2-7,Y-7,X2+8,Y+8);
if(!(GetAsyncKeyState(VK_SHIFT)&0x8000)) angle-=0.3;
if(GetAsyncKeyState(VK_SHIFT)&0x8000) angle+=0.3;
if(angle>1.2&&GetAsyncKeyState(VK_SHIFT)&0x8000) angle=1.2;
if((angle>1.2||angle<0)&&!(GetAsyncKeyState(VK_SHIFT)&0x8000)) angle=0;
if(GetAsyncKeyState(0x5a)&0x8000&&timeShoot%3==0)
{
poi2[poiNum[1]].life=1;
poi2[poiNum[1]].setPoint(X1,Y-33);
poi3[poiNum[2]].life=1;
poi3[poiNum[2]].setPoint(X2,Y-33);
poiNum[1]++;
poiNum[2]++;
if(poiNum[1]==15) poiNum[1]=0;
if(poiNum[2]==15) poiNum[2]=0;
}
}
}yinyang;
yinyang::yinyang()
{
angle=0;
R=30;
loadimage(&img, "picture\\yinyang.jpg");
}
void self::move()
{ dirX=3;
dirY=3;
speed=6;//normal speed
if(GetAsyncKeyState(VK_SHIFT)&0x8000)
{
speed=2.8;//enter shift then you can be more slowly
}
if(GetAsyncKeyState(0x5a)&0x8000&&timeShoot%3==0)
{
poi[poiNum[0]].life=1;
poi[poiNum[0]].setPoint(me.selfX,me.selfY-27);
poiNum[0]++;
if(poiNum[0]==15) poiNum[0]=0;
}
if(GetAsyncKeyState(0x58)&0x8000)
{
if(me.bomb!=0&&bb.life==0)
{
bb.life=1;
me.bomb--;
}
}
if(GetAsyncKeyState(VK_UP)&0x8000)
{
dirY=0;
if(GetAsyncKeyState(VK_RIGHT)&0x8000)
dirX=1;
else if(GetAsyncKeyState(VK_LEFT)&0x8000)
dirX=0;
}
else if(GetAsyncKeyState(VK_DOWN)&0x8000)
{
dirY=1;
if(GetAsyncKeyState(VK_RIGHT)&0x8000)
dirX=1;
else if(GetAsyncKeyState(VK_LEFT)&0x8000)
dirX=0;
}
else if(GetAsyncKeyState(VK_RIGHT)&0x8000)
{dirX=1;}
else if(GetAsyncKeyState(VK_LEFT)&0x8000)
{dirX=0;}
solidrectangle(me.selfX-9,me.selfY-18, me.selfX+9,me.selfY+18);
if(dirX==3&&dirY==1){me.addY(speed);}
if(dirX==3&&dirY==0){me.addY(-speed);}
if(dirX==1&&dirY==3){me.addX(speed);}
if(dirX==0&&dirY==3){me.addX(-speed);}
if(dirX==1&&dirY==1){me.addX(0.78*speed);me.addY(0.78*speed);}
if(dirX==1&&dirY==0){me.addX(0.78*speed);me.addY(-0.78*speed);}
if(dirX==0&&dirY==1){me.addX(-0.78*speed);me.addY(0.78*speed);}
if(dirX==0&&dirY==0){me.addX(-0.78*speed);me.addY(-0.78*speed);}
if(dirX==3) {putimage(me.selfX-9,me.selfY-18, &img[0]);}
if(dirX==0) {putimage(me.selfX-9,me.selfY-18, &img[1]);}
if(dirX==1) {putimage(me.selfX-9,me.selfY-18, &img[2]);}
setfillcolor(WHITE);
fillcircle(me.selfX, me.selfY, 3);
setfillcolor(BLACK);
char str[20];
sprintf(str,"life:%2d bomb:%2d ",me.life,me.bomb);
outtextxy(300, 10, str);
}
class poiOfEn//the danmu of enemy
{
public:
int type;//if tpye=0 the point dead
int time;//time of the point in the game
double X;
double Y;
double kx;
double ky;
setTXY(int t,double x,dou

中分小刘海
- 粉丝: 4
最新资源
- 现代企业物流管理信息化发展现状及创新研究.docx
- 区块链技术在国内外金融领域应用动态.docx
- 探索中职学校计算机教学中翻转课堂的实践应用.docx
- 全国计算机等级测验一级选择题(含答案).doc
- 高校网络管理体系与防护工作的优化设计方案与研究.doc
- 《软件工程基础》习题集-).doc
- 电气工程自动化发展中存在的问题及完善对策.docx
- 计算机通信与网络课程自主实践环节设计.docx
- 团购网站方案设计书与实现大学本科方案设计书大学本科方案设计书及其点评样稿实例模版.doc
- 浅析电气工程及其自动化的发展现状与展望.docx
- 面向对象软件工程方法学实践.docx
- 基于单片机的电子钟方案设计书02117.doc
- 经济学视角下网络色情蔓延的利益驱动分析.docx
- 大数据背景下高职Hadoop课程内容体系建设.docx
- 探析网络安全的重要性.docx
- rtmp推送aac音频流 Android将麦克风采集的数据推送到服务器(RTMPorRTSP) 采用AudioRecoder收集音频数据MediaCodeC编码AAC,推送到服务器
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


