funcode小游戏暑假大作业,开源,新颖,游戏名:凿空,免费。

article/2025/9/3 4:14:40

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.1 剧情介绍 建元二年(前139年),张骞率领100多名随行人员,从长安出发前往西域。在西行进入河西走廊期间,不幸碰上匈奴的骑兵,张骞一行被扣留和软禁起来,前前后后长达十年之久,在元光六年(前129年),匈奴监视渐有松弛,张骞趁匈奴人不备带领其随从,逃出了匈奴人的控制区,本游戏从这里开始:第一章越狱。随后张骞开始了新的征程了解到留居匈奴期间,西域的形势已发生了变化。于是张骞到大宛后,借助大宛国王的帮助。张骞等人到了康居,康居王又遣人将他们送至大月氏。不料,这时大月氏人,改变了态度,谈判失败。这便是第二章:征程。元朔元年(前128年),张骞动身返国。归途中,张骞为避开匈奴势力,改变了行军路线。计划走塔里木盆地南部,昆仑山北麓的“南道”,从莎车,经于阗、鄯善,通过青海羌人地区后归汉,于是第三章归程之路开启。回国后,整顿行装,张骞又参与匈奴在河西走廊的决战。至此第四章:决战,拉开序幕。
    1.2 关卡描述

    1. 第一章 越狱 人物空格开始,借助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函数随机刷怪、随机刷怪的类型。分时间,分速度。
    在这里插入图片描述

如果对你有帮助,别忘了帮博主点点举报😎

在这里插入图片描述


http://chatgpt.dhexx.cn/article/aAPuV78u.shtml

相关文章

手把手教你做多重线性逐步回归

1.案例背景与分析策略 1.1 案例背景介绍 某研究收集到美国50个州关于犯罪率的一组数据&#xff0c;包括人口、面积、收入、文盲率、高中毕业率、霜冻天数、犯罪率共7个指标&#xff0c;现在我们想考察一下州犯罪率和哪些指标有关。数据上传SPSSAU后&#xff0c;在 “我的数据…

讲讲逐步回归

总第178篇/张俊红 01.前言 前面我们讲过了多元线性回归。这一篇我们来讲讲逐步回归。什么是逐步回归呢&#xff1f;就是字面意思&#xff0c;一步一步进行回归。 我们知道多元回归中的元是指自变量&#xff0c;多元就是多个自变量&#xff0c;即多个x。这多个x中有一个问题需要…

多重共线性产生原因及处理办法+R语言+糖尿病数据案例分析+逐步回归法

1、多重共线性 多重共线性一般是在&#xff08;1&#xff09;时间序列数据和&#xff08;2&#xff09;横截面数据中会发生。 产生的影响 &#xff08;1&#xff09;OLS得到的回归参数估计值很不稳定 &#xff08;2&#xff09;回归系数的方差随共线性强度增加而增长 &#…

SPSS多元线性回归及逐步回归教程

点击分析->回归->线性会出来如图 选择自变量&#xff0c;因变量。点击左侧然后点击即可选择变量并将它添加到自变量、因变量。 点击统计&#xff0c;需要额外勾选共线性诊断和然后点击继续&#xff0c;点击 设置成如图 。 解释&#xff1a;---------------------------…

Python OLS 双向逐步回归

算法基本思路&#xff1a;首先需要确定一个因变量y以此构建一元回归方程&#xff0c;再找到已通过显著性检验的一元线性回归方程中F值最大的解释变量x0&#xff0c;将其并入回归方程中&#xff0c;再分别将剩余的解释变量与解释变量x0作为OLS函数的自变量集拟合回归方程&#x…

逐步回归分析

逐步回归分析 在实际问题中,首先碰到的问题是如何确定自变量。通常是根据所研究的问题,结合经济理论,罗列出对因变量可能有影响的一些因素作为自变量。 因此,我们需要挑选出对因变量有显著影响的自变量,构造最优的回归方程。 逐步回归的基本思想是:将变量一个一个引入,…

向前逐步回归

向前逐步回归 我们在进行拟合的时候&#xff0c;没有必要将所有变量都引入到我们的函数之中&#xff0c;这种操作往往会导致过拟合&#xff0c;而过拟合带来的致命影响就是泛化能力差&#xff0c;最小二乘法估计参数的时候无法终止学习的过程。向前逐步回归的引入则可以控制学…

SPSSAU中逐步回归法——探索分析单支股票数据(实践)

数据说明&#xff1a; 还是选择万兴科技的股票数据来做回归分析&#xff0c;和《股票时序分析和时序模型&#xff08;实践&#xff09;》这篇文章使用数据一致。需要说明由于spssau免费账号最多输入50项数据&#xff0c;所以使用的都是近50期数据。 spssau上的相关分析图 pyth…

多元逐步回归算法

先谈一下个人对多元逐步回归的理解&#xff1a;多元逐步回归的最本质的核心是最小二乘原理&#xff0c;本方法中调用smf方法。# encoding: utf-8""" 功能&#xff1a;多元逐步回归 描述&#xff1a;基于python实现多元逐步回归的功能 作者&#xff1a;CHEN_C_W …

【模型开发】逐步回归

1.定义 当变量中含有对被解释变量影响不大的解释变量时&#xff0c;可能因为误差平方和的自由度减小而使方差的估计增大&#xff0c;从而影响回归预测的精度&#xff0c;适当的选择一个变量建立一个最优的回归方程十分重要。 逐步回归&#xff08;Stepwise Regression&#xff…

matlab逐步回归分析法,天大matlab大作业逐步回归分析方法.doc

天大matlab大作业逐步回归分析方法.doc 逐步回归分析方法在实际中&#xff0c;影响Y的因素很多&#xff0c;这些因素可能存在多重共线性(相关性)&#xff0c;这就对系数的估计带来不合理的解释&#xff0c;从而影响对Y的分析和预测。“最优”的回归方程就是包含所有对Y有影响的…

【R语言数据科学】(十九):变量选择(一)逐步回归法

【R语言数据科学】 🌸个人主页:JOJO数据科学📝个人介绍:统计学top3高校统计学硕士在读💌如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏、👍订阅专栏✨本文收录于【R语言数据科学】本系列主要介绍R语言在数据科学领域的应用包括: R语言编程基础、R语言可视化、R…

4.1程序控制流图

程序控制流图&#xff0c;简称流图&#xff0c;是对程序流程图进行简化后得到的&#xff0c;它可以更加突出的表示程序控制流的结构。 控制流图中包括两种图形符号&#xff1a; 节点控制流线 复合条件要分解为简单条件 判定节点&#xff08;谓词节点&#xff09; 由判定节点发…

流程控制(上)

大家好&#xff0c;我是Python领域的博主。 如果你是编程爱好者可以小编一起学习&#xff0c;在这里我每天都会发Python的基础知识&#xff0c;以及相关的代码。 如果文章有什么错误的地方&#xff0c;请不吝赐教。 觉得博主文章写的还错的话&#xff0c;请三连支持一下博主哦 …

使用soot和graphviz画Java的控制流图

辛苦两天了&#xff0c;啥也不说&#xff0c;先来张图&#xff1a; 看着可真漂亮&#xff0c;O(∩_∩)O哈哈~ 实验环境是Ubuntu。 1.JDK的版本必须是1.7或者以下&#xff0c;JDK1.8不行&#xff0c;总会报错&#xff0c; 2.下载sootclasses-2.5.0.jar包&#xff1a;http://d…

软件测试----------------- 控制流图 圈复杂度 独立路径 测试用例

最近在学软件测试&#xff0c;学到了画&#xff0c;控制流图 圈复杂度 独立路径 测试用例&#xff0c;这里&#xff0c;有些不理解&#xff0c;就网上查了下&#xff0c;发现好多老哥写错了&#xff0c;大佬写的甚至收费79。 我试着写写&#xff0c;如果有不足的&#xff0c;大…

LLVM CFG控制流图可视化

LLVM CFG控制流图可视化 准备 安装必要组件 sudo apt-get install -y graphviz-doc libgraphviz-dev graphviz示例程序 /// file 1.c int x 10; int y 11; int main(){int z 12; for (int i 0;i < 10;i){z * x * y;} return 0; }生成LLVM IR 文件 clang -S -em…

白盒测试--控制流测试(白盒测试,逻辑覆盖,路径测试(基路径测试、循环测试),控制流图)

文章目录 白盒测试概念白盒测试方法--控制流测试语句覆盖判定覆盖&#xff08;分支覆盖&#xff09;条件覆盖判定-条件覆盖条件组合覆盖路径覆盖 路径测试基路径测试循环测试 控制流图基本控制流图复合逻辑下的控制流图图矩阵环形复杂度 白盒测试概念 又叫结构测试&#xff0c…

控制流分析(Control Flow Analysis)

控制流(Control Flow)&#xff1a;操作的序列 控制流分析(Control Flow Analysis)&#xff1a;通过分析程序去发现每一过程内控制流层次结构。 控制流分析的原因&#xff1a; 控制流分析(CFA)能够帮助我们理解控制流图&#xff08;control-flow graphs,CFG&#xff09;的结构…

程序流图画法详解

程序流图一般是软件评测师考试中的第一道大题&#xff0c;同时也是必考大题&#xff0c;多层嵌套的循环程序绘制流程图时十分繁琐&#xff0c;本人在经过练习真题以及查阅资料后有了一些绘制控制流图的小经验&#xff0c;如有不对请指出。下面以2017年的软件评测师下午第一套真…