今天分享一个经典小游戏魂斗罗的 Python 版实现。部分代码实现如下:

class Game_Player():def __init__(self,game_settings,screen):self.screen = screenself.game_settings = game_settingsself.image = pygame.image.load('images/PR/player.png')self.rect = self.image.get_rect()self.screen_rect = self.screen.get_rect()self.screen_center_pos = self.screen_rect.centerxself.rect.centerx = self.screen_rect.centerxself.rect.bottom = 380self.center = float(self.rect.centerx)self.moving_right = Falseself.moving_left = Falseself.player_moving = Falseself.pos_i = 0.0#跑步画面改变速度self.pos_j = 0.0#跳跃的改变初始速度self.pos_n = 0.0#射击self.pos_d = 0.0self.player_direction = 1#1为右,-1为左self.player_down = Falseself.player_up = Falseself.player_jump = Falseself.player_start_Y = 380#开始人物的高度self.player_Y = self.player_start_Yself.player_shooting = Falsedef update(self):if self.game_settings.player_is_alive:if self.moving_right and self.rect.right < self.screen_rect.right:if self.game_settings.boss_appear:self.center += self.game_settings.player_speedelif self.center > self.screen_center_pos:self.center += 0else:self.center += self.game_settings.player_speedif self.moving_left and self.rect.left > 0:self.center -= self.game_settings.player_speedself.rect.centerx = self.centerself.update_image_moving()else:self.update_die()def update_die(self):self.names = locals()self.players = []for self.i in range(1,3):self.names['player_image%s' %self.i] = pygame.image.load('images/PR/death%s.png' %self.i)self.players.append(self.names['player_image%s' %self.i])self.image = self.players[int(self.pos_d)]self.pos_d += 0.1if self.pos_d > 2.0:self.pos_d = 0.0self.game_settings.player_die_end = Truedef update_image_moving_direction(self,direction):#循环图片if self.player_shooting == True:self.names = locals()self.players = []for self.i in range(1,4):self.names['player_image%s' %self.i] = pygame.image.load('images/'+direction+'/shooting%s.png' %self.i)self.players.append(self.names['player_image%s' %self.i])self.image = self.players[int(self.pos_n)]self.pos_n += 0.1#射击时跑步速率if self.pos_n > 3.0:#射击时跑步有3个动作self.pos_n = 0.0else:self.names = locals()self.players = []for self.i in range(1,6):self.names['player_image%s' %self.i] = pygame.image.load('images/'+direction+'/player%s.png' %self.i)self.players.append(self.names['player_image%s' %self.i])self.image = self.players[int(self.pos_i)]self.pos_i += 0.1#跑步速率if self.pos_i > 5.0:#跑步有5个动作self.pos_i = 0.0def update_image_jump(self,direction):#循环图片if self.game_settings.player_is_alive:if self.player_jump == True:self.names1 = locals()self.players1 = []for self.j in range(1,5):self.names1['player_image%s' %self.j] = pygame.image.load('images/'+direction+'/jump%s.png' %self.j)self.players1.append(self.names1['player_image%s' %self.j])self.image = self.players1[int(self.pos_j)]self.pos_j += 0.3#跳跃旋转速率if self.pos_j > 4.0:#跳跃有4个动作self.pos_j = 0.0else:self.update_die()def update_image_moving(self):if self.player_moving:if self.moving_right:self.update_image_moving_direction('PR')#PR是向右的图片elif self.moving_left:self.update_image_moving_direction('PL')def get_player_state(self,player_state):#检测player的状态是否为趴下,向上,跳跃等if self.player_direction == 1:self.image = pygame.image.load('images/PR/'+player_state+'.png')if self.player_direction == -1:self.image = pygame.image.load('images/PL/'+player_state+'.png')self.rect = self.image.get_rect()self.rect.centerx = self.centerdef get_player_down(self):self.get_player_state('down')self.rect.bottom = self.player_start_Yself.screen.blit(self.image,self.rect)def get_player_up(self):self.get_player_state('up')self.rect.bottom = self.player_start_Yself.screen.blit(self.image,self.rect)def get_player_jump(self):self.get_player_state('jump1')self.rect.bottom = self.player_Yif self.game_settings.jump_vel < 0:self.game_settings.jump_vel += 0.6#跳跃上升的增加的速率elif self.game_settings.jump_vel > 0:self.game_settings.jump_vel += 0.8#跳跃下降增加的速率self.player_Y += self.game_settings.jump_velif self.player_Y > self.player_start_Y:self.player_jump = Falseself.player_Y = self.player_start_Yself.game_settings.jump_vel = -14.0#恢复跳跃开始的速度if self.player_direction == 1:self.image = pygame.image.load('images/PR/player.png')self.reset_player()if self.player_direction == -1:self.image = pygame.image.load('images/PL/player.png')self.reset_player()if self.player_jump == True:#判断是否处于跳跃状态来决定是否旋转跳跃的图像if self.player_direction == 1:self.update_image_jump('PR')if self.player_direction == -1:self.update_image_jump('PL')self.screen.blit(self.image,self.rect)def reset_player(self):self.rect = self.image.get_rect()self.rect.centerx = self.centerself.rect.bottom = self.player_start_Yself.screen.blit(self.image,self.rect)def blitme(self):if self.player_jump:self.get_player_jump()elif self.player_down:self.get_player_down()elif self.player_up:self.get_player_up()else:self.reset_player()def revive_player(self):self.center = self.screen_rect.centerxself.game_settings.player_is_alive = True

实现效果如下:

魂斗罗

操作说明:

  • A:向左

  • D:向右

  • W:跳起

  • S:趴下

  • J:射击

  • P:退出程序

目前游戏还是比较初级的版本,有兴趣的小伙伴可以自行修改完善。

小游戏源码在下方公号后台回复py小游戏获取~

用Python写个魂斗罗,另附30个Python小游戏源码相关推荐

  1. 学生学python编程---实现贪吃蛇小游戏+源码

    学生学python编程---实现贪吃蛇小游戏+源码 前言 主要设计 1.蛇的表示 2.蛇怎么移动? 3.玩家控制小蛇移动功能的实现 4.如何判定游戏结束? 应用知识点 1.python知识点 1.1 ...

  2. 5个Python小游戏+源码,本来要帮我侄孙戒手游瘾的,结果我和他玩疯了

    我这个人本来是不喜欢玩游戏的,但最近我哥有点事情就把他孙子放在我家让我们帮忙带,我这个小侄孙就特别爱玩游戏,六七岁出头,天天盯着个王者荣耀,真是让人头疼. 然后我就想了个办法,就用Python改了消消 ...

  3. 用python写一个魂斗罗

    嗨!多一嘴: 童年玩过的经典游戏中,魂斗罗当属经典啊,最近用python写出来,赶一波回忆杀哈哈哈哈哈哈哈~ tips: 600多行代码,耐心耐心耐心!( 偷看*-||| 1.代码实现 (1)子弹类( ...

  4. Python快速编程入门#学习笔记02# |第十章 :Python计算生态与常用库(附.小猴子接香蕉、双人乒乓球小游戏源码)

    全文目录 学习目标 1. Python计算生态概述 1.1 Python计算生态概述 2. Python生态库的构建与发布 2.1 模块的构建与使用 * 2.1.1第三方库/模块导入的格式 2.2 包 ...

  5. 福利来啦,送给大家利用Python做出的一个小游戏源码,不要错过哟

    从小到大玩过很多的游戏,在我小时候,能玩游戏的地方不多,那时玩游戏都是偷摸玩的,只要是个游戏就觉得非常有趣,比较经典的有魂斗罗,拳皇,超级玛丽,贪吃蛇,俄罗斯方块等游戏:发展到现在,玩游戏已经成为生活 ...

  6. python小游戏源码-Python小游戏之300行代码实现俄罗斯方块

    Python小游戏之300行代码实现俄罗斯方块 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: Python小游戏之300行代码实现俄罗斯方块.txt ] (友情提示:右键点上 ...

  7. python小游戏源码-导弹发射小游戏——Python源代码

    导弹发射小游戏 # 导弹发射小游戏完整源代码 # Designed by Mcoblack 公众号pythonwanyuxue import turtle import random # 设置屏幕画布 ...

  8. java整蛊小游戏源码_Java 开发打飞机小游戏(附完整源码)

    上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐.代码 ...

  9. python射击小游戏源码_导弹发射小游戏——Python源代码

    导弹发射小游戏 # 导弹发射小游戏完整源代码 # Designed by Mcoblack 公众号pythonwanyuxue import turtle import random # 设置屏幕画布 ...

  10. python剪刀石头布小游戏源码下载_Python Tkinter实现剪刀石头布小游戏

    Python Tkinter实现剪刀石头布小游戏 发布时间:2020-10-26 14:56:52 来源:亿速云 阅读:67 作者:Leah 本篇文章给大家分享的是有关Python Tkinter实现 ...

最新文章

  1. HTML5 canvas drawImage() 方法记录
  2. oracle:小知识点
  3. 064_html音频
  4. 柯南君:看大数据时代下的IT架构(4)消息队列之RabbitMQ--案例(Helloword起航)...
  5. 前6个最常用的Redis库
  6. vscode私钥设置_VSCode远程开发配置指南
  7. Knative 健康检查机制分析
  8. html div数据替换,在contenteditable div中替换innerHTML
  9. 使用.NET Core 3.1构建Windows Worker服务以删除文件夹中的旧文件
  10. Elegant Gnome Pack - 桌面环境
  11. PHP搭建服务器的代码
  12. 前端构建工具与应用程序测试
  13. 阿里巴巴Android开发手册V1.0.0随手笔记
  14. idea 项目启动报错:Missing artifact com.oracle:ojdbc7:jar:12.1.0.1的处理方式
  15. 科学计算机怎么算别人生日,秒算任意一天是星期几的人是怎么做到的?方法居然这么简单...
  16. 纽迪瑞科技入选快公司FastCompany最具创新力榜单:科技与制造TOP30
  17. pytorch骚操作之梯度累加,变相增大batch size
  18. RNN实现股票预测实战案例
  19. 肖特基二极管在防止电源反接的作用
  20. Git分布式版本控制遇到的问题如何把本地的项目上传到码市上

热门文章

  1. IOS开发笔记_5.线程,HTTP请求,定时器
  2. 循环神经网络(RNN) LSTM与GRU
  3. TensorFlow中的compile和fit操作,简化神经网络模型代码
  4. qt自定义QtWidgets
  5. python类的本质和跨文件全局变量(秒杀单例模式)
  6. Linux社区代码风格
  7. 无锁、偏向锁、轻量级锁、重量级锁,完整的锁升级!
  8. vs2010mfc单文档中添加对话框中的控件
  9. 传输预编码matlab,无线通信-预编码-MATLAB代码合集-毕设专用.zip
  10. Microsoft Visual Studio--- 未能加载文件 %CommonDir%\dte90a.olb。未能找到该文件,因此解决此问题的尝试,请重新安装此程序。