超级玛丽制作揭秘24角色动画

今天咱们用Python整一个超级玛丽游戏 | 附带源码 相关文件 想学Python的小伙伴可以关注小编的公众号【Python日志】 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 需要源码的小伙伴可以在公众号回复超级玛丽 Python源码、问题解答学习交流群:773162165 开发环境 Python版本:3.7.8 相关模块: requests模块; tqdm模块; pyfreeproxy模块; pyecharts模块; 以及一些python自带的模块。 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可。 效果 阅读详情

 玩家在进出水管的时候,需要进入水管、从水管中升起两个动画。当动画播放结束后,切换到新的地图。
动画播放过程中,禁止键盘响应,即玩家不能控制移动。

1. 玩家进水管。
地图物品中,水管分两个,进水管(玩家进入地图)和出水管(从别的地图返回)。两种水管对应不同的图片ID:
#define ID_MAP_PUMP_IN 9
#define ID_MAP_PUMP_OUT 10
玩家进入水管的检测:
函数:int GAMEMAP::KeyProc(int iKey)
代码:检测玩家按“下”,如果玩家站在进水管上,开始播放动画
  case VK_DOWN:
   for(i=0;i<iMapObjNum;i++)
   {
    if( LINE_IN_LINE(玩家坐标的下边界,地图物品的上边界))
    {    
     //判断是否站在进水管上
     if(MapArray[i].id == ID_MAP_PUMP_IN)
     {
      //如果站在设置角色动画方式,向下移动
      rmain.SetAni(ROLE_ANI_DOWN);
      iGameState=GAME_PUMP_IN;//设置游戏状态:进水管
      c1.ReStart(TIME_GAME_PUMP_WAIT);//计时2秒
     }
    }
   }
   break;
动画设置函数:void MYROLE::SetAni(int istyle)
代码:
 iAniStyle=istyle; //设置动画方式
 iparam1=0; //参数初始化为0
 iAniBegin=1; //表示动画开始播放
说明: iparam1是动画播放中的一个参数, 根据动画方式不同,可以有不同的含义.

2. 动画播放
玩家角色显示函数:void MYROLE::Draw()
代码:
//判断是否播放动画,即iAniBegin为1
 if(iAniBegin)
 {
  PlayAni(); //播放当前动画
 }
动画播放函数:void MYROLE::PlayAni()
代码:根据不同的动画方式,播放动画
 switch(iAniStyle)
 {
 case ROLE_ANI_DOWN:
  //玩家进入水管的动画,iparam1表示下降的距离
  if(iparam1>31)
  {
   //下降距离超过31(即图片高度),玩家完全进入水管,无需图片显示
   break;   
  }
  //玩家没有完全进入水管,截取图片上半部分,显示到当前的坐标处
  SelectObject(hdcsrc,hBm);
  BitBlt(hdcdest,
   xpos,ypos+iparam1,
   width,height/2-iparam1,
   hdcsrc,
   iFrame*width,height/2,SRCAND);  
  BitBlt(hdcdest,
   xpos,ypos+iparam1,
   width,height/2-iparam1,
   hdcsrc,
   iFrame*width,0,SRCPAINT); 
  //增加下降高度
  iparam1++;  
  break;
 
3. 玩家进入水管后,切换地图
函数:WndProc
代码:在时间片的处理中,当GAME_PUMP_IN状态结束,切换地图,并设置玩家动画:从水管中上升。
   case GAME_PUMP_IN:
    if(c1.DecCount())
    {
     gamemap.ChangeMap();//切换地图
     gamemap.SetGameState(GAME_IN); //设置游戏状态
     c1.ReStart(TIME_GAME_IN);  //计时300秒
     rmain.SetAni(ROLE_ANI_UP);  //设置动画,图片上升
    }
    InvalidateRect(hWnd,NULL,false);
    break;
4. 从水管中上升
动画播放函数:void MYROLE::PlayAni()
代码:根据不同的动画方式,播放动画
 switch(iAniStyle)
 {
 case ROLE_ANI_UP:
  if(iparam1>31)
  {
   //如果上升距离超过31(图片高度),动画结束
   break;   
  }
  //人物上升动画,截取图片上部,显示到当前坐标
  SelectObject(hdcsrc,hBm);
  BitBlt(hdcdest,
   xpos,ypos+32-iparam1,
   width,iparam1,
   hdcsrc,
   iFrame*width,height/2,SRCAND);  
  BitBlt(hdcdest,
   xpos,ypos+32-iparam1,
   width,iparam1,
   hdcsrc,
   iFrame*width,0,SRCPAINT); 
  //增加上升距离
  iparam1++;
//如果上升距离超过31(图片高度)
  if(iparam1>31)
  {
   iAniBegin=0; //动画结束,清除动画播放状态
  }
至此,两个动画方式都实现了。但是,如果在动画播放过程中,玩家按左右键,移动,就会出现,角色一边上升,一边行走,甚至跳跃。怎样解决?如果播放动画,屏蔽键盘响应。
按键响应函数:int GAMEMAP::KeyProc(int iKey)
代码:
 case GAME_IN:
  //如果人物正在播放动画,拒绝键盘响应
  if(rmain.IsInAni())
  {
   break;
  }
这样,在播放过程中,不受玩家按键影响。玩家所有功能全部实现,接下来看一下整个游戏逻辑,且听下回分解。
附:
超级玛丽第一版源码链接:http://download.youkuaiyun.com/source/497676
超级玛丽增强版源码链接:http://download.youkuaiyun.com/source/584350

C#控制台面向对象实现超级玛丽带部分注释完整源码 面向对象学得好,需求再难都不怕~~ 程序中有多个类都能通用(图片处理类、绘画类、游戏物体类、游戏物体管理类) 非常适合C#初学者学习提高; 话不多说,响鼓不用重锤O(∩_∩)O哈哈~ 有问题欢迎私信、留言讨论~~ 1.图片处理类 //图片类 class CBmp { int m_w; //图片宽 int m_h; //图片高 int[] m_index; //图片数据 ConsoleColor[] m_BackC 阅读详情

相关推荐

【C#、C++ 和 Java】实现超级马里奥(Super Mario Bros)

超级马里奥是一款复杂度很高的实时二维平台游戏。实现它能极大地锻炼对实时物理模拟、复杂碰撞检测与响应、游戏状态机和资源管理的掌握。核心挑战在于构建一个稳定可靠的物理和碰撞系统,并将其与玩家输入、敌人的 AI 等系统有效集成。虽然从头实现一个完整的马里奥游戏是巨大的工程,但理解其基本原理(瓦片地图、玩家状态、物理更新、AABB 碰撞)是进入游戏开发领域的关键一步。对于此类复杂游戏,强烈推荐使用游戏引擎来简化开发流程。

走向CTO的路上... 1029

[Python] 制作超级玛丽游戏

python制作超级玛丽游戏 这篇文章,我们优先介绍超级玛丽游戏中的多状态跳跃,和行走地图拖动的原理,然后实现。并实现倒计时和金币动态效果

码来的小朋友的博客 1万+

经典游戏超级玛丽图片音效素材完整资源包

超级玛丽作为经典平台跳跃游戏的代表,其图像与音效资源构成了整个游戏体验的核心基础。本章将从整体视角出发,系统梳理《超级玛丽》游戏中所包含的主要资源类型,包括角色、场景、动画帧、音效等关键元素,并阐述这些资源在现代游戏开发中的复用价值与技术意义。通过对原始素材包【超级玛丽的图片及音效素材.rar】的内容解析,明确后续章节中理论分析与实践操作的技术路线。同时介绍资源版权的基本注意事项,强调合法使用与学习研究之间的边界,为基于C++的游戏开发项目奠定清晰的设计起点。uint8_t id;// 图块ID。

weixin_35815766的博客 940

超级玛丽

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

lipu13314601878的专栏 3087

MATLAB实现的可运行超级玛丽小游戏,含完整源码、关卡数据、音效与操作指引

直接在MATLAB 2020b环境下运行的超级玛丽风格游戏,主程序main.m一键启动,无需编译或额外工具箱。内置三个预设关卡(保存在mario_stages.mat中),角色动作、场景元素和碰撞逻辑全部用基础MATLAB语法实现,支持键盘控制跳跃、移动和暂停。配套音效资源(mario_music.mat)和图形素材(MarioData.mat)已打包整合,还提供Super Mario Bros. Demo.mlappinstall应用安装文件,方便GUI界面快速部署。附带两份说明文档:使用说明文档.md详

sky77的博客 243

Flash as3.0制作的超级玛丽游戏源码。

FLASH超级玛丽游戏源码 很好的效果 基本功能都实现了

flash源码,超级漂亮的

flash源码,超级漂亮的拿出来和大家分享一下啊

JavaScript基础--超级玛丽(七)(上下左右控制)

相信大家都玩过超级玛丽,下面实现控制玛丽的上、下、左、右等基本功能,本篇只是在练习JavaScript的用法 1、创建一个HTML页面 1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta nam...

weixin_30549657的博客 216

超级玛丽游戏源码Flash版.rar

超级玛丽游戏源码Flash版,小时候喜欢玩的游戏,Flash版的可以放在网页上就能玩了,操作方便。对于想研究源代码的Flash开发者,本游戏是学习ActionScript脚本很不错的参考实例。

flash 马里奥

Flash 马里奥 源码 闯关 可编辑 好玩的

利用python制作小游戏,如何用python制作游戏

生机勃勃的农场孕育了漂亮的二叉分形树。可爱的金币天使朗诵起了秋天的诗句还玩着用Python的海龟画图模块制作的3D物理互碰弹球。秋日的私语可不能告诉别人,那就是,我要送你一束火红的鲜花。《Python创意编程100例turtle篇》是李兴球原创的用turtle模块编制作精选作品集合。在这个集合里包括了历史、天文、国学、游戏、音乐艺术、课件、数学几何、编程技巧、绘画艺术甚至相声与诗词等。大家好,小编来为大家解答以下问题,如何用python制作游戏,利用python制作小游戏,今天让我们一起来看看吧!

chatgpt001的博客 476

超级玛丽flash源文件 fla 格式

超级玛丽flash源文件 fla 格式

跨端实现经典:Flutter × OpenHarmony 超级玛丽游戏系统的数据结构与 UI 解析

本文介绍了使用Flutter和OpenHarmony构建跨平台超级玛丽游戏系统的开发实践。通过分析游戏介绍页面和排行榜UI的核心代码,展示了Flutter组件化开发的优势,包括灵活布局、性能优化和跨端一致性。文章重点解析了排行榜列表项的数据结构设计和UI实现方法,采用嵌套Row布局和圆形标记等视觉元素。开发者可以基于此框架扩展游戏逻辑、关卡管理和动画效果,实现完整的跨端游戏体验。该方案有效解决了多终端适配问题,降低了维护成本,为跨平台游戏开发提供了参考范例。

2601_95114550的博客 986

flash游戏:超级玛丽的源代码.rar

flash 游戏,超级玛丽源代码 送给需要的朋友 可以研究下

flash游戏超级玛丽的源代码

flash游戏 超级玛丽的源代码 这个我想大家都很想要吧,今天就传上来给大家

Python Pygame实战:从零开发超级玛丽游戏,掌握游戏循环与碰撞检测

游戏开发是理解编程逻辑和系统设计的绝佳实践领域。其核心原理在于游戏主循环,它持续处理用户输入、更新游戏状态并渲染画面,构成了所有实时交互应用的基础。在技术层面,面向对象编程思想将游戏角色、场景元素抽象为可复用的精灵类,而碰撞检测算法则是实现物体交互的关键。这些技术共同创造了流畅的游戏体验,广泛应用于2D平台游戏、模拟仿真及交互式应用开发。本文以经典游戏超级玛丽为案例,详细拆解了如何使用Python的Pygame库,从环境搭建、精灵系统设计到物理手感调优,一步步实现一个完整的可玩版本,其中对事件处理和矩形碰撞

weixin_30268071的博客 420

【VisualStdio】手把手教你做一个上位机(1)控件设计布局

网上有很多形形色色的制作上位机教程,有些写的挺好的,但是过于单调。

m0_73409202的博客 5435

126套Unity3D视频教程全集(包含入门、编程、特效、UI、动画、实战等等)

126套Unity3D视频教程全集(包含入门、编程、特效、UI、动画、实战等等) 全集下载地址 http://urllink.cc/?v=c4ca1ryw [000001]《Unity ARPG网络游戏编程实践系列视频教程(游戏蛮牛第三季)》[25课时] [000002]《Unity CS之战局域网射击游戏视频教程》[28课时] [000003]《Unity Dota游戏英雄联盟制作视频教程》

cmzyr的博客 8181

手把手教你用RK3568开发板实现FPGA与Linux的DMA通信(含完整代码解析)

本文详细介绍了如何在RK3568开发板上实现FPGA与Linux系统的DMA通信,包括硬件配置、软件环境搭建、DMA通信原理、驱动开发及性能优化。通过完整的代码解析和实战案例,帮助开发者快速掌握异构系统间的高效数据传输技术,适用于物联网和边缘计算等场景。

weixin_29174385的博客 201

英飞凌IGBT驱动芯片2ED020I12F2去饱和电路设计总结整理收集

记录下英飞凌IGBT驱动芯片限流电阻阻值设计

nizhenyuchina的博客 5995
上一篇: 超级玛丽制作揭秘23玩家动作控制
下一篇: 超级玛丽制作揭秘25类GAMEMAP 全局变量
programking
博客等级 码龄23年 450粉丝 140原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值