前面因为酷丁平台崩掉了耽误了一段时间,再此向大家道歉。
下面是代码,请复制到酷丁平台运行。
#include "codingtang.h"
#include <cstdlib>
using namespace std;
struct din{
int now_up=12,now_y=160,now_xx=50; //现在的每帧上升像素数
bool up; //是否正在进行跳跃
int blood=30;
}D;
struct bird{
int Y=110,now_X=550,spe=4;
}bir,bir2;
struct goad_apple{
int xx=440,yy=100;
}app;
struct water{
int XX=130,YY=100;
int go_x,go_flag;
}wat;
struct goad{
int goa_x=50,goa_y=100;
}a,b;
struct get_goal{
int gg_x=300,gg_y=120,gg_flag,gg_flag2;
}gg;
struct fl{
int zh,ti;
}flag4;
int cnt=1,speed=3;
int little_xrz_x=440,big_xrz_x=250,little_cnt,big_cnt,flag1,flag2,goal,flag6;
int wat_cnt=3,app_cnt,goa_cnt;
bool flag;
int main(){
Window window = createWindow(500,250);
Color fontColor = {255,255,255,0};
Color fontColor1 = {0 ,255,0 ,0};
Color fontColor2 = {255,0 ,0 ,0};
Color fontColor3 = {255,255,0 ,0};
Color fontColor4 = {0 ,0 ,255,0};
window.drawText( "欢迎来到小恐龙游戏" , 20 , fontColor , 160 , 50);
sleep(1000);
window.drawText( "本游戏由马博闻出品" , 20 , fontColor , 160 , 50);
sleep(500);
window.drawText( "马博闻出品,必属精品" , 20 , fontColor , 160 , 50);
sleep(500);
window.drawText( "祝大家游玩愉快!" , 20 , fontColor , 160 , 50);
sleep(500);
Event event; //定义事件
while(true){
while(true){
flag6=0;
little_xrz_x-=speed; //更新障碍的位置
big_xrz_x-=speed;
wat.XX-=3;
wat.YY+=rand()%6-3;
if(wat.YY>=160||wat.YY<=10){
wat.YY=120;
}
if(flag4.ti+200<cnt){
flag4.ti=0;
flag4.zh=0;
}
gg.gg_x-=3;
gg.gg_y+=rand()%6-3;
if(gg.gg_flag==1){
if(D.now_xx>a.goa_x){
a.goa_x+=2;
}else if(D.now_xx<a.goa_x){
a.goa_x-=2;
}
if(D.now_y>a.goa_y){
a.goa_y+=2;
}else if(D.now_y<a.goa_y){
a.goa_y-=2;
}
if(D.now_xx>b.goa_x){
b.goa_x+=2;
}else if(D.now_xx<a.goa_x){
b.goa_x-=2;
}
if(D.now_y>b.goa_y){
b.goa_y+=2;
}else if(D.now_y<b.goa_y){
b.goa_y-=2;
}
}
if(gg.gg_x<=20){
gg.gg_x=380+rand()%80;
}
if(gg.gg_y>=160||gg.gg_y<=10){
gg.gg_y=120;
}
a.goa_x-=speed;
b.goa_x-=speed;
if(a.goa_x<=20){
a.goa_x=480-rand()%80;
a.goa_y=60+rand()%40;
}
if(b.goa_x<=20){
b.goa_x=480-rand()%80;
b.goa_y=60+rand()%40;
}
if(wat.go_flag==1)wat.go_x+=5;
if(cnt>=1000){
bir.now_X-=bir.spe;
bir2.now_X-=bir.spe;
}
if(cnt%100==0){
wat.XX=rand()%100+100;
wat.YY=rand()%50+60;
}
app.xx-=speed;
if(little_xrz_x<10){
little_xrz_x=440-rand()%80;
}
if(big_xrz_x<10){
big_xrz_x=440-rand()%80;
}
if(bir.now_X<=10){
bir.now_X=300+rand()%150;
bir.Y=90+rand()%50;
bir.spe=4+rand()%3;
}
if(bir2.now_X<=10){
bir2.now_X=300+rand()%150;
bir2.Y=90+rand()%50;
bir2.spe=4+rand()%3;
}
if(app.xx<10){
app.xx=440-rand()%80;
app.yy=80+rand()%40;
}
if(cnt%1000==0)speed++;
window.drawText( "你的得分:" , 15 , fontColor , 10 , 190); //打印金币
window.drawText( "*" , 20 , fontColor , 220 , 193);
for(int i=1;i<=goal;i++){
window.drawText( "|" , 10 , fontColor3 , 75+i*3 , 193);
}
window.drawText( "你的血量:" , 15 , fontColor , 10 , 220); //打印血条
for(int i=1;i<=D.blood;i++){
if(D.blood<10&&D.blood>=5)window.drawText( "|" , 10 , fontColor3 , 75+i*3 , 222 );//显示血量
else if(D.blood<5) window.drawText( "|" , 10 , fontColor2 , 75+i*3 , 222 );
else window.drawText( "|" , 10 , fontColor1 , 75+i*3 , 222 );
}
window.drawText( "可以召唤水波数:" , 13 , fontColor , 280 , 190); //打印金苹果数量
window.drawText( "生命苹果数:" , 13 , fontColor , 305 , 210); //打印金苹果数量
window.drawText( "捡金币技能数:" , 13 , fontColor , 290 , 230); //打印金苹果数量
for(int i=1;i<=wat_cnt;i++){
window.drawText( "[]" , 10 , fontColor4 , 380+i*10 , 192);
}
for(int i=1;i<=app_cnt;i++){
window.drawText( "o" , 12 , fontColor2 , 380+i*8 , 212);
}
for(int i=1;i<=goa_cnt;i++){
window.drawText( "•" , 14 , fontColor3 , 380+i*8 , 232);
}
if(cnt>=gg.gg_flag2+200){
gg.gg_flag=0;
}
if(wat.go_flag==1){
for(int i=1;i<=200;i+=10){
window.drawText( "[]" , 10 , fontColor4 , wat.go_x , i);
if(big_xrz_x>=wat.go_x-5&&big_xrz_x<=wat.go_x+5&&i>=140&&i<=160){
big_xrz_x=650; //检测大仙人掌的碰撞
if(cnt>=flag2+5)goal+=3;
flag2=cnt;
}
if(little_xrz_x>=wat.go_x-5&&little_xrz_x<=wat.go_x+5&&i>=140&&i<=160){
little_xrz_x=570; //检测小仙人掌的碰撞
if(cnt>=flag2+5)goal++;
flag2=cnt;
}
if(bir.now_X>=wat.go_x-5&&bir.now_X<=wat.go_x+5&&D.now_y>=i-5&&D.now_y<=i+5){
bir.now_X=640; //检测飞鸟的碰撞
if(cnt>=flag2+5)goal+=2;
flag2=cnt;
}
if(bir2.now_X>=wat.go_x-7&&bir2.now_X<=wat.go_x+7&&i>=bir2.Y-5&&i<=bir2.Y+5){
bir2.now_X=600; //检测飞鸟的碰撞
if(cnt>=flag2+5)goal+=2;
flag2=cnt;
}
}
}
for(int i=0;i<=27;i+=3){
window.drawText( "||" , 10 , fontColor , 120 , i );
window.drawText( "||" , 10 , fontColor , 320 , i );
}
window.drawText( "•" , 15 , fontColor3 , a.goa_x , a.goa_y );
window.drawText( "•" , 15 , fontColor3 , b.goa_x , b.goa_y );
window.drawText( "/--" , 20 , fontColor , bir2.now_X , bir2.Y);
window.drawText( "/--" , 20 , fontColor , bir.now_X , bir.Y );
window.drawText( "水" , 15 , fontColor4 , wat.XX ,wat.YY );
window.drawText( "金" , 15 , fontColor3 , gg.gg_x , gg.gg_y );
window.drawText( "o" , 20 , fontColor2 , app.xx , app.yy );
window.drawText( "K" , 20 , fontColor1 , little_xrz_x , 160 );
window.drawText( "B" , 20 , fontColor1 , big_xrz_x , 160 );
window.drawText( "B" , 20 , fontColor1 , big_xrz_x , 140 );
window.drawText( "I" , 20 , fontColor2 , D.now_xx , D.now_y );
window.drawText( "==================================" , 10 , fontColor , 120 , 30 );
window.drawText( "========================================================================================" , 10 , fontColor , 0 , 180);//绘制出地面
if(pollEvent(&event)){ //监听
if(event.type == CDT_KEYDOWN){ //是KEYDOWN事件 键盘按钮按下事件
switch(event.keyCode){ //判断是什么按钮被按下
case CDT_KEY_w: //w键被按下
D.up=1; //开始一次跳跃
break;
case CDT_KEY_a: //a键被按下
if(D.now_xx>=20){
D.now_xx-=8; //左移8个像素
}
break;
case CDT_KEY_d: //d键被按下
if(D.now_xx<=380){
D.now_xx+=8; //右移8个像素
}
break;
case CDT_KEY_e: //e键被按下
if(app_cnt<=0)break;
app_cnt--; //使用金苹果
if(D.blood<60)D.blood+=8;
flag4.zh=5;
flag4.ti=cnt;
break;
case CDT_KEY_r: //r键被按下
if(wat_cnt<=0)break;
wat_cnt--; //召唤水波
wat.go_flag=1;
wat.go_x=D.now_xx;
flag4.zh=6;
flag4.ti=cnt;
break;
case CDT_KEY_f: //f键被按下
if(goa_cnt<=0)break;
goa_cnt--; //开始捡金币
gg.gg_flag=1;
gg.gg_flag2=cnt;
flag4.zh=7;
flag4.ti=cnt;
break;
}
}
}
if(flag4.ti+20<cnt){
if(flag4.zh==1) window.drawText( "你碰到了大仙人掌,受到4伤害" , 12 , fontColor , 130 , 15 );
else if(flag4.zh==3)window.drawText( "你碰到了飞鸟,受到3伤害" , 12 , fontColor , 130 , 15 );
else if(flag4.zh==2)window.drawText( "你碰到了小仙人掌,受到4伤害" , 12 , fontColor , 130 , 15 );
else if(flag4.zh==4)window.drawText( "你捡到了金币" , 14 , fontColor , 130 , 15 );
else if(flag4.zh==5)window.drawText( "你使用了金苹果" , 14 , fontColor , 130 , 15 );
else if(flag4.zh==6)window.drawText( "你使用了召唤水波" , 14 , fontColor , 130 , 15 );
else if(flag4.zh==7)window.drawText( "你使用了捡金币" , 14 , fontColor , 130 , 15 );
}
if(D.up==1){
D.now_y-=D.now_up; //更新恐龙的位置
D.now_up-=1; //更新下一秒上升(或下降)的高度
if(D.now_up==-12){ //跳跃结束
D.now_y=160;
D.now_up=12;
D.up=0;
}
}
if(big_xrz_x>=D.now_xx-5&&big_xrz_x<=D.now_xx+5&&D.now_y>=140&&D.now_y<=160&&cnt>=flag2+10){
D.blood-=5; //检测大仙人掌的碰撞
flag2=cnt;
flag4.zh=1;
flag4.ti=cnt;
}
if(little_xrz_x>=D.now_xx-5&&little_xrz_x<=D.now_xx+5&&D.now_y>=150&&D.now_y<=160&&cnt>=flag2+10){
D.blood-=3; //检测小仙人掌的碰撞
flag2=cnt;
flag4.zh=2;
flag4.ti=cnt;
}
if(bir.now_X>=D.now_xx-5&&bir.now_X<=D.now_xx+5&&D.now_y>=bir.Y-5&&D.now_y<=bir.Y+5&&cnt>=flag2+10){
D.blood-=4; //检测飞鸟的碰撞
flag2=cnt;
flag4.zh=3;
flag4.ti=cnt;
}
if(bir2.now_X>=D.now_xx-7&&bir2.now_X<=D.now_xx+7&&D.now_y>=bir2.Y-5&&D.now_y<=bir2.Y+5&&cnt>=flag2+10){
D.blood-=4; //检测飞鸟的碰撞
flag2=cnt;
flag4.zh=3;
flag4.ti=cnt;
}
if(a.goa_x>=D.now_xx-7&&a.goa_x<=D.now_xx+7&&D.now_y>=a.goa_y-5&&D.now_y<=a.goa_y+5&&cnt>=flag2+10){
goal+=5; //检测金币的碰撞
a.goa_x=380+cnt%60;
flag2=cnt;
flag4.zh=4;
flag4.ti=cnt;
}
if(b.goa_x>=D.now_xx-7&&b.goa_x<=D.now_xx+7&&D.now_y>=b.goa_y-5&&D.now_y<=b.goa_y+5&&cnt>=flag2+10){
goal+=5; //检测金币的碰撞
b.goa_x=380+cnt%60;
flag2=cnt;
flag4.zh=4;
flag4.ti=cnt;
}
if(gg.gg_x>=D.now_xx-7&&gg.gg_x<=D.now_xx+7&&D.now_y>=gg.gg_y-5&&D.now_y<=gg.gg_y+5&&cnt>=flag2+10){
goa_cnt++;
gg.gg_x=380+rand()%60;//检测捡金币技能币的碰撞
flag2=cnt;
}
if(wat.XX>=D.now_xx-7&&wat.XX<=D.now_xx+7&&D.now_y>=wat.YY-5&&D.now_y<=wat.YY+5&&cnt>=flag2+10){
wat_cnt++;
wat.XX=380+rand()%60; //检测水的碰撞
flag2=cnt;
}
if(app.xx>=D.now_xx-5&&app.xx<=D.now_xx+5&&D.now_y>=app.yy-5&&D.now_y<=app.yy+5&&cnt>=flag2+10){
app_cnt++;
app.xx=380+rand()%60; //检测金苹果的碰撞
flag2=cnt;
}
if(D.blood<=0){ //血量为0
window.drawText( "你没了..." , 30 , fontColor2 , 150 , 50);
sleep(500);
break;
}
if(cnt%100==0&&D.blood<20)D.blood++;
cnt++;
if(goal>=50){
window.drawText( "你胜利了!" , 30 , fontColor3 , 150 , 50);
sleep(500);
break;
}
window.present();
sleep(3);
}
cnt=1;
flag1=0;
flag2=0;
flag=0;
speed=3;
big_xrz_x=250;
D.now_xx=50;
little_xrz_x=440;
D.blood=20;
bir.Y=110;
bir.now_X=440;
bir.spe=3;
bir2.Y=110;
bir2.now_X=440;
bir2.spe=3;
a.goa_x=400;
a.goa_y=80;
b.goa_x=400;
b.goa_y=80;
goal=0;
app_cnt=0;
wat_cnt=0;
goa_cnt=0;
while(1){
sleep(1);
window.drawText( "按's'键开始新游戏或按'n'键结束游戏" , 20 , fontColor , 90 , 100);
if(pollEvent(&event)){
if(event.type == CDT_KEYDOWN){ //是KEYDOWN事件 键盘按钮按下事件
switch(event.keyCode){ //判断是什么按钮被按下
case CDT_KEY_s: //s键被按下
flag1=1; //开始一次新游戏
break;
case CDT_KEY_n: //n键被按下
flag1=2; //结束游戏
break;
}
}
}
if(flag1==1)break;
if(flag1==2){
flag=1;
break;
}
}
if(flag==1)break;
}
return 0;
}
基本概述:你
那个红色的竖杠就是你,你可以按"W"键跳跃;
屏幕上方的"blood"后面的是你的血条,初始值是20,每过50游戏秒恢复1,当血量归0时你就会死;
就是他
屏幕上方的"your goal"后面的是你的积分,初始值是0,可以通过捡金币和召唤水波获得,当它的值达到50时你就胜利。
就是他
障碍与怪物:飞鸟和仙人掌
那个绿色的,由两个"B"叠起来的是大仙人掌,碰上去扣5滴血;
就是他
那个绿色的,由一个"K"叠起来的是小仙人掌,碰上去扣3滴血;
就是他
那两个飞在天上的白东西,是飞鸟,碰上去扣4滴血。
就是他