⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 move.c

📁 GBA平台上《特训》游戏的源代码
💻 C
字号:
#include <GsGBA.h>
#include "data.h"
#include "move.h"

//这些是比较难的部分,是描述一个物体的直线移动
//看不明白也没关系,想深入了解的话,请参考计算机图形学中的直线绘制算法


//设置开始移动的位置和移动的目标
void MB_StartMove(MOVEBLOCK *p,int sx,int sy,int dx,int dy)
{
	p->x1=sx;
	p->y1=sy;
	p->x2=dx;
	p->y2=dy;

	p->delta_x = p->x2-p->x1;
	p->delta_y = p->y2-p->y1;
	if(p->delta_x > 0)
		p->incx = 1;
	else if(p->delta_x == 0)  
		p->incx = 0;
	else
	{
		p->delta_x = -p->delta_x;
		p->incx = -1;
	}
	if(p->delta_y > 0)
		p->incy = 1;
	else if(p->delta_y == 0)
		p->incy = 0;
	else
	{ 
		p->delta_y = -p->delta_y;
		p->incy = -1;
	}
	if(p->delta_x > p->delta_y)
		p->distance = p->delta_x;
	else
		p->distance = p->delta_y;
	
}


void MB_Move(MOVEBLOCK *p)				//角色的一次移动
{
	p->ln_x=p->x1;
	p->ln_y=p->y1;
	p->x +=p->delta_x;
	p->y +=p->delta_y;

	if(p->x > p->distance)
	{
		p->x  -= p->distance;
		p->x1 += p->incx;
	}
	if(p->y > p->distance)
	{
		p->y  -= p->distance;
		p->y1 += p->incy;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -