Funcode小游戏暑期大作业新颖制作
😁里面有五个关卡,每个关卡玩法不同,虽然技术含量不高,但是绝对够新颖。
😂本款游戏名叫凿空,小组合作制品,当时对代码没那么了解,所以写起来比较乱,但是当做暑期大作业确实不错了,而且还能白嫖。
😴拿过省三等奖,一般质量所以没啥多安利的,下面有我的百度网盘链接可以用,可以评论区交流,这是开源的随便用。
😋凿空是游戏名称,这是位置,我在百度网盘有分享:
百度网盘链接:
链接:https://pan.baidu.com/s/12tQpFuIHiMAJxLkr_bhXYw?pwd=1111
提取码:1111
我给大家放一部分源码表示我说的是真的,完整的在我网盘取,不浪费大家的时间,顺便提高一下文章规范程度。
#include "CommonAPI.h"
#include "LessonX.h"
#include<windows.h>
#include<Mmsystem.h>
#include<mmsystem.h>
#pragma comment(lib,"Winmm.lib")
int blood=1;//人物血量初始化
int boss1hp=150;//BOSS1血量
float boss22hp=200;//BOSS2血量
float boss3hp=500;//BOSS3血量
//游戏进程
int level=0;
//主角速度
float g_fSpeedLeft=0.f,g_fSpeedRight=0.f,g_fSpeedTop=0.f,g_fSpeedBottom=0.f;
//地图速度
float ditu1=0;
//定义方向
bool bFilp=false;
//各精灵位置,不做一一注释
float PositionX1=0.f,PositionY1=0.f;
float PositionX2=0.f,PositionY2=0.f;
float PositionX3=0.f,PositionY3=0.f;
float PositionX4=0.f,PositionY4=0.f;
float PositionX5=0.f,PositionY5=0.f;
float PositionX6=0.f,PositionY6=0.f;
float PositionX7=0.f,PositionY7=0.f;
float PositionX8=0.f,PositionY8=0.f;
float PositionX9=0.f,PositionY9=0.f;
float PositionX10=0.f,PositionY10=0.f;
float PositionX11=0.f,PositionY11=0.f;
float PositionX12=0.f,PositionY12=0.f;
float PositionX13=0.f,PositionY13=0.f;
float PositionX14=0.f,PositionY14=0.f;
float PositionX15=0.f,PositionY15=0.f;
float PositionX16=0.f,PositionY16=0.f;
float PositionX17=0.f,PositionY17=0.f;
float PositionX18=0.f,PositionY18=0.f;
float PositionX19=0.f,PositionY19=0.f;
float PositionX20=0.f,PositionY20=0.f;
float PositionX21=0.f,PositionY21=0.f;
float PositionX22=0.f,PositionY22=0.f;
float PositionX23=0.f,PositionY23=0.f;
float PositionX24=0.f,PositionY24=0.f;
float PositionX25=0.f,PositionY25=0.f;
float PositionX26=0.f,PositionY26=0.f;
float damenweizhiX=0;
float oldPositionY2;
//第一关弓箭
typedef struct mosquitoStruct
{char *szName;int speed;struct mosquitoStruct *next;
}Mosquito;
float g_fAppearTime = 0.5f;
int g_iCount = 0; //弓箭的数量
char *g_chmosquito[1000];// 存储弓箭名字的指针数组
char *jian[1000];
char *fangjian[1000];
//第一关弓箭
typedef struct mosquitoStruc
{char *szNam;int spee;struct mosquitoStruc *nex;
}Mosquit;
float g_fAppearTim = 3.f; //gongjian产生的间隔时间
int g_iCoun = 0; //gongjian的数量
float g_fEmptyHookSpeed = 15.f;//陷阱速度
//世界边界限制
float fScreenLeft ;
float fScreenRight ;
float fScreenTop ;
float fScreenBottom ;
//精灵连接点坐标
float fStartX;
float fStartY;
float fEndX;
float fEndY;float fStartX1;
float fStartY1;
float fEndX1;
float fEndY1;float fStartX2;
float fStartY2;
float fEndX2;
float fEndY2;float fStartX3;
float fStartY3;
float fEndX3;
float fEndY3;float fStartX4;
float fStartY4;
float fEndX4;
float fEndY4;
//能量初始化
float nengliang=100;
//飞镖数量初始化
int shengyu=10;
//塔防生命值
int g_chengqiang=10;
//第三关小怪数量
int g_i = 0;
//五种xiaoguai的间隔时
float g_fBaseTime[5] = {3.f, 5.5f, 4.2f,8.f,2.4f};
float g_fCurrentTime[5] = {3.f, 5.5f, 4.2f,8.f,2.4f} ;
//xiaoguai的速度
float g_fSpeed[5] = {6, 10, 15,30,5};
//三种小怪对应的名字前缀
char *g_szType[5] = {"ufo_qq_muban","ufo_ww_muban","ufo_ee_muban","ufo_rr_muban","ufo_tt_muban"};
//能量加持
int g_iScore[5] = {1,2,3,2,5};
int g_iNum = 0; //发射的冲击波数量
int g_iNu=0;//飞镖数量
int g_iN=0;//BOSS的技能数量
float g_fucktime1=3;//BOSS技能1
float g_fucktime2=6;//BOSS技能2
//BOSS技能出现位置
int qq[8]={-33.182,-22.696,-14.318,-4.317,5.682,15.682,24.317,33.182};
//bossjineng刷新时间
float botime=4;
//BOSS技能三数量
int g_x;
//关卡函数
int nandian=1;
///
//
// 主函数入口
//
//
int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{// 初始化游戏引擎if( !dInitGameEngine( hInstance, lpCmdLine ) )return 0;//给予某精灵初速度dSetSpriteLinearVelocityY("b3",15);dSetSpriteLinearVelocity("feilun",10,0);dSetSpriteLinearVelocityY("boss3",-15);dSetSpriteLinearVelocityX("boss1",-7);//鼠标隐藏dShowCursor(false);//背景音乐dPlaySound("qw.ogg",1,1);// To do : 在此使用API更改窗口标题dSetWindowTitle("yaodaxian");//更换初始界面if(level==0){dLoadMap("level0.t2d");}// 引擎主循环,处理屏幕图像刷新等工作while( dEngineMainLoop() ){// 获取两次调用之间的时间差,传递给游戏逻辑处理float fTimeDelta = dGetTimeDelta();// 执行游戏主循环GameMainLoop( fTimeDelta );//获取世界边界fScreenLeft = dGetScreenLeft();fScreenRight = dGetScreenRight();fScreenTop = dGetScreenTop();fScreenBottom = dGetScreenBottom();//获取精灵位置(不做具体描述)PositionX2=dGetSpritePositionX( "zuoguai" );PositionY2=dGetSpritePositionY( "zuoguai" );PositionX3=dGetSpritePositionX( "jianshou1" );PositionY3=dGetSpritePositionY( "jianshou1" );damenweizhiX=dGetSpritePositionX( "damen" );PositionX1=dGetSpritePositionX( "baoxiang" );PositionY1=dGetSpritePositionY( "baoxiang" );PositionX4=dGetSpritePositionX( "next" );PositionY4=dGetSpritePositionY( "next" );PositionX5=dGetSpritePositionX( "shubiao" );PositionY5=dGetSpritePositionY( "shubiao" );PositionX6=dGetSpritePositionX( "jianshou2" );PositionY6=dGetSpritePositionY( "jianshou2" );PositionX7=dGetSpritePositionX( "jianshou3" );PositionY7=dGetSpritePositionY( "jianshou3" );PositionX8=dGetSpritePositionX( "dadao" );PositionY8=dGetSpritePositionY( "dadao" );PositionX9=dGetSpritePositionX( "review" );PositionY9=dGetSpritePositionY( "review" );PositionX10=dGetSpritePositionX( "review2" );PositionY10=dGetSpritePositionY( "review2" );PositionX11=dGetSpritePositionX( "next3" );PositionY11=dGetSpritePositionY( "next3" );PositionX12=dGetSpritePositionX( "zuiqiang" );PositionY12=dGetSpritePositionY( "zuiqiang" );PositionX13=dGetSpritePositionX( "fanhui6" );PositionY13=dGetSpritePositionY( "fanhui6" );PositionX14=dGetSpritePositionX( "review3" );PositionY14=dGetSpritePositionY( "review3" );PositionX15=dGetSpritePositionX( "next5" );PositionY15=dGetSpritePositionY( "next5" );PositionX16=dGetSpritePositionX( "fanhui10" );PositionY16=dGetSpritePositionY( "fanhui10" );PositionX17=dGetSpritePositionX( "wotui" );PositionY17=dGetSpritePositionY( "wotui" );PositionX18=dGetSpritePositionX( "review10" );PositionY18=dGetSpritePositionY( "review10" );PositionX19=dGetSpritePositionX( "boss3" );PositionY19=dGetSpritePositionY( "boss3" );PositionX20=dGetSpritePositionX( "jianjie" );PositionY20=dGetSpritePositionY( "jianjie" );PositionX21=dGetSpritePositionX( "exit" );PositionY21=dGetSpritePositionY( "exit" );PositionX22=dGetSpritePositionX( "nextpage6" );PositionY22=dGetSpritePositionY( "nextpage6" );PositionX23=dGetSpritePositionX( "nextpage1" );PositionY23=dGetSpritePositionY( "nextpage1" );//精灵位置触发关卡机制if(PositionY8<-2.f){dSpriteMoveTo("guai1",PositionX8, PositionY8,9,1);dSpriteMoveTo("guai2",PositionX8, PositionY8,9,1);dSpriteMoveTo("guai3",PositionX8, PositionY8,9,1);}if(PositionY12<-2.f){dSpriteMoveTo("kkk1",PositionX12, PositionY12,9,1);dSpriteMoveTo("kkk2",PositionX12, PositionY12,15,1);}if(PositionX12>8.f){dSpriteMoveTo("kkk3",PositionX12, PositionY12,10,1);dSpriteMoveTo("kkk4",PositionX12, PositionY12,9,1);}if(PositionX12>8.f&&PositionY12<-2.f){dSpriteMoveTo("kkk5",PositionX12, PositionY12,13,1);dSpriteMoveTo("kkk6",PositionX12, PositionY12,9,1);}if(PositionX12>8.f&&PositionY12<26.f){dSpriteMoveTo("kkk10",PositionX12, PositionY12,18,1);}//链接精灵的处理与实现fStartX = dGetSpriteLinkPointPosX("c5",1);fStartY = dGetSpriteLinkPointPosY("c5",1);fEndX = dGetSpriteLinkPointPosX("b3",1);fEndY = dGetSpriteLinkPointPosY("b3",1);dDrawLine(fStartX, fStartY, fEndX, fEndY, 2.f, 8, 50, 50, 50, 255 );fStartX1 = dGetSpriteLinkPointPosX("c5",2);fStartY1 = dGetSpriteLinkPointPosY("c5",2);fEndX1 = dGetSpriteLinkPointPosX("b4",1);fEndY1 = dGetSpriteLinkPointPosY("b4",1);dDrawLine(fStartX1, fStartY1, fEndX1, fEndY1, 2.f, 8, 50, 50, 50, 255 );fStartX2 = dGetSpriteLinkPointPosX("c5",3);fStartY2 = dGetSpriteLinkPointPosY("c5",3);fEndX2 = dGetSpriteLinkPointPosX("b5",1);fEndY2 = dGetSpriteLinkPointPosY("b5",1);dDrawLine(fStartX2, fStartY2, fEndX2, fEndY2, 2.f, 8, 50, 50, 50, 255 );fStartX3 = dGetSpriteLinkPointPosX("c5",4);fStartY3= dGetSpriteLinkPointPosY("c5",4);fEndX3 = dGetSpriteLinkPointPosX("b6",1);fEndY3 = dGetSpriteLinkPointPosY("b6",1);dDrawLine(fStartX3, fStartY3, fEndX3, fEndY3, 2.f, 8, 50, 50, 50, 255 );fStartX4 = dGetSpriteLinkPointPosX("c5",5);fStartY4 = dGetSpriteLinkPointPosY("c5",5);fEndX4 = dGetSpriteLinkPointPosX("b7",1);fEndY4 = dGetSpriteLinkPointPosY("b7",1);dDrawLine(fStartX4, fStartY4, fEndX4, fEndY4, 2.f, 8, 50, 50, 50, 255 );//飞行物名字存储for(int q=1;q<1000;q++){jian[q]= dMakeSpriteName("jianyu",q++);}for(int b=0;b<1000;b++){fangjian[b]= dMakeSpriteName("fangjian",b++);}g_fAppearTime -= fTimeDelta; //计算弓箭的剩余产生时间if(g_fAppearTime<0)
{int a;g_fAppearTime = 0.5f;float fposX,fposY;a=dRandomRange(0, 2);if(a==1){fposX = PositionX3;fposY = PositionY3;}else if(a==0){fposX = PositionX6;fposY = PositionY6;}else if(a==2){fposX = PositionX7;fposY = PositionY7;}Mosquito *m = (Mosquito*)malloc(sizeof(Mosquito)); //动态分配空间if(a==1||a==0){m->speed = dRandomRange(30, 40); //速度}else if(a==2){m->speed = 30 ; //速度}m->szName = dMakeSpriteName("wenzi",g_iCount++); //命名m->next = NULL;if(a==1||a==0){dCloneSprite("wenziTemplate",m->szName);}else if(a==2){dCloneSprite("gongjian2",m->szName);}dSetSpritePosition(m->szName,fposX, fposY);float fDesX ;float fDesY ;if(a==1){fDesX = -100;fDesY = -7.819;}if(a==0){fDesX = -100;fDesY = 1;}if(a==2){fDesX = 100;fDesY = 29;}dSpriteMoveTo(m->szName,fDesX, fDesY, m->speed, false);int iLoop; //循环控制变量for( iLoop = 0; iLoop < g_iCount; iLoop++ ){g_chmosquito[iLoop]=m->szName;dSetSpriteCollisionReceive(m->szName , 1 );}}g_fAppearTim -= fTimeDelta; //计算gongjian的剩余产生时间if(g_fAppearTim<0)
{g_fAppearTim = 3.f;int iDi = dRandomRange(0,2); //随机一个方向float fpoX,fpoY;switch(iDi){case 0: //topfpoX = dRandomRange(fScreenLeft-1.f, fScreenRight+1.f);fpoY = dRandomRange(fScreenTop-1.f, fScreenTop);break;case 1: //leftfpoX = dRandomRange(fScreenLeft-1.f, fScreenLeft);fpoY = dRandomRange(fScreenTop-1.f, fScreenBottom+1.f);break;case 2: //rightfpoX = dRandomRange(fScreenRight, fScreenRight+1.f);fpoY = dRandomRange(fScreenTop-1.f, fScreenBottom+1.f);break;}Mosquit *m = (Mosquit*)malloc(sizeof(Mosquit)); //动态分配空间m->spee = dRandomRange(20, 35); //随机速度m->szNam = dMakeSpriteName("fangjian",g_iCoun++); //命名m->nex = NULL;dCloneSprite("fangjian",m->szNam);for( int iLoop = 0; iLoop < g_iCoun; iLoop++ ){dSetSpriteCollisionReceive(m->szNam , 1 );}dSetSpritePosition(m->szNam,fpoX, fpoY);dSpriteMoveTo(m->szNam,PositionX8, PositionY8, m->spee, false);//控制方向float cc=dGetSpriteLinearVelocityX(m->szNam);if(cc<0){dSetSpriteFlipX(m->szNam,1);}else{dSetSpriteFlipX(m->szNam,0);}
}//刷怪函数float fPX,fPY;char *sz;//怪物出现的Y坐标固定在距窗口顶部5处fPY = fScreenTop - 5.f;for(int i=0; i<5; i++)
{
g_fCurrentTime[i] -= fTimeDelta;if(g_fCurrentTime[i] <= 0){g_fCurrentTime[i] = g_fBaseTime[i];//重新设置下次guaiwu产生的时间fPY = dRandomRange(fScreenTop+3 , fScreenBottom - 3);fPX=fScreenRight+3;
//随机生成guaiwu的横坐标if(i == 0)
{sz =dMakeSpriteName("ufo_qq",g_i++);}
else if(i == 1)
{sz =dMakeSpriteName("ufo_ww",g_i++);}
else if(i == 2)
{sz =dMakeSpriteName("ufo_ee",g_i++);
}
else if(i == 3)
{sz =dMakeSpriteName("ufo_rr",g_i++);}
else if(i == 4)
{sz =dMakeSpriteName("ufo_tt",g_i++);}dCloneSprite(g_szType[i],sz); //复制对应的模板dSetSpritePosition(sz,fPX, fPY);dSetSpriteLinearVelocityX(sz,-g_fSpeed[i]);dSetSpriteCollisionReceive(sz , 1 );
}}float fWX,fWY;char *tt;for(int i=0; i<8; i++)
{g_fucktime1-=fTimeDelta;if(g_fucktime1<= 0){g_fucktime1= 7;//重新设置下次guaiwu产生的时间fWX = fScreenRight+1;fWY=qq[i];tt =dMakeSpriteName("ppp",g_iN++);dCloneSprite("niubi",tt); //复制对应的模板dSetSpritePosition(tt,fWX, fWY);dSetSpriteLinearVelocityX(tt,-20);
}}g_fucktime2-=fTimeDelta;if(g_fucktime2<= 0){g_fucktime2= 5;//重新设置下次guaiwu产生的时间tt =dMakeSpriteName("ppp",g_iN++);dCloneSprite("niubi",tt); //复制对应的模板dSetSpritePosition(tt,PositionX19, PositionX19);dSpriteMoveTo(tt,PositionX12,PositionX12,10,false);
}//boss技能
char *rr;botime-=fTimeDelta;if(botime<= 0){botime= 4;//重新设置下次guaiwu产生的时间rr =dMakeSpriteName("guangbo",g_x++);dCloneSprite("guangbo",rr); //复制对应的模板dSetSpritePosition(rr,PositionX19, PositionY19);dSetSpriteLinearVelocityX(rr,-20);}//关卡结束函数
if(blood<=0&&level==2)
{
dSetSpritePosition("siwang1",PositionX8,PositionY8);dDeleteSprite("dadao");dSetSpritePosition("shibai1",0,0);dSetSpritePosition("review2",2,15);
}
if(blood<=0&&level==1)
{
dSetSpritePosition("siwang",PositionX2,PositionY2);dDeleteSprite("zuoguai");dSetSpritePosition("shibai",0,0);dSetSpritePosition("review",2,15);
}
if(blood<=0&&level==3)
{
dSetSpritePosition("siwang2",PositionX12,PositionY12);dDeleteSprite("zuiqiang");dDeleteSprite("chengqiang1");dSetSpritePosition("shibai2",0,0);dSetSpritePosition("review3",2,15);
}
if(g_chengqiang<=0&&level==3)
{
dSetSpritePosition("siwang2",PositionX12,PositionY12);dDeleteSprite("zuiqiang");dSetSpritePosition("shibai2",0,0);dSetSpritePosition("review3",2,15);dDeleteSprite("chengqiang1");
}
if(boss22hp<=0&&level==3)
{dDeleteSprite("boss2");dDeleteSprite("zuiqiang");dSetSpritePosition("texiao2",0,-0.357);dSetSpritePosition("shengli2",0,0.968);dSetSpritePosition("next5",10.055,8.297);dSetSpritePosition("moxing3",-6.000,6);dDeleteSprite("chengqiang1");}
if(boss3hp<=0&&level==4)
{dDeleteSprite("boss3");dDeleteSprite("zuiqiang");dSetSpritePosition("texiao3",0,0);dSetSpritePosition("shengli3",0,0);dSetSpritePosition("wotui",0,15);dSetSpritePosition("shengli4",0,0);blood=1000;
}
if(blood<=0&&level==4)
{dDeleteSprite("zuiqiang");dSetSpritePosition("shibai7",0,0);dSetSpritePosition("review10",2,15);
}
if(boss1hp<=0&&level==2){dDeleteSprite("boss1");dDeleteSprite("dadao");dSetSpritePosition("texiao1",0,-0.554);dSetSpritePosition("shengli1",-1.170,-2.500);dSetSpritePosition("next3",3.682,2.525);dSetSpritePosition("moxing1",-9.567,2.123);dSetSpritePosition("levelup1",-33.257,-1.385);}
//关卡进程函数
if(nandian==2)dSetSpritePosition("dierzhang",-0.375,-5.813);
if (nandian==3)
{dSetSpritePosition("disanzhang",-0.375,4.188);dSetSpritePosition("dierzhang",-0.375,-5.813);
}if (nandian==4)
{dSetSpritePosition("disizhang",-0.375,14.187);dSetSpritePosition("disanzhang",-0.375,4.188);dSetSpritePosition("dierzhang",-0.375,-5.813);
}};// 关闭游戏引擎dShutdownGameEngine();return 0;
}//==========================================================================
//
// 引擎捕捉鼠标移动消息后,将调用到本函数
// 参数 fMouseX, fMouseY:为鼠标当前坐标
//
void dOnMouseMove( const float fMouseX, const float fMouseY )
{dSetSpritePosition("shubiao", fMouseX, fMouseY);int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;a=dIsPointInSprite("nextpage6",fMouseX,fMouseY);if(a==1){dSetSpritePosition( "nextpage3", PositionX22,PositionY22);}elsedSetSpritePosition( "nextpage3", -285.709,6.776);b=dIsPointInSprite("nextpage1",fMouseX,fMouseY);if(b==1)dSetSpritePosition( "nextpage2", PositionX23, PositionY23);elsedSetSpritePosition( "nextpage2", -285.709,6.776);c=dIsPointInSprite("exit",fMouseX,fMouseY);if(c==1)dSetSpritePosition( "exit1",PositionX21, PositionY21);elsedSetSpritePosition( "exit1", -285.709,6.776);d=dIsPointInSprite("kaishi",fMouseX,fMouseY);if(d==1)dSetSpritePosition( "kaishi1", 30.375, -5.813);elsedSetSpritePosition( "kaishi1", -285.709,6.776);e=dIsPointInSprite("bangzhu",fMouseX,fMouseY);if(e==1)dSetSpritePosition( "bangzhu1", 30.375, 24.188);elsedSetSpritePosition( "bangzhu1", -285.709,6.776);f=dIsPointInSprite("women",fMouseX,fMouseY);if(f==1)dSetSpritePosition( "women1", 30.375, 14.188);elsedSetSpritePosition( "women1", -285.709,6.776);g=dIsPointInSprite("jianjie",fMouseX,fMouseY);if(g==1)dSetSpritePosition( "jianjie1",PositionX20, PositionY20);elsedSetSpritePosition( "jianjie1", -285.709,6.776);h=dIsPointInSprite("exit2",fMouseX,fMouseY);if(h==1)dSetSpritePosition( "exit3",-26.967, 21.645);elsedSetSpritePosition( "exit3", -285.709,6.776);i=dIsPointInSprite("nextpage4",fMouseX,fMouseY);if(i==1)
> 操作说明
1.1 鼠标控制 鼠标点击控制界面的跳转。 鼠标抬起控制关卡的选择。
1.2 键盘控制 上下左右控制主角的移动(其中第一章只能用AD键和K键控制人物),后来学习新技能,J普攻,I能量波,O回血,L大招。
1.3 小怪机制 会有蓝量加成,不过碰到就会扣血。
2. 关卡说明以及通过条件说明
2.1第一章 躲过陷阱,去宝箱那里取回属于自己的装备。
2.2第二章 躲避陷阱,打败BOSS。
2.3 第三章 利用远程技能打败BOSS,并且守住城池,击杀小怪有蓝量加成。
2.4第四章 利用技能和普攻打败BOSS,这次你有五点血量,移动会触发关卡机制,通过杀灭小怪得到蓝量通关。
游戏名称:凿空
1.游戏简介
1.1 剧情介绍 建元二年(前139年),张骞率领100多名随行人员,从长安出发前往西域。在西行进入河西走廊期间,不幸碰上匈奴的骑兵,张骞一行被扣留和软禁起来,前前后后长达十年之久,在元光六年(前129年),匈奴监视渐有松弛,张骞趁匈奴人不备带领其随从,逃出了匈奴人的控制区,本游戏从这里开始:第一章越狱。随后张骞开始了新的征程了解到留居匈奴期间,西域的形势已发生了变化。于是张骞到大宛后,借助大宛国王的帮助。张骞等人到了康居,康居王又遣人将他们送至大月氏。不料,这时大月氏人,改变了态度,谈判失败。这便是第二章:征程。元朔元年(前128年),张骞动身返国。归途中,张骞为避开匈奴势力,改变了行军路线。计划走塔里木盆地南部,昆仑山北麓的“南道”,从莎车,经于阗、鄯善,通过青海羌人地区后归汉,于是第三章归程之路开启。回国后,整顿行装,张骞又参与匈奴在河西走廊的决战。至此第四章:决战,拉开序幕。
1.2 关卡描述
- 第一章 越狱 人物空格开始,借助k键跳跃躲避弓箭、手地、刺屏、障飞轮等攻击,成功躲避后可以到达宝箱,w开启宝箱第一关结束
2.第二章 征程 人物进入游戏后,借助W、A、D、S键攻击躲避弓箭、飞轮的攻击,利用有限飞镖,和普通攻击击杀毒蝎并且打败BOSS取得胜利
3.第三章 归程 人物进入游戏,需要守住城池打败BOSS,城池只有10点血量,每打死一个小怪得1点能量,通过积累能量释放技能,每释放一次技能都会消耗一定能量,直到BOSS血条为0,取得胜利。
4.第四关 决战 人物进入游戏,需利用普攻与技能的结合控制蓝量击杀BOSS,即可通关,人物血量为5,人物移动可以触发关卡机制获得蓝量1.3 角色描述
1.张骞:张骞,字子文,中国汉代杰出的外交家、旅行家、探险家,丝绸之路的开拓者。司马迁称赞张骞出使西域为“凿空”,意思是“开通大道”。张骞先后两次出使西域,打开了中国与中亚、西亚、南亚以至通往欧洲的陆路交通张骞被誉为“丝绸之路的开拓者”、“第一个睁开眼睛看世界的中国人”。
2.匈奴:匈奴最初是在约公元前3世纪时兴起的一个游牧部族。在伊稚斜单于时期,国力被汉军打击由盛转衰。在游戏中以弓箭手,骑马小兵等的样式出现。
3.BOSS:西域途中所遇见的各种情况,有凶猛的匈奴,神秘的沙漠忍者等5.设计思路
6.游戏创意
2.1 方便性按键设置 游戏进行中设置了重新开始,返回,上一页,下一页,声音等按键,方便游戏的操作。
2.2 技能限制 人物进入闯关模式之后具有的技能是有数量、蓝量限制才可以使用的。
2.3减血量显示 当BOSS或城墙被攻击导致减血时,会显示减血量。
7.关键技术
3.1 陷阱机制方面使用了结构体、动态分配内存。
3.2 if、else函数随机刷怪、随机刷怪的类型。分时间,分速度。
如果对你有帮助,别忘了帮博主点点举报😎