C# 游戏雏形 人物地图双重移动

1. 设计出发点

准备做一个旅游短视频,想实现一个小人或汽车在百度地图上按指定路线移动的效果,把之前自己写的代码拿出来,修改完成。

主要修改内容:

(1)实现了人物地图双移动。即如果人物向屏幕中间移动,移动人物;人物向屏幕四周移动,如果可移动地图则移动地图,否则移动人物。

(2)将原先的人物单方向移动动画换成了四方向

(3)改正了按键后人物重影的问题

(4)修改了几个原先含义不明确的变量

未解决bug:按键控制人物移动时会闪烁

2. 主要更新代码

(1)定时器代码

private void T200_Tick(object sender, EventArgs e)
        {
            t200.Stop();
            Bitmap person1 = new Bitmap(person16.Width/4, person16.Height/4);
            winPoint point = new winPoint(0, 0);
            cnt++;
            if (cnt > 3) cnt = 0;
            point.X = -1*cnt * person1.Width;//不同人物动作x坐标不同
            point.Y = -1 * direct * person1.Height;
            using (Graphics g = Graphics.FromImage(person1))
            {
                g.DrawImage(person16, point);//完成人物切换和动作叠加
            }
            using (Graphics g0 = Graphics.FromImage(pictureBox1.Image))
            {
                //g0.DrawImage()
                g0.DrawImage(allBitmap, mapPoint);//不好,但不知道如何在上面解决
                g0.DrawImage(person1, personPt.X,personPt.Y);//将人物和背景叠加图绘制到地图上
            }
            pictureBox1.Refresh();
            t200.Start();
        }

(2)人物移动和地图相对移动代码

case 'D':
                    direct = 2;
                    if (personPt.X > (pictureBox1.Size.Width - person16.Width / 4)/2)//越过屏幕中间
                    {//如果地图可移动,则移动地图
                        mapPoint.X -= 10;
                        if (mapPoint.X + allBitmap.Size.Width < currBitmap.Size.Width)//地图到边了
                        {
                            mapPoint.X += 10;
                            personPt.X += 10;
                            if (personPt.X > pictureBox1.Size.Width - person16.Width / 4)
                                personPt.X = pictureBox1.Size.Width - person16.Width / 4;
                        }
                    }
                    else
                    {
                        personPt.X += 10;//还没有到屏幕中心,移动人
                        if (personPt.X > pictureBox1.Size.Width - person16.Width / 4)
                            personPt.X = pictureBox1.Size.Width - person16.Width / 4;
                    }
                    break;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

健忘的松鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值