Python魂斗罗小游戏源代码
Python魂斗罗小游戏源代码源程序,主程序Contra.py,游戏简易使用说明:A:向左,D:向右,W:跳起,S:趴下,J:射击,P:退出程序。
程序运行截图:
Contra.py
'''
公众号:Python代码大全
'''
import pygame
import sys
from pygame.locals import *
from settings import Settings
from game_player import Game_Player
import game_functions as gf
from pygame.sprite import Group
from game_stats import GameStats
from game_boss import Game_Boss
from button import Buttondef run_game():bg = pygame.image.load("图片/map01.jpeg")game_settings = Settings()pos_x = 0#地图移动pygame.init()screen = pygame.display.set_mode((game_settings.screen_width,game_settings.screen_height))pygame.display.set_caption("魂斗罗BY Python代码大全")stats = GameStats(game_settings)player = Game_Player(game_settings,screen)bullets = Group()boss = Group()enemys = Group()win_button = Button(game_settings,screen,"YOU WIN")gf.create_legion(game_settings,screen,enemys)gf.create_boss(game_settings,screen,player,boss)while True:pygame.mouse.set_visible(False)gf.check_events(game_settings,screen,player,bullets)gf.update_player(game_settings,stats,player,enemys)gf.update_bullet(game_settings,bullets,screen,enemys,boss) gf.update_enemys(game_settings,enemys) gf.update_boss(game_settings,boss)gf.update_screen(game_settings,bg,pos_x,screen,player,bullets,enemys,boss,win_button)if player.moving_right and player.center > player.screen_rect.centerx and game_settings.boss_appear == False:game_settings.screen_rolling = Truepos_x -= 5#屏幕滚动速度else:game_settings.screen_rolling = False
run_game()
game_funtcions.py
import sys
import pygame
from bullet import Bullet
from enemy import Enemy
from game_boss import Game_Bossdef check_keydown_events(event,game_settings,screen,player,bullets):if event.key == pygame.K_k:#跳跃player.player_jump = Trueif event.key == pygame.K_d:#向右game_settings.bullet_direction = 'right' if player.player_down or player.player_up:player.moving_right = Falseelse:player.moving_right = Trueplayer.player_direction = 1 if event.key == pygame.K_a:#向左game_settings.bullet_direction = 'left'if player.player_down or player.player_up:player.moving_left = Falseelse:player.moving_left = Trueplayer.player_direction = -1elif event.key == pygame.K_s:#向下player.player_down = Trueplayer.player_moving = Falseplayer.moving_left = Falseplayer.moving_right = Falseelif event.key == pygame.K_w:#向上player.player_up = Trueplayer.player_moving = Falseplayer.moving_left = Falseplayer.moving_right = Falseelif event.key == pygame.K_j:#射击new_bullet = Bullet(game_settings,screen,player)bullets.add(new_bullet)player.player_shooting = Trueelif event.key == pygame.K_p:sys.exit()def check_keyup_events(event,player):if event.key == pygame.K_d:#右player.image = pygame.image.load('图片/PR/player.png')player.moving_right = Falseplayer.player_moving = Falseelif event.key == pygame.K_a:#左player.image = pygame.image.load('图片/PL/player.png')player.player_moving = Falseplayer.moving_left = Falseelif event.key == pygame.K_s:#下player.player_down = Falseif player.player_direction == 1:player.image = pygame.image.load('图片/PR/player.png')if player.player_direction == -1:player.image = pygame.image.load('图片/PL/player.png')elif event.key == pygame.K_w:#上player.player_up = Falseif player.player_direction == 1:player.image = pygame.image.load('图片/PR/player.png')if player.player_direction == -1:player.image = pygame.image.load('图片/PL/player.png')def check_events(game_settings,screen,player,bullets):for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:player.player_moving = Truecheck_keydown_events(event,game_settings,screen,player,bullets) elif event.type == pygame.KEYUP:check_keyup_events(event,player)def update_screen(game_settings,bg,pos_x,screen,player,bullets,enemys,boss,win_button):screen.blit(bg,(pos_x,0))for bullet in bullets.sprites():bullet.blit_bullet()"""if game_settings.boom_end:#击中敌人爆炸enemys.empty()game_settings.boom_end = False"""player.blitme()if game_settings.boss_appear:boss.draw(screen)enemys.draw(screen)if game_settings.game_win:win_button.draw_button()pygame.display.flip()def update_bullet(game_settings,bullets,screen,enemys,boss):bullets.update()for bullet in bullets.copy():if bullet.rect.centerx<0 or bullet.rect.centery<0 or bullet.rect.centerx > game_settings.screen_width:bullets.remove(bullet)check_bullet_enemy_collisions(game_settings,bullets,screen,enemys)check_bullet_boss_collisions(game_settings,bullets,boss)def check_bullet_enemy_collisions(game_settings,bullets,screen,enemys):if game_settings.enemy_is_alive:collisions = pygame.sprite.groupcollide(bullets,enemys,True,False)else:collisions = pygame.sprite.groupcollide(bullets,enemys,True,True)if collisions != {}:game_settings.enemy_is_alive = Falseif len(enemys) == 0:create_legion(game_settings,screen,enemys)def check_bullet_boss_collisions(game_settings,bullets,boss):if game_settings.boss_alive:collisions = pygame.sprite.groupcollide(boss,bullets,False,True)else:collisions = pygame.sprite.groupcollide(boss,bullets,True,True)if collisions != {}:game_settings.boss_lift -= 1if game_settings.boss_lift == 0:game_settings.boss_alive = Falsedef create_legion(game_settings,screen,enemys):for enemy_number in range(1):game_settings.enemy_is_alive = Trueenemy = Enemy(game_settings,screen)enemys.add(enemy)def update_enemys(game_settings,enemys):if game_settings.boss_appear == False:#判断boss是否出现,出现则不出现小兵enemys.update()for enemy in enemys.copy():if enemy.rect.centerx<0:enemys.remove(enemy)if game_settings.boom_end:#击中敌人爆炸enemys.remove(enemy)game_settings.boom_end = Falsegame_settings.boss_appear = Truedef update_player(game_settings,stats,player,enemys):player.update()if pygame.sprite.spritecollideany(player,enemys):player_hit(game_settings,stats,player)if game_settings.player_die_end == True:player.revive_player()game_settings.player_die_end = Falsedef player_hit(game_settings,stats,player):stats.players_left -= 1game_settings.player_is_alive = Falsedef update_boss(game_settings,boss):if game_settings.boss_appear:boss.update()if game_settings.boss_boom_end:boss.empty()def create_boss(game_settings,screen,player,boss):bo = Game_Boss(game_settings,screen,player)boss.add(bo)
完整程序包下载地址:
https://pan.baidu.com/s/1_B4fZJkgNb0XCDwRlR1WOQ,提取码请在“Python代码大全”公众号回复:魂斗罗提取码。获取更多Python源代码请微信关注:Python代码大全,
Python魂斗罗小游戏源代码相关推荐
- 【Python游戏】Python基于第三方库pygame实现一个魂斗罗小游戏,毕业设计必备 | 附源码
前言 halo,包子们下午好 今天给打击整一个魂斗罗小游戏 很多小伙伴接触魂斗罗应该是在小时候的一个手柄游戏上面吧 我记得作为90后的我,玩这一款游戏是在小学的时候 废话不多说,直接上才艺 今天给大家 ...
- Python版见缝插针小游戏源代码,球球旋转大作战源程序
见缝插针游戏是一款非常考验玩家手眼协调能力的休闲益智虐心虐脑小游戏,玩法很简单,但要过关却很有挑战性哟! 主要是将一系列的小球,插入到旋转的摩天轮转盘当中,插入过程中不能碰到旋转的摩天轮上的其他小球, ...
- Python打砖块小游戏源代码
这次用Python实现的是一个接球打砖块的小游戏,最核心的就是:碰撞检测的数学模型 程序运行截图 其实,编程问题到最后就是数学问题,这个游戏涉及到2D圆形与矩形的碰撞检测问题: 碰撞检测原理:通过找出 ...
- python推箱子小游戏源代码_Python制作推箱子小游戏
开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 游戏简介 ...
- python打字游戏增加开始页面_Python实践项目大全之Python打字练习小游戏源代码
from tkinter import *import randomimport stringfrom datetime import datetimeroot = Tk()root.title(&q ...
- python双手打字_Python打字练习小游戏源代码
Python打字练习小游戏源代码 Python代码狂人 Python代码大全 Python打字练习小游戏源程序,随机产生一串字符,可对打字练习的正确率和时间进行统计,运行截图如下: from tkin ...
- Python地雷战小游戏源代码
Python版地道战小游戏源代码,游戏中寻找所需要的五种合成地雷的原材料,并躲避敌人的抓捕,雷可以炸死敌方.程序运行截图: 主要程序代码: tunnel_war_game.py import pyga ...
- Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk
Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk 程序依赖:pygame2.0.1, pymunk5.5.0 直接运行main.py 完整代码下载地址:Python版经典小游戏 ...
- Python我的世界小游戏源代码
我的世界小游戏使用方法: 移动 前进:W,后退:S,向左:A,向右:D,环顾四周:鼠标,跳起:空格键,切换飞行模式:Tab; 选择建筑材料 砖:1,草:2,沙子:3,删除建筑:鼠标左键单击,创建建筑块 ...
最新文章
- 嵌入式linux入门-常用命令介绍
- 缓存穿透、缓存雪崩、redis并发
- android toolbar源码解析,深入理解Android 5.0中的Toolbar
- spark-sql createOrReplaceTempView 和createGlobalTempView区别
- 数理统计的统计量分布t分布_t分布:啤酒厂发现的关键统计概念
- 牛客网 [编程题]餐馆
- redis深度历险 pdf_程序员面试必备精选文档:Redis+Ng+Tomcat+并发编程+Spring系列
- 使用trilium搭建专属知识库
- jave se基础复习2
- linux mint xmind运行,linux安装Xmind的经验
- MySQL数据库的主键和外键详解
- 【从零写javaweb框架】(零)前言
- 腾讯看点App正式下线
- 计算机安全模式win7,win7安全模式下怎么恢复系统
- 计算投资指数基金的预期收益率
- panda经典四道题期末考核分享
- vmware ubuntu 虚拟机扩充硬盘容量及合并分区
- 【研发问题系列】e1000网卡异常
- is not accessible from java.lang.Class XXX
- PdfReader 2:this.readPdf() -4 PdfName
热门文章
- OSChina 周三乱弹 —— 你们胆子真大
- thymeleaf 整合 pjax 无刷新跳转
- js逆向第1例:淘宝逛逛H5页面SIGN加密算法
- 无形胜有形——0day破解组织探秘 http://blog.csdn.net/jiangtao/archive/2002/11/30/1868.aspx
- 新年愿望清单列好了吗?如何在桌面上添加便签计划清单
- 迅为3A5000_7A2000工控主板,龙芯自主指令集架构全国产工业级板卡性能
- FIO 磁盘性能测试
- java dateformat类_java基础之DateFormat类
- 微信小程序-微信小程序登录流程(一)
- 阿狸V任务页面爬取数据解析