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

📄 gameframe.cpp

📁 本人自己设计的rpg游戏
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			if(thismap[go_map_y][go_map_x-1]<6)
			{
		if(go_x>200)
		{
				go_x=go_x-50;
				
		go_map_x=(go_x+sc_x)/50;
		}
		else if(sc_x>0&&go_x<=200)
		{
			sc_x=sc_x-50;
			
		go_map_x=(go_x+sc_x)/50;

		}
		else 
		{
				go_x=go_x-50;
				
		go_map_x=(go_x+sc_x)/50;
		}
			}
			dis_map_x=sc_x/50;
	dis_map_y=sc_y/50;

			
		
			if(d==2)
		{
			c=c+1;
			if(c>=9)
			c=2;
		}
		else 
			c=2;
		d=2;
		xp=96*c;
		}
		mdc1->SelectObject(a[2]);
		
		
		
	}
	if(mousepoint.x-go_x>90&&abs(mousepoint.y-go_y)<abs(mousepoint.x-go_x))
	{
		mdc->SelectObject(m[1]);
		if(sc_x<128*50&&go_x<784)
		{
			if(thismap[go_map_y][go_map_x+1]<6&&(go_map_x+1)*51>go_x)
			{
		if(go_x+50<784)
		{
			go_x=go_x+50;
			go_map_x=(go_x+sc_x)/50;
			
		}
		else
		{
			sc_x=sc_x+50;
			go_map_x=(go_x+sc_x)/50;
		}
			}
	dis_map_x=sc_x/50;
	dis_map_y=sc_y/50;

			
		
			if(d==1)
		{c=c+1;
			
			if(c>=9)
			c=2;
		}
		else 
			c=2;
		d=1;
		xp=96*c;
		}
	
		mdc1->SelectObject(a[1]);
		
	

	}
	}




	


}
else
{
xp=0;
}
if(old_dis_x!=dis_map_x||old_dis_y!=dis_map_y)
{
	if(dis_map_x>old_dis_x)
	{
		dcComp->BitBlt(0,0,950,600,dcComp,50,0,SRCCOPY);
map_x=19;
		for(int map_y=0;map_y<12;map_y++)
		{
		
				bgcdc->SelectObject(drawmap[thismap[dis_map_y+map_y][dis_map_x+map_x]]);
				dcComp->BitBlt(950,(map_y)*50,51,51,bgcdc,0,0,SRCCOPY);
		
		

		}
	
	}
	if(dis_map_x<old_dis_x)
	{
			dcComp->BitBlt(50,0,950,600,dcComp,0,0,SRCCOPY);
 map_x=0;
	for(int map_y=0;map_y<12;map_y++)
		{
		
				bgcdc->SelectObject(drawmap[thismap[dis_map_y+map_y][dis_map_x+map_x]]);
				dcComp->BitBlt(0,(map_y)*50,51,51,bgcdc,0,0,SRCCOPY);
		
		

		}
	
	}
if(dis_map_y<old_dis_y)
	{
	dcComp->BitBlt(0,50,1000,550,dcComp,0,0,SRCCOPY);
	map_y=0;
		for(int map_x=0;map_x<20;map_x++)
	{
		
		
				bgcdc->SelectObject(drawmap[thismap[dis_map_y+map_y][dis_map_x+map_x]]);
				dcComp->BitBlt((map_x)*50,0,51,51,bgcdc,0,0,SRCCOPY);
		
		

		
	}
	}
if(dis_map_y>old_dis_y)
{
	dcComp->BitBlt(0,0,1000,550,dcComp,0,50,SRCCOPY);
map_y=11;
	for(int map_x=0;map_x<20;map_x++)
	{
	
		
				bgcdc->SelectObject(drawmap[thismap[dis_map_y+map_y][dis_map_x+map_x]]);
				dcComp->BitBlt((map_x)*50,550,51,51,bgcdc,0,0,SRCCOPY);
		
		

		
	}
	}


}

}

/////////////////////////////////////////
if(nIDEvent==4)
{	



}



if(nIDEvent==1)
{

	
screendc->BitBlt(0,0,1024,618,dcComp,0,0,SRCCOPY);
	screendc->BitBlt(go_x-20,go_y,96,96,mdc,xp,0,SRCAND);
	screendc->BitBlt(go_x-20,go_y,96,96,mdc1,xp,0,SRCPAINT);
screendc->BitBlt(people[0].point.x-sc_x,people[0].point.y-sc_y,90,90,att1[1],0,0,SRCAND);
screendc->BitBlt(people[0].point.x-sc_x,people[0].point.y-sc_y,90,90,att[1],0,0,SRCPAINT);

if(people1_click)
{
screendc->TextOut(people[0].point.x-sc_x,people[0].point.y-sc_y-10,"我能为你做点什么");
}
if(goods)
goodsopen();
	if(myself.alive)
	{
	
	
	
	
//键盘处理

	
	
///////////////////////////////////////////////////////////////////////	


//怪物走动 挨打
		
for(count=0;count<3;count++)
{
	if(mon[count].isbeat)
	{
		mon[count].time=mon[count].time+1;
		
		screendc->TextOut(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,"啊,我被打中了!!");
		if(mon[count].time=4)
		{
	mon[count].isbeat=false;
	mon[count].time=0;
		}
	bgcdc->SelectObject(pm[2]);
    screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc,xm,0,SRCAND);
    
	bgcdc1->SelectObject(pn[2]);
	screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc1,xm,0,SRCPAINT);
	}
	else
	{
	if(mon[count].alive)
	{
if(abs(mon[count].p1.x-sc_x-go_x)<=350&&abs(mon[count].p1.y-sc_y-go_y)<=350)
{
	numm++;
	if(numm==8)
	numm=0;



	if(abs(mon[count].p1.x-sc_x-go_x)>=abs(mon[count].p1.y-sc_y-go_y))
	{
		if(abs(mon[count].p1.x-sc_x-go_x>=16))
		{
			xm=68*numm;
			mon[count].p1.x-=16;
		    bgcdc->SelectObject(pm[2]);
            screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc,xm,0,SRCAND);
    
			bgcdc1->SelectObject(pn[2]);
			screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc1,xm,0,SRCPAINT);

		}
		else
		{
			xm=68*numm;
			mon[count].p1.x+=16;
			bgcdc->SelectObject(pm[3]);
            screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc,xm,0,SRCAND);
   
			bgcdc1->SelectObject(pn[3]);
			screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc1,xm,0,SRCPAINT);

		}
	}
		else
			{
		if(mon[count].p1.y-sc_y-go_y>=16)
		{
			xm=68*numm;
			mon[count].p1.y-=16;
			bgcdc->SelectObject(pm[0]);
            screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc,xm,0,SRCAND);
    		bgcdc1->SelectObject(pn[0]);
			screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc1,xm,0,SRCPAINT);
		}
		else
		{
			xm=68*numm;
			mon[count].p1.y+=16;
			bgcdc->SelectObject(pm[1]);
            screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc,xm,0,SRCAND);
    
			bgcdc1->SelectObject(pn[1]);
			screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc1,xm,0,SRCPAINT);

		}
	}
}

else
{
numm++;
if(numm==8)
numm=0;
xm=68*numm;
bgcdc->SelectObject(pm[3]);
screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc,xm,0,SRCAND);
    
bgcdc1->SelectObject(pn[3]);
screendc->BitBlt(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y,65,90,bgcdc1,xm,0,SRCPAINT);
}

}
}

}


}else
screendc->TextOut(100,250,"你挂了");
}
		//////////////////////////////////////



		if(nIDEvent==5)
		{
if(mouse_left)//自身攻击
{

   
	for(count=0;count<3;count++)
	{
		if(mon[count].alive)
		{
			mon[count].monrect.top=mon[count].p1.y-sc_y;
	mon[count].monrect.left=mon[count].p1.x-sc_x;
    mon[count].monrect.bottom=mon[count].monrect.top+75;
    mon[count].monrect.right=mon[count].monrect.left+55;
			if(attack==0){
				
                 
				if(abs(mon[count].p1.x-sc_x-go_x)<=140&&abs(mon[count].p1.y-sc_y-go_y)<=140&&mon[count].monrect.PtInRect(mousepoint))
			{
				screendc->TextOut(mon[count].p1.x-sc_x,mon[count].p1.y-sc_y-10,"普通攻击 -50");
				mon[count].hp=mon[count].hp-50;
				mon[count].isbeat=true;
				myself.attack=TRUE;
				if(mon[count].hp<=0)
				{clear=clear-1;
					mon[count].alive=false;
				}

			}
				else
				{
					
				}
			}


		}
	
	}
}
/////////////////////////////////////////////////
//怪物攻击
		}
if(nIDEvent==2)

{
for(count=0;count<3;count++)
{if(mon[count].isbeat)
{
}
else{
	if(mon[count].alive)
	{
if(abs(mon[count].p1.x-sc_x-go_x)<=40&&abs(mon[count].p1.y-sc_y-go_y)<=40)
{
	switch(rand()%2)
	{
	case 0:
		screendc->TextOut(go_x,go_y-10,"普通攻击 -5");
		myself.hp=myself.hp-5;
		if(myself.hp<=0)
			myself.alive=FALSE;
		break;
	case 1:
		screendc->TextOut(go_x,go_y-10,"无效");
		break;


	}
}
	}
}	

}
}


//攻击招式
for(count=0;count<3;count++)
{if(myself.attack)
{
if(abs(mon[count].p1.x-sc_x-go_x)<abs(mon[count].p1.y-sc_y-go_y))
{
if(mon[count].p1.y-sc_y<go_y)//上
{mdc->SelectObject(m[0]);
mdc1->SelectObject(a[0]);


	att[0]->SelectObject(tt[0]);
    screendc->BitBlt(go_x,go_y-100,100,80,att[0],0,0,SRCAND);
    
    att1[0]->SelectObject(at[0]);
	screendc->BitBlt(go_x,go_y-100,100,80,att1[0],0,0,SRCPAINT);

}
else
{mdc->SelectObject(m[3]);
mdc1->SelectObject(a[3]);

att[0]->SelectObject(tt[3]);
    screendc->BitBlt(go_x,go_y+100,100,80,att[0],0,0,SRCAND);
    
    att1[0]->SelectObject(at[3]);
	screendc->BitBlt(go_x,go_y+100,100,80,att1[0],0,0,SRCPAINT);
}
}
else
{
	if(mon[count].p1.x-sc_x<go_x)//左
	{mdc->SelectObject(m[2]);
mdc1->SelectObject(a[2]);

att[0]->SelectObject(tt[2]);
    screendc->BitBlt(go_x-100,go_y,100,80,att[0],0,0,SRCAND);
    
    att1[0]->SelectObject(at[2]);
	screendc->BitBlt(go_x-100,go_y,100,80,att1[0],0,0,SRCPAINT);
	}
	else
	{
		mdc->SelectObject(m[1]);
mdc1->SelectObject(a[1]);

att[0]->SelectObject(tt[1]);
    screendc->BitBlt(go_x+100,go_y,100,80,att[0],0,0,SRCAND);
    
    att1[0]->SelectObject(at[1]);
	screendc->BitBlt(go_x+100,go_y,100,80,att1[0],0,0,SRCPAINT);

	}


}

myself.attack=FALSE;
}
}

//刷怪

if(clear==0)
{fresh=fresh-1;
	if(fresh==0)
{
	for(count=0;count<3;count++)
	{mon[count].hp=200;
		mon[count].alive=true;
		mon[i].p1.x=rand()%2048+2048;
	mon[i].p1.y=rand()%1024+2048;
	}
	clear=3;
	fresh=30;
}
}
//退出键被按下	
	if(ESCAPE)
	{
		KillTimer(nIDEvent);
		return;
	}

	////////////////////////////////////

	//窗体显示
	
	
	Invalidate(FALSE);
	





	CFrameWnd::OnTimer(nIDEvent);
}

void gameFrame::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(mouse_right)
	{
		mousepoint.x=point.x;
		mousepoint.y=point.y;
	}
	xlast=go_x;
	ylast=go_y;
	nump++;
	if(nump==8)
		nump=0;
	xp1=55*nump;

	CFrameWnd::OnMouseMove(nFlags, point);
}

void gameFrame::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	
	UP=FALSE;
	
    DOWN=FALSE;
	
    LEFT=FALSE;
	
	RIGHT=FALSE;
	CFrameWnd::OnKeyUp(nChar, nRepCnt, nFlags);
}

void gameFrame::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CPoint getpoint;
	mouse_left=TRUE;
	isattack=TRUE;

	mousepoint.x=point.x;
	mousepoint.y=point.y;
	getpoint.x=point.x;
	getpoint.y=point.y-600;
	if(sbutton[0].PtInRect(getpoint))
	{
		if(goods)
		goods=FALSE;
	    else
		goods=TRUE;
	}

	CFrameWnd::OnLButtonDown(nFlags, point);
}

void gameFrame::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	mouse_left=FALSE;
	CFrameWnd::OnLButtonUp(nFlags, point);
}



void gameFrame::Load(char *filename)
{
Invalidate(TRUE);
}

void gameFrame::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	mousepoint.x=point.x+sc_x;
	mousepoint.y=point.y+sc_y;
	lmousedk.x=point.x;
	lmousedk.y=point.y;
	if(people[0].actorect.PtInRect(mousepoint))
		people1_click=TRUE;
	else
		people1_click=FALSE;

	CFrameWnd::OnLButtonDblClk(nFlags, point);
}

void gameFrame::goodsopen()
{
	int change=0,n;
	
	
	screendc->SetTextColor(RGB(0,0,200));
	screendc->SetBkMode(0);
	screendc->TextOut(1,1,"你打开了物品包");

	opengoods[0].selectrect.top=400;
	opengoods[0].selectrect.bottom=opengoods[0].selectrect.top+40;
	opengoods[0].selectrect.left=600;
	opengoods[0].selectrect.right=opengoods[0].selectrect.left+40;
	
	for(n=1;n<40;n++)
	{
		opengoods[n].selectrect.top=opengoods[n-1].selectrect.top;
		opengoods[n].selectrect.bottom=opengoods[n].selectrect.top+40;
		opengoods[n].selectrect.left=opengoods[n-1].selectrect.left+40;
		opengoods[n].selectrect.right=opengoods[n].selectrect.left+40;
change=change+1;		
		if(change==8)
		{
		change=0;
		opengoods[n].selectrect.top=opengoods[n-1].selectrect.top+40;
		opengoods[n].selectrect.bottom=opengoods[n].selectrect.top+40;
		opengoods[n].selectrect.left=opengoods[0].selectrect.left;
		opengoods[n].selectrect.right=opengoods[n].selectrect.left+40;


		}


	}
	for(n=0;n<40;n++)
	{
		screendc->Rectangle(opengoods[n].selectrect);
	}
	for(n=0;n<40;n++)
	{
		if(opengoods[n].selectrect.PtInRect(lmousedk))
		{
			if(opengoods[n].select==1)//回城
			{
				sc_x=150;
				sc_y=150;
				go_x=201;
				go_y=200;
				dis_map_x=sc_x/50;
	            dis_map_y=sc_y/50;
				opengoods[n].select=0;
					for(int map_x=0;map_x<21;map_x++)
	{
		for(int map_y=0;map_y<13;map_y++)
		{
			for(count=0;count<=50;count++)
			{
			if(thismap[dis_map_y+map_y][dis_map_x+map_x]==count)
			{
				bgcdc->SelectObject(drawmap[count]);
				dcComp->BitBlt((map_x)*50,(map_y)*50,51,51,bgcdc,0,0,SRCCOPY);
			}
			}
		

		}
	}
					screendc->BitBlt(0,0,1024,618,dcComp,0,0,SRCCOPY);
					goods=FALSE;
				Invalidate(TRUE);
			}
		}
	}


}

void gameFrame::sixbox()
{
	int n;
	Cgoodbox disbox[6];
	disbox[0].selectrect.top=1;
	disbox[0].selectrect.bottom=disbox[0].selectrect.top+40;
	disbox[0].selectrect.left=50;
	disbox[0].selectrect.right=disbox[0].selectrect.left+40;
	for(n=1;n<6;n++)
	{
	disbox[n].selectrect.top=disbox[n-1].selectrect.top;
	disbox[n].selectrect.bottom=disbox[n].selectrect.top+40;
	disbox[n].selectrect.left=disbox[n-1].selectrect.left+40;
	disbox[n].selectrect.right=disbox[n].selectrect.left+40;
	}
	for(n=0;n<6;n++)
	{
		att[2]->Rectangle(disbox[n].selectrect);

	}




}

void gameFrame::isbegin()
{
	CBrush brushGrid(RGB(25,25,255));
	CBrush* pOldBrush=att[4]->SelectObject(&brushGrid);
	CPoint getpoint;
	getpoint.x=mousepoint.x;
	getpoint.y=mousepoint.y-100;
	CRect start;
	CRect isexit;
    start.top=10;
	start.bottom=start.top+30;
	start.left=100;
	start.right=start.left+150;
	isexit.top=10;
	isexit.bottom=isexit.top+30;
	isexit.left=300;
	isexit.right=isexit.left+150;
	att[4]->Rectangle(start);
	att[4]->Rectangle(isexit);
	att[4]->SelectObject(pOldBrush);
	att[4]->SetTextColor(RGB(200,200,50));
    att[4]->SetBkMode(0);
	att[4]->TextOut(start.left+20,start.top+5,"开始游戏");
	att[4]->TextOut(isexit.left+20,isexit.top+5,"退出游戏");
	if(mouse_left)
	{
	if(start.PtInRect(getpoint))
	{
		isstart=TRUE;

	}
	if(isexit.PtInRect(getpoint))
	{
		PostMessage(WM_CLOSE);

	}

	}
	


}

⌨️ 快捷键说明

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