超级玛丽制作揭秘19视图

超级玛丽制作揭秘20地图切换  地图分两种,普通地图和隐藏地图(指通过水管进入的地图)。先讲普图地图的切换,再讲隐藏地图的切换。普通地图的切换:思路:很简单,用一个数字iMatch表示当前是第几关。每过一关,iMatch+1,加载下一张地图。存储: int iMatch;初始化: iMatch=0;(0表示第一关)过关检测:用一个函数不停地检测玩家是否到了地图终点,如果是,加载下一关的地图。函数:int GAMEMAP:: 阅读详情

 怎样把所有东西都显示在窗口中,并随着玩家移动呢?
思路:玩家看到的区域称为视图,即12格高,16格宽的窗口(每格32*32像素)。先把整个地图则绘制在一个DC上,然后从这个地图DC中,截取当前视图区域的图像,绘制到窗口中。修改视图区域的坐标(横坐标增加),就实现了地图的移动。

初始化:
函数:BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
代码:
// hwindow是游戏窗口的DC句柄
 hwindow=GetDC(hWnd);
 // hscreen是整个地图对应的DC
 hscreen=CreateCompatibleDC(hwindow);
 //建立一个整个地图大小(5倍窗口宽)的空位图,选入hscreen
 hmapnull=CreateCompatibleBitmap(hwindow,GAMEW*32*5,GAMEH*32);
 SelectObject(hscreen,hmapnull);

显示。
函数:WndProc
代码:
  case WM_PAINT:
   // hwindow是游戏窗口的DC句柄
   hwindow = BeginPaint(hWnd, &ps);
   SelectObject(hscreen,hmapnull);

   case GAME_IN:
    //显示天空
    bmSky.DrawRollStretch(2,2,gamemap.mapinfo.iBackBmp);
    //显示背景物品
    gamemap.ShowBkObj(bmMapBkObj);
    //显示地图物品
    gamemap.Show(bmMap);
    //显示动态元素
    gamemap.ShowAniObj(bmAniObj);
    //显示提示信息
    gamemap.ShowOther(hscreen);
    //显示玩家
    rmain.Draw();
    break; 
   
if(gamemap.iScreenScale)
   {
    //窗口大小调整功能,代码略
   }
   else
   {   
 //从整个地图的DC中, 截取当前视图区域的图像,绘制到窗口
 BitBlt(hwindow,0,0,GAMEW*32,GAMEH*32,hscreen,gamemap.viewx,0,SRCCOPY);
   }
可以看到,视图的左上角横坐标是viewx,只需要刷新这个坐标,就实现了地图移动。

视图坐标刷新:
思路:用一个函数不停地检测,玩家角色和视图左边界的距离,超过特定值,把视图向右移。
函数:void GAMEMAP::MoveView()
代码:如果玩家坐标和视图左边界的距离大于150,移动视图。
 if(rmain.xpos - viewx > 150)
 {
  viewx+=ROLE_STEP; 
  //判断视图坐标是否达到最大值(地图宽度减去一个窗口宽度)
  if(viewx>(mapinfo.viewmax-1)*GAMEW*32)
   viewx=(mapinfo.viewmax-1)*GAMEW*32;  
 }
至此,地图跟随玩家移动。每一关的地图是怎样切换的呢?且听下回分解。
附:
超级玛丽第一版源码链接:http://download.youkuaiyun.com/source/497676
超级玛丽增强版源码链接:http://download.youkuaiyun.com/source/584350

Fable5+Canvas复刻《超级玛丽》:函数式游戏开发实战指南 在Web前端开发领域,Canvas作为浏览器原生2D绘图API,是实现高性能动画和游戏渲染的核心技术。其底层原理是通过JavaScript直接操作像素,以命令式API进行逐帧绘制,为复杂交互应用提供了精细的图形控制能力。结合现代前端框架的工程化思维,这种技术组合能显著提升开发效率与代码可维护性。Fable5作为将F#编译为JavaScript的编译器,引入了函数式编程的不可变状态管理和声明式开发范式,为管理游戏逻辑这类复杂状态场景提供了清晰可靠的解决方案。这种“函数式状态管理”与“命令式绘图API”的强强联 阅读详情

相关推荐

C++与Qt实战:从零复刻经典2D游戏《超级玛丽》

面向对象编程(OOP)是构建复杂软件系统的核心范式,它通过封装、继承和多态等机制,将数据和操作数据的方法组织成对象,从而提升代码的可维护性和复用性。在游戏开发领域,这一原理尤为重要,因为游戏世界本质上是由大量交互对象构成的。C++凭借其高性能和精细的内存控制能力,成为实现复杂游戏逻辑和物理模拟的理想语言。结合Qt框架强大的跨平台GUI和多媒体模块,开发者能够高效地构建出拥有流畅图形渲染和实时交互的应用程序。这种技术组合的价值在于,它既能满足游戏对性能的苛刻要求,又能通过成熟的框架快速实现窗口管理、事件处理和

weixin_30460489的博客 336

超级玛丽地图java_超级玛丽3全关地图

这是一个《超级玛丽3》全关地图,超级玛丽3是以冒险闯关元素为主要内容的一款经典游戏,本作游戏的制作发行是由任天堂完成。游戏中马里奥兄弟为了营救出美丽的公主,他们要挑战许多的怪物,找到并击败最终的BOSS。《超级玛丽3》全关地图可以用于【超级玛丽3】游戏中,加强游戏的可玩性。欢迎有需要的玩家点击下载《超级玛丽3》全关地图哦!相关说明这款游戏是fc(family computer)上最经典,也是最后一...

weixin_33199715的博客 1562

用QT实现一个超级玛丽游戏

在QT Creator中,选择"新建项目",然后选择"Qt Widgets应用"。为项目选择一个合适的名称,并设置相关的项目选项。当然,这只是一个简单的示例,实际的超级玛丽游戏需要更多的功能和复杂的设计。超级玛丽是一款经典的游戏,现在我们将使用QT编程来实现一个简化版的超级玛丽游戏。在这个游戏中,玩家将控制一个小人物马里奥,通过跳跃和躲避障碍物来完成关卡。函数来处理按键事件,例如空格键用于让角色跳跃,左右箭头键用于控制角色的移动。,用于管理游戏中的元素,并处理按键事件。,用于表示游戏中的角色。

YOLO_CODE的博客 596

超级玛丽地图java_我的世界超级玛丽地图包

我的世界超级玛丽地图包是一款非常好玩的冒险地图,在我的世界中完全打造了超级玛丽,马里奥和公主在散步的时候,附近发生了爆炸。马里奥赶到爆炸的起源,可是当他回来时,公主已经消失。游戏背景:说起咱童年玩的游戏,超级玛丽总要占一个位置吧?可能因为不能返校在家太闲了,简单做了一个,做起来说难也不难,说不难也挺麻烦。地图看起来可能有点简陋...我实在是不会建筑...但是不影响游玩游戏玩法:简单来说就是把超级玛...

weixin_42526015的博客 316

QT实现超级玛丽(附完整源码)

QT实现超级玛丽(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 877

VB实现超级玛丽游戏开发实战

Visual Basic(VB)是一种简单易学的编程语言,由微软公司在1991年发布。它的名称中的“Basic”指的是“Beginner’s All-purpose Symbolic Instruction Code”,即“初学者通用符号指令代码”,这体现了VB的初衷——为编程初学者提供一个友好的开发环境。VB的最新版本是Visual Basic .NET,它支持面向对象编程,并且与.NET框架紧密集成。键盘事件是游戏交互中最基础也是最常用的输入方式之一。

weixin_42584507的博客 1044

超级玛丽

MARIO CODE INSIDE超级玛丽制作揭秘制作 programking  博客 http://blog.youkuaiyun.com/programking  目  录 一、       超级玛丽制作揭秘1工程开始... 2二、       超级玛丽制作揭秘2图片基类MYBITMAP. 4三、       超级玛丽制作揭秘3游戏背景 类MYBKSKY. 7四、 

lipu13314601878的专栏 3087

Android超级玛丽源码解析与游戏开发实践

/ 类的属性int year;// 类的方法// 定义绘制方法// 抽象方法Canvas是Android中用于绘制2D图像的API。它支持多种绘图操作,如绘制线条、矩形、圆形、图片、文字等。自定义绘图一般涉及到继承View类,并在onDraw方法中使用Canvas对象来进行绘图操作。例如,下面的代码展示了如何使用Canvas绘制一个简单的图形:@Override// 绘制背景色// 绘制圆形在游戏开发中,Canvas。

weixin_30978239的博客 962

超级玛丽制作揭秘21游戏数据管理

 进入每一关之前,需要对所有游戏数据初始化。进入隐藏地图,同样需要初始化。而且,从隐藏地图返回上层地图,还要保证玩家角色出现在“出水管”处。地图数据、玩家数据、视图数据,都要设置正确。所有的游戏数据,即封装在gamemap中的数据,分成如下几种:场景数据:包含当前关卡的地图,所有精灵,金币,提示信息。视图数据:视图窗口坐标。玩家数据:玩家角色的个人信息,例如金钱数量,攻击方式,游戏次数。1. 

programking的快乐生活 1375

Java Swing实现经典超级玛丽游戏完整项目(含源码+视频+文档+PPT)

在Swing中,所有可视化内容都必须添加到JFrame的内容窗格(content pane)中。虽然可以直接向JFrame添加组件,但更推荐的做法是封装一个继承自JPanel的自定义面板类,用于处理绘图与动画更新。下面是一个典型的GamePanel实现:// 设置布局为空布局,便于绝对定位// 开启双缓冲(默认开启,显式声明更安全)// 加载背景图(假设图片位于resources/images/bg.png)try {

weixin_42589700的博客 858

SMBX地图:超级马里奥一代

smbx map of smb1 super mario brothers map

超级玛丽制作揭秘27程序框架WinProc

 怎样把所有的功能组织起来,形成一个完整的游戏呢?游戏状态。不同的游戏状态下,对应不同的图片显示、逻辑处理、按键响应。这样就形成了一个结构清晰的框架。各个模块相对独立,也方便扩展。由于是消息处理机制,所有功能对应到消息处理函数WndProc,程序框架如下:消息处理函数WndProc{ 绘图消息WM_PAINT:  状态1:状态1绘图。  状态2:状态2绘图。  …… 计时消息WM_TIMER:  

programking的快乐生活 1334

基于Docker的D435i相机与IMU联合标定实战指南

本文详细介绍了基于Docker的D435i相机与IMU联合标定实战指南,涵盖kalibr镜像构建、IMU标定全流程、双目相机标定技巧及联合标定结果验证。通过Docker容器化部署,简化了复杂依赖环境,提升标定效率与精度,适用于机器人视觉与SLAM应用。

weixin_30872337的博客 239

超级玛丽制作揭秘26菜单控制 窗口缩放

 菜单控制:开始菜单只有两项:0项“开始游戏”,1项“操作说明”菜单编号用iMenu表示。初始化:函数:void GAMEMAP::Init()代码:iMenu=0;菜单显示:菜单文字显示:函数:WndProc代码:在WM_PAINT绘制消息中:   case GAME_PRE:    gamemap.viewx=0;  //设置视图坐标    bmPre.Stretch(2,2,0); 

programking的快乐生活 1276

文献阅读笔记:量子微波测量技术综述

量子微波测量技术研究进展:量子微波测量技术利用里德堡原子与微波电场的相干相互作用,突破了传统测量方法的物理限制。该技术基于电磁诱导透明效应和里德堡原子能级跃迁原理,通过激光激发原子并监测光谱变化来测量微波电场强度。相比传统方法,量子微波测量具有超高灵敏度(理论极限可达nV/cm)、宽动态范围(超过100dB)、小型化等显著优势,且测量结果可直接溯源至普朗克常数。典型实验系统包括光源、原子气室和探测器,采用光谱法、干涉法等多种测量方法。近年来,该技术在基础研究和应用方面取得重要进展,展现出在通信、雷达、计量等

Grow into a more wonderful you 988

【教程4>第4章>第15节】基于FPGA的costas环的设计构架

目录1.costas环的整体实现结构2. FPGA设计构架3.参考文献 Costas 环是一种用于载波同步的闭环反馈控制系统,主要应用于通信系统中的相干解调。其基本原理是通过鉴相器(Phase Detector,PD)比较接收信号与本地载波信号的相位差,将这个相位差信息经过环路滤波器(Loop Filter,LF)滤波后,去控制数控振荡器(Numerically Controlled Oscillator,NCO)的输出频率和相位,使得本地载波能够跟踪接收信号的载波,最终实现载波同步。我们在《F

FPGA/MATLAB学习教程/源码/项目合作开发 567

超级玛丽制作揭秘25类GAMEMAP 全局变量

 所有游戏数据都需要封装到实际的变量中。整个游戏,就是用类GAMEMAP表示的。成员函数功能列表:class GAMEMAP{public: //加载地图 int LoadMap(); //初始化所有游戏数据 void Init(); //初始化场景数据 void InitMatch(); //显示地图物品 void Show(MYANIOBJ & bmobj); //显示地图背景物品,河流,

programking的快乐生活 2067

提示libfakeroot.so或libfakeroot-sysv.so出错处理方法

嵌入式Linux、Buildroot交叉编译出现fakeroot问题处理方法。

阿xin*的嵌入式AI 1443

用jQuery和Canvas打造2D版“我的世界+超级玛丽“游戏

在游戏开发的世界里,融合不同游戏元素创造新体验一直是一种有趣的尝试。今天,我将介绍如何使用jQuery和HTML5 Canvas技术,将"我的世界"的方块世界与"超级玛丽"的平台跳跃玩法相结合,打造一个有趣的2D平台游戏。

exlink2012的专栏 1800

【WLAN】【基础知识】WIFI那些事儿之信道和频谱(涵盖2.4G、5G、6G,全网最全)

- 从事WIFI相关开发或测试工作,经常要和信道、频宽、频率等打交道,本文仅将平时涉及的2.4G、5G、6G的信道、频宽、频率等做一总结。 - 一图胜万言,本文汇总了工作中经常用到的频谱图,保证全网最全!!! - 本博客地址,https://blog.youkuaiyun.com/qxhgd,欢迎各位关注,转发请注明出处。

一介草民,只为生活。 1万+

SAP 销售订单BOM使用场景简介

通常在MTO的生产场景中,我们会根据已创建的SO去展开BOM去驱动生产,如果我们生产地产品BOM是通用性的通常我们用标准BOM的方式就可以实现,但是实际在生产过程中往往不会这样,不同的客户对某些物料的规格就不相同,就会涉及产生不同的BOM,但是该客户的产品又不存在通用性,这个时候就会引入概念就是销售订单BOM,先有销售订单然后根据销售订单+行项目创建BOM。销售BOM:根据销售订单号+行项目号创建的BOM,是根据特定的销售订单或者可以理解为特定的客户创建的BOM。

我小时候很黑的博客 4219

【QT】从零到一:用QT框架复刻经典《超级玛丽》的底层开发实战【附完整项目】

本文详细介绍了如何使用QT框架从零开始复刻经典游戏《超级玛丽》的底层开发实战。通过QT的图形视图框架和跨平台特性,开发者可以高效实现游戏场景管理、角色移动和碰撞检测等核心功能。文章还分享了资源加载优化、物理系统实现、敌人AI设计等实用技巧,并提供了完整项目结构和源码解析,帮助开发者快速掌握QT游戏开发的关键技术。

weixin_30367873的博客 452

【OpenClaw从入门到精通】:Web控制台使用全解析——可视化配置与监控(2026实操版)

在OpenClaw的多种管理方式中,Web控制台提供了最直观、最友好的用户体验。通过图形化界面,用户可以轻松完成复杂的配置任务,实时监控系统状态,以及进行各种管理操作。对于不熟悉命令行的用户来说,Web控制台是最佳选择。

一键难忘的博客 1926

Python游戏开发入门:用PyGame Zero复刻超级玛丽

游戏开发是理解计算机图形学、实时系统和交互逻辑的重要实践领域。其核心原理在于游戏循环,通过持续更新状态和渲染画面来创造动态体验。掌握游戏引擎基础,如精灵管理、碰撞检测和物理模拟,对构建各类交互应用具有普遍技术价值。在Python生态中,PyGame Zero作为轻量级框架,大幅降低了2D游戏开发门槛,特别适合快速原型设计和教育场景。本文以经典平台游戏《超级玛丽》为案例,详细演示如何运用PyGame Zero实现角色控制、物理跳跃和碰撞检测等核心机制,为初学者提供一条从概念到可玩版本的清晰路径。

weixin_33834628的博客 434

AI编程工具深度对比:Cursor、Copilot、Trae与Claude Code,2025年开发者该如何选择?

2025年AI编程工具市场已形成四大主力阵营:Cursor(AI原生IDE)、GitHub Copilot(行业标准)、Trae(中国免费方案)和Claude Code(终端交互)。核心差异体现在技术能力(代码生成准确率85%-95%)、智能体协作程度和上下文处理能力(8K-200K tokens)。用户体验方面,Trae对中文支持最佳且免费,Copilot企业集成强,Cursor平衡易用与功能,Claude Code适合高阶开发者。实际测试显示,不同工具在原型开发、算法实现等场景各有优势

fudaihb的博客 6496

TOPWAY 7寸触摸屏资料用于充电桩

TOPWAY 7寸触摸屏资料,用于国网充电桩上,主要接口为LVDS,模拟成DVI口,其中包含usb触摸屏接口

Unity学习笔记1 简易2D横版RPG游戏制作(一)

前言……     虽然整理这些东西很浪费时间,但是因为我平时研究和学习的东西实在是太多了,不经常整理的话很容易乱。而且自从上次电脑损坏之后,我一直都对数据备份这件事非常在意。稍微整理一些东西之后就会马上备份。好了,废话不多说,以后整理一段时间之后就会贴出来。等以后比较有空了,我还是开个优快云的博客吧,总觉得这些东西整理到QQ空间有点怪……不过,为了方便,就暂时用QQ吧。     接下来这几天

sinolzeng的专栏 4万+

IEC 61730-2:2023 光伏(PV)组件安全认证第2部分:测试要求 - 完整英文版(136页).rar

完整英文版 IEC 61730-2:2023 Photovoltaic (PV) module safety qualification - Part 2:Requirements for testing (光伏(PV)组件安全认证第2部分:测试要求)。IEC 61730-2:2023 列出了光伏组件安全认证所需完成的测试。本文件仅与 IEC 61730-1 一起适用于安全认证。本文件的目的是提供测试序列,旨在验证其结构已通过 IEC 61730-1 评估的光伏组件的安全性。测试顺序和通过标准旨在检测光伏模块内部和外部组件的潜在故障,这些故障可能导致火灾、电击和/或人身伤害。本文件定义了基本安全测试要求和作为光伏组件最终用途应用功能的附加测试。

上一篇: 超级玛丽制作揭秘18背景物品
下一篇: 超级玛丽制作揭秘20地图切换
programking
博客等级 码龄23年 450粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值