📄 gameframe.cpp
字号:
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 + -