c# 游戏设计:地图移动
想实现一个小游戏,先做地图移动。步骤记录如下:
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# 游戏设计:地图移动的更多相关文章
- Silverlight游戏设计(Game Design):(十四)练习用游戏素材资源的获取及相关工具使用心得 --转
Silverlight游戏设计(Game Design):(十四)练习用游戏素材资源的获取及相关工具使用心得 通过前6节的Demo制作演示,大家应该已经相当熟悉这款Silverlight-2D游戏场景 ...
- MMORPG大型游戏设计与开发(客户端架构 part8 of vegine)
脚本模块是游戏设计中争论比较多的话题,那是因为作为脚本本身所带来的利弊.其实这都无关紧要,取舍是人必须学会的一项技能,如果你不会取舍那么就让趋势给你一个满意的答复.自从魔兽世界以及传奇(世界)问世以来 ...
- MMORPG大型游戏设计与开发(概述)updated
1.定义 MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写,即大型多人在线角色扮演游戏. 2.技术与知识 在这系列 ...
- 信息安全系统设计基础课程实践:简单TUI游戏设计
简单TUI游戏设计 目 录 一 Curses库简介与基本开发方法 ...
- 【Stage3D学习笔记续】山寨Starling(十):高效游戏设计、纹理集和ATF
我发布了经过批处理优化的v0.3版,点击下载:https://github.com/hammerc/hammerc-study-Stage3D/archive/v0.3.zip 先看看我们批处理优化后 ...
- Roguelike元素对游戏设计的影响
Roguelike game自1980年以来,就占据着游戏市场中很大的份额,而现如今的很多游戏中,也加入了Roguelike元素来起到更好的效果.我们知道Roguelike game中有着一些看似任性 ...
- <发条游戏设计>粗翻——第一部分 理论(一)
段落1 游戏 游戏设计定义 相对而言,游戏设计是一个新的学科,专业的作曲家.画家.作家.建筑师已经至少存在了500多年,然而游戏设计师只在最近50年才被特分出来单作一类.然而这个类别仅仅在最近20-2 ...
- <发条游戏设计>粗翻——序言、
序言——————————————————————— 优雅 就像在英语里的很多单词一样,“优雅”有着一些不同意义的解释.一些习惯性的用法常常带有“美”的意思:例如“她穿着一条优雅的裙子”,代表着一种完全 ...
- Unity游戏设计与实现 南梦宫一线程序员的开发实例
图灵程序设计丛书 Unity游戏设计与实现:南梦宫一线程序员的开发实例(修订版) 加藤政树 (作者) 罗水东 (译者) c# 游戏 unity <内容提要>本书的作者是日本知 ...
- Cocos文档案例游戏设计的梳理与分析
导语:这是一篇新手教程,适用于已看完Cocos官方文档,但还对游戏设计.运行流程不熟悉的新人.这篇教程是对文档[快速上手]里那款名叫"摘星星"的坑爹小游戏(文档原话)流程的梳理,以 ...
随机推荐
- JavaScript:函数:函数的返回值
调用函数后,总是有返回值的: 使用return关键字进行返回,返回的结果,我们需要用变量来存储; 如果没有使用return语句,或者只有return这一个裸关键字,那么返回的结果是undefined: ...
- 12、HSSFWorkbook实现多张sheet导出
转载自 一.封装一个通用的装载数据的实体类: import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsCon ...
- .Net 7 被Microsoft的开源免费PowerToys工具独立附带
楔子 什么是PowerToys? Microsoft PowerToys 是一组实用工具,可帮助高级用户调整和简化其 Windows 体验,从而提高工作效率. 简而言之,就是给最新的windows11 ...
- Shell 基本常识
Shell 进入命令行 启动 shell 常用命令 系统管理命令 处理数据命令 Linux 基础管理命令 用户管理 管理文件系统 软件包管理系统 使用容器管理软件 理解 shell 子 shell 环 ...
- Angularjs——初识AngularJS
AngularJS--初识AngularJS AngularJS是什么 AngularJS是Google开源的一款前端JS结构化框架,它通过对前端开发进行分层,极好地规范了前端开发的风格--它将前端开 ...
- Python 内置界面开发框架 Tkinter入门篇
本文大概 4158 个字,阅读需花 10 分钟 内容不多,但也花了一些精力 如要交流,欢迎关注我然后评论区留言 谢谢你的点赞收藏分享 首先,今天先给大家拜个好年!新年快乐,恭喜发财!为了感谢大家对我的 ...
- vue+div.canvas图像标注功能实现
main.js import Vue from 'vue' import 'vueui-widgets/dist/index.css' import VueUI from 'vueui-widgets ...
- angular Ionic CLI组件建立,使用图标,弹窗,按钮,卡片,列表,无尽滚动,刷新
- Windows下使用Graalvm将Springboot应用编译成exe大大提高启动和运行效率
GraalVM安装 GraalVM安装 安装 请前往GraalVM官网 下载 GraalVM Community 22.3,注意当前支持的Springboot的GraalVM版本必须是22.3 笔者这 ...
- Kubernetes(k8s)配置文件管理:ConfigMap
目录 一.系统环境 二.前言 三.ConfigMap概览 四.创建ConfigMap 五.ConfigMap的使用 5.1 以环境变量的方式使用ConfigMap 5.2 以卷的方式使用ConfigM ...