首页 > 编程语言 >c# 游戏设计:地图移动

c# 游戏设计:地图移动

时间:2023-01-04 13:35:21浏览次数:60  
标签:游戏 c# 地图 Height mypoint pictureBox1 myBitmap new Size

想实现一个小游戏,先做地图移动。步骤记录如下:

1、百度到一张大的迷宫地图,放在项目的debug目录下,备用。

2、创建一个winform项目,不添加任何界面元素。

3、添加数据成员如下:

        PictureBox pictureBox1;
        Bitmap myBitmap;
        Bitmap currBitmap;
        Point mypoint;

  

分别用于显示图片、存储地图,存储界面上的地图,界面上的地图显示的左上角坐标。

4、设置窗体启动后最大化

public Form1()
        {
            InitializeComponent();
            this.WindowState = FormWindowState.Maximized;            
        }

  5、窗口启动后添加图片和做其他各种预备工作。

        private void Form1_Shown(object sender, EventArgs e)
        {
            this.MaximumSize = this.Size;
            this.MinimumSize = this.Size;
            pictureBox1 = new PictureBox();
            pictureBox1.Location = new System.Drawing.Point(0, 0);
            pictureBox1.Size = this.Size;
            this.Controls.Add(pictureBox1);

            myBitmap = new Bitmap("map.jpeg");
            currBitmap = new Bitmap(this.Size.Width, this.Size.Height);
            pictureBox1.Image = currBitmap;
            mypoint = new Point(0, 0);
            var g = Graphics.FromImage(pictureBox1.Image);
            g.DrawImage(myBitmap, mypoint);
        }

  6、处理asdw按键按下消息,让地图可以移动。

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            var key = e.KeyValue;
            var g = Graphics.FromImage(pictureBox1.Image);
            if (key >= 'a' && key <= 'z') key -= ('a' - 'A');
            switch(key)
            {
                case 'A':
                    mypoint.X -= 10;
                    if (mypoint.X + myBitmap.Size.Width <currBitmap.Size.Width) mypoint.X = currBitmap.Size.Width-myBitmap.Size.Width;
                    break;
                case 'D':
                    mypoint.X += 10;
                    if (mypoint.X>0) mypoint.X = 0;
                    break;
                case 'W':
                    mypoint.Y -= 10;
                    if (mypoint.Y + myBitmap.Size.Height < currBitmap.Size.Height) mypoint.Y = currBitmap.Size.Height - myBitmap.Size.Height;
                    break;
                case 'S':
                    mypoint.Y += 10;
                    if (mypoint.Y>0) mypoint.Y = 0;
                    break;
                default: break;
            }
            g.DrawImage(myBitmap, mypoint);
            pictureBox1.Refresh();
        }

  

完毕。

显示效果如下:

下一步找一些小人加上去。

标签:游戏,c#,地图,Height,mypoint,pictureBox1,myBitmap,new,Size
From: https://www.cnblogs.com/tyxajh/p/17024570.html

相关文章

  • Unity2019学习:常用功能--Canvas画布
    Canvas(画布)游戏对象是其他UnityUI的基础,其他的UnityUI必须是Canvas(画布)游戏对象的下级游戏对象。当UI内容发生变化的时候,是以画布为单位进行重绘,合理的将内容分配到不同的......
  • self hosted private support chat software use JavaScript remove HTML tags
    ThemainreasonforremovingHTMLtagsinonlinecustomerservicesystemsistopreventmalicioususersfromattackingthewebsiteorotherusersbyinputting......
  • Trick 6: 组合数学小技巧
    求解递推式\(a_n=xa_{n-1}+y\)。分析:换元,加入一个常数\(c\),我们期望得到这样一个结果:\(a_n+c=x(a_{n-1}+c)\)。化简后和上式对应,解得\(c=\dfrac{y}{x-......
  • Yyield && scrapy案例:当当网爬取数据 &&开启多管道下载
    yield   开启多管道在setting.py中新开一个管道,pipelines下写详细,注意url地址。 当当网爬取案例importscrapyfromscrapy_dangdang_095.itemsimportScr......
  • 《Unity 2D与3D手机游戏开发实战》上架了。
    新书上架了。这本书主要是Unity开发的入门,附带了一个简单的2D例子,一个3DRPG的简单例子和一个尽可能用插件实现的射击游戏的例子。书很薄,不过因为是彩页印刷,价钱不是那么实......
  • 简述游戏地图制作过程(一)
      概述以三国地图为例子,给大家介绍下策略游戏的地图设计方法,主要包括原型搭建,地形细化,动线设计。 原型搭建首先明确地图基础规则:地图由格子组成,单个格子带地形属......
  • onnxruntime InferenceSession
     importonnxruntimeimportonnximportnumpyasnpinput=np.random.rand(1,3,224,224).astype(dtype=np.float32)sess=onnxruntime.InferenceSession("add_mo......
  • Docker在ubuntu下的安装和使用
    ---------------------------容器安装与验证---------------------------安装参考:https://www.runoob.com/docker/ubuntu-docker-install.html安装是否安装验证:$ sudo ......
  • 在线客服系统中javascript 源码实现除去html标签
    在线客服系统中除去HTML标签的主要原因是为了防止恶意用户通过输入恶意的HTML代码来攻击网站或其他用户。例如,如果你不过滤用户输入的HTML,一个恶意用户可能会输入下面这段......
  • Codeforces Hello 2023 CF 1779 A~F 题解
    点我看题A.HallofFame先把不用操作就合法的情况判掉。然后发现交换LL,RR,RL都是没用的,只有交换LR是有用的,这样可以照亮相邻的两个位置。所以我们就是要找到一个位置i,......