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

📄 refresh.cpp

📁 一个平面RPG的游戏demo,使用directx
💻 CPP
字号:
#include "RpgMain.h"

int CursorX[10];
int CursorY[10];

void RefreshAll()
{
	MakeRect(0,0,640,480);
	lpDDSBuffer->BltFast(0,0,lpDDSMap,&r,NoKey);
	for(int i=0;i<MaxHuman;i++)
		Human[i]->Show();
 	for (i=0;i<LastBullet;i++)
		Bullet[i]->Show();
	MakeRect(0,0,640,480);
	lpDDSBuffer->BltFast(0,0,lpDDSOver,&r,SrcKey);
	POINT	curpos;
	GetCursorPos(&curpos);
	if (curpos.x>640) curpos.x=640;
	if (curpos.y>480) curpos.y=480;
	for (i=0;i<10;i++)
	{
		CursorX[i]=CursorX[i+1];
		CursorY[i]=CursorY[i+1];
	}
	CursorX[9]=curpos.x;
	CursorY[9]=curpos.y;
	for (i=0;i<10;i++)
	{
		int mx=32;
		int my=26;
		if (640-CursorX[i]<mx) mx=640-CursorX[i];
		if (480-CursorY[i]<my) my=480-CursorY[i];
		MakeRect(0,0,mx,my);
		lpDDSBuffer->BltFast(CursorX[i],CursorY[i],lpDDSMouse,&r,SrcKey);
	}
	Flip();
}

//---------------Main Timer-----------------------------------------
void CALLBACK GameTimer(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
	int i;
	static int count=0;
	count++;
	if (count%2==0)
	{
		for (i=0;i<LastBullet;i++)
		{
			if (Bullet[i]->status!=-1)
			{
				Bullet[i]->status=(Bullet[i]->HalfMove+1)%4;
				Bullet[i]->HalfMove++;
				if (Bullet[i]->HalfMove==4)
				{
					Bullet[i]->HalfMove=0;
					Bullet[i]->x+=WhereX[Bullet[i]->face];
					Bullet[i]->y+=WhereY[Bullet[i]->face];
				}
			}
		}
	}
	for (i=0;i<MaxHuman;i++)
	{
		if (Human[i]->status==Casting)
			Human[i]->cooldown++;
		if (Human[i]->cooldown==8)
		{
			Human[i]->status=Free;
			Human[i]->cooldown=0;
		}
		if (Human[i]->status==Moving)
		{
			if ((i==Boy)||(count%4==0))
			{
				temp=1;
				int x=Human[i]->x;
				int y=Human[i]->y;
				Human[i]->leg=(Human[i]->leg+1)%2;
				Human[i]->HalfMoving++;
				temp=0;
				if (Human[i]->HalfMoving==4)
				{
					Human[i]->HalfMoving=0;
					Human[i]->x+=WhereX[Human[i]->face];
					Human[i]->y+=WhereY[Human[i]->face];
					Human[i]->status=Free;
					int x=Human[i]->x;
					int y=Human[i]->y;
	//////////////////////////////////////////////////////////////////
					if ((x==10)&&(y==14)&&(Human[i]->map==Inn))
						Map[Outside]->Active(i,10,1);
					if ((x==10)&&(y==0)&&(Human[i]->map==Outside))
					{
						Map[Inn]->Active(i,10,13);
						if (i==Boy)
						{
							Human[Teacher]->SetXY(5,8);
							kk=1;
							Map[Inn]->Active(Girl,7,10);
							Map[Inn]->Active(Girl2,5,11);
							Map[Inn]->Active(Boy2,6,11);
							for (int j=1;j<=4;j++)
							{
								if (Human[j]->status!=Dead)
									Human[j]->status=Busy;
								Human[j]->HalfMoving=0;
							}
							for (int k=1;k<=3;k++)
								Human[k]->face=up;
							Human[Teacher]->face=down;
						}
					}
					if ((x==4)&&(kk==1)&&(y==10)&&(i==Boy))
					{
						LongTalk=1;
						Human[Boy]->face=up;
						Human[Boy]->HalfMoving=0;
						SetAll(Busy);
						Human[Teacher]->SayTo(Boy,"大家安静一下,现在又上数学课了!!!");
						kk=0;
					}
///////////////////////////////////////////////////////////////////
				}
			}
		}
	}
	if (count%3==0)
	{
		for (i=0;i<MaxHuman;i++)
		{
			if ((GameOver!=1)&&(Human[i]->ti<=99)&&(Human[i]->status!=Moving))
				Human[i]->SetTi(Human[i]->ti+1);
		}
	}
	if (count%4==0)
	{
		for (i=0;i<MaxHuman;i++)
		{
			if ((GameOver!=1)&&(Human[i]->nei<=99)&&(Human[i]->status!=Casting))
				Human[i]->SetNei(Human[i]->nei+1);
		}
	}
	for (int x=1;x<MaxHuman;x++)
	{
		if ((Human[x]->fstatus==Angry)&&(Human[x]->status==Free)&&(Human[x]->map==Human[Boy]->map))
		{
			if (Human[x]->x==Human[Boy]->x)
			{
				if (Human[x]->y<Human[Boy]->y)
				{
					Human[x]->face=0;
					Human[x]->HalfMoving=0;
					Human[x]->status=Free;
					Human[x]->weapon=Missile;
					Human[x]->Fight();
				}
				if (Human[x]->y>Human[Boy]->y)
				{
					Human[x]->face=2;
					Human[x]->HalfMoving=0;
					Human[x]->status=Free;
					Human[x]->weapon=Missile;
					Human[x]->Fight();
				}
			}	
			if (Human[x]->y==Human[Boy]->y)
			{
				if (Human[x]->x<Human[Boy]->x)
				{
					Human[x]->face=3;
					Human[x]->HalfMoving=0;
					Human[x]->status=Free;
					Human[x]->weapon=Missile;
					Human[x]->Fight();
				}
				if (Human[x]->x>Human[Boy]->x)
				{							
					Human[x]->face=1;
					Human[x]->HalfMoving=0;
					Human[x]->status=Free;
					Human[x]->weapon=Missile;
					Human[x]->Fight();
				}
			}
		}
	}
	if (rand()%3>1)
	{
		int x=rand()%(MaxHuman-1)+1;
		if (Human[x]->status==Free)
		{
			if (rand()%4>1)
			{
				Human[x]->Move(Human[x]->face);
			}
			else
			{
				Human[x]->Move(rand()%4);
			}
		}
	}
	if (count==2000)
	{
		count=0;
	}
}

⌨️ 快捷键说明

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