Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk
Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk
程序依赖:pygame2.0.1, pymunk5.5.0
直接运行main.py
完整代码下载地址:Python版经典小游戏愤怒的小鸟源代码
tool.py
__author__ = 'marble_xu'import os
import json
from abc import abstractmethod
import pygame as pg
from . import constants as cclass State():def __init__(self):self.start_time = 0.0self.current_time = 0.0self.done = Falseself.next = Noneself.persist = {}@abstractmethoddef startup(self, current_time, persist):'''abstract method'''def cleanup(self):self.done = Falsereturn self.persist@abstractmethoddef update(sefl, surface, keys, current_time):'''abstract method'''class Control():def __init__(self):self.screen = pg.display.get_surface()self.done = Falseself.clock = pg.time.Clock()self.fps = 60self.keys = pg.key.get_pressed()self.mouse_pos = Noneself.mouse_pressed = Falseself.current_time = 0.0self.state_dict = {}self.state_name = Noneself.state = Noneself.game_info = {c.CURRENT_TIME:0.0,c.LEVEL_NUM:c.START_LEVEL_NUM,c.SCORE:0}def setup_states(self, state_dict, start_state):self.state_dict = state_dictself.state_name = start_stateself.state = self.state_dict[self.state_name]self.state.startup(self.current_time, self.game_info)def update(self):self.current_time = pg.time.get_ticks()if self.state.done:self.flip_state()self.state.update(self.screen, self.current_time, self.mouse_pos, self.mouse_pressed)self.mouse_pos = Nonedef flip_state(self):previous, self.state_name = self.state_name, self.state.nextpersist = self.state.cleanup()self.state = self.state_dict[self.state_name]self.state.startup(self.current_time, persist)def event_loop(self):for event in pg.event.get():if event.type == pg.QUIT:self.done = Trueelif event.type == pg.KEYDOWN:self.keys = pg.key.get_pressed()elif event.type == pg.KEYUP:self.keys = pg.key.get_pressed()elif event.type == pg.MOUSEBUTTONDOWN and event.button == 1:self.mouse_pos = pg.mouse.get_pos()self.mouse_pressed = Trueelif event.type == pg.MOUSEBUTTONUP and event.button == 1:self.mouse_pressed = Falsedef main(self):while not self.done:self.event_loop()self.update()pg.display.update()self.clock.tick(self.fps)if c.DEBUG:pg.display.set_caption("pos: " + str(pg.mouse.get_pos()))print('game over')def distance(xo, yo, x, y):"""distance between points"""dx = x - xody = y - yod = ((dx ** 2) + (dy ** 2)) ** 0.5return ddef get_image(sheet, x, y, width, height, colorkey, scale):image = pg.Surface([width, height])rect = image.get_rect()image.blit(sheet, (0, 0), (x, y, width, height))image.set_colorkey(colorkey)image = pg.transform.scale(image,(int(rect.width*scale),int(rect.height*scale)))return imagedef load_all_gfx(directory, colorkey=(255,0,255), accept=('.png', '.jpg', '.bmp', '.gif')):graphics = {}for pic in os.listdir(directory):name, ext = os.path.splitext(pic)if ext.lower() in accept:img = pg.image.load(os.path.join(directory, pic))if img.get_alpha():img = img.convert_alpha()else:img = img.convert()img.set_colorkey(colorkey)graphics[name] = imgreturn graphicspg.init()
pg.display.set_caption(c.ORIGINAL_CAPTION)
SCREEN = pg.display.set_mode(c.SCREEN_SIZE)GFX = load_all_gfx(os.path.join("resources","graphics"))
完整代码下载地址:Python版经典小游戏愤怒的小鸟源代码
Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk相关推荐
- Python版见缝插针小游戏源代码,球球旋转大作战源程序
见缝插针游戏是一款非常考验玩家手眼协调能力的休闲益智虐心虐脑小游戏,玩法很简单,但要过关却很有挑战性哟! 主要是将一系列的小球,插入到旋转的摩天轮转盘当中,插入过程中不能碰到旋转的摩天轮上的其他小球, ...
- python写的2048游戏,源代码,pygame
用pygame写的游戏界面 代码全是自己写的注释 (怕以后自己再回头看自己写的 看不懂 ) 所有的逻辑基本都写在注释里了 代码肯定不是最简洁的,包含注释400行了 但是应该是相对来说很容易看懂的 毕竟 ...
- Python制作经典小游戏:推箱子
开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 游戏简介 ...
- python2048游戏代码_【Python】用Python实现2048小游戏(源代码,1.0版本)
#2048 用python实现 import random import math import os global score score = 0 def start():#开始 a = [[0 f ...
- python文字游戏源代码_【Python】用Python实现2048小游戏(源代码,1.0版本)
#2048 用python实现 import random import math import os global score score = 0 def start():#开始 a = [[0 f ...
- 如何用Python开发象棋小游戏
如何用Python开发象棋小游戏,源代码版本 人生苦短,我用Python! hello 大家好!我是Mark,一个姓马名克的中国人. 最近,我在CSDN当中看到了这一篇文章: 传送门 他详细地讲解了如 ...
- Python版儿童识字游戏源代码,结合植物大战僵尸和儿童识字的小游戏,含学习模式和娱乐模式
Python版儿童识字游戏源代码,结合植物大战僵尸和儿童识字的小游戏,含学习模式和娱乐模式. 娱乐模式下,僵尸会头顶不同的汉字,此时屏幕会提示要消灭的汉字,移动豌豆消灭对应汉字的僵尸,如果攻击非提示汉 ...
- 小白的python学习日记==>用python写几个经典小游戏
爬虫小游戏系列 爬虫小游戏集合 当前进度 猜数字游戏介绍 用户登录系统介绍 爬虫小游戏集合 规划了一个基于python经典小游戏的集合,将从最简单的猜数字游戏开始,包括: 猜数字 骰子游戏 二十一点 ...
- python经典小游戏五子棋,适合python编程的小游戏
python入门可以做的小游戏 1.Python入门拼图小游戏简单介绍:将图像分为m×n个矩形块,并将图像右下角的矩形块替换为空白块后,将这些矩形块随机摆放成原图像的形状. 2.Python入门推箱子 ...
最新文章
- 【问链-EOS公开课】第十二课 EOS整体代码结构
- Azure SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码
- 20172329 2017-2018-2 《程序设计与数据结构》实验一报告
- python线性回归可视化_【Python可视化5】Seaborn之线性回归
- js+springMVC 提交数组数据到后台
- JAVA day04 数组排序,类和对象
- python 在线编程 实现_Python进阶开发之网络编程,socket实现在线聊天机器人
- Object Detection︱RCNN、faster-RCNN框架的浅读与延伸内容笔记
- 3.5 RNN 字符级语言模型
- mysql 查询的关键词的执行顺序
- HTML图片热点及表单
- arduino pro mini 迷你 ATmega328P 程序下载 usb-ttl reset
- kasp技术原理_KASP基因分型技术服务
- 常见的Web服务器、应用服务器(Apache、tomcat、jetty、Nginx)简介及优缺点总结
- 独立开发仿造一个开关机器人
- tomcat启动异常:A child container failed during start
- 计算机医学应用的前景,未来这3大专业,不仅就业前景广阔,而且不容易被外行人轻易取代...
- PLC通过ModbusTCP通讯——基于组态王7.5进行数据采集
- android sqlite delete 返回值,SQLite 使用详解
- 采用粒子群优化算法实现投资组合优化【Matlab实现】
热门文章
- 关于Parser的知识点总结
- 联想笔记本小新pro16酷睿版评测
- SDUT ACM 多项式求和(基于C语言)
- oracle 全文检索实践
- dsp广告和信息流广告区别_信息流广告和dsp的区别在哪?
- ERROR: cannot launch node of type [turtlesim /turtlesim_node]: turtlesim
- React-moveable的使用
- centos英文版下如何安装中文语言包
- About the ball Technical support
- 利用python爬取豆瓣电影top250