pygame躲敌人的游戏
#first.py
# coding=utf- import pygame
from pygame.locals import *
from sys import exit
from util import * while True:
pygame.init()
screen = pygame.display.set_mode((WIDTH, LENGTH))
pygame.display.set_caption('be a man') star = Star([, ]) clock = pygame.time.Clock() group = pygame.sprite.Group() count =
die = False
while not die:
count +=
if count > :
count = clock.tick()
screen.fill([, , ])
screen.blit(star.image, star.rect) enemy_pos = [, ]
if count % == :
enemy_pos[] = randint(, WIDTH)
elif count % == :
enemy_pos[] = randint(, LENGTH)
elif count % == :
enemy_pos = [WIDTH, randint(, LENGTH)]
elif count % == :
enemy_pos = [randint(, WIDTH), LENGTH]
if enemy_pos != [, ]:
enemy = Enemy(enemy_pos, star.rect)
group.add(enemy)
group.update()
group.draw(screen) star_down = pygame.sprite.spritecollide(star, group, True)
if len(star_down) > :
die = True pygame.display.update() for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit() if event.type == pygame.KEYDOWN:
if event.key in click:
click[event.key] = STAR_V
elif event.type == pygame.KEYUP:
if event.key in click:
click[event.key] = star_move(star.rect, star.rect)
# util.py
# coding=utf-
import pygame
from pygame.locals import *
from random import *
from math import sqrt WIDTH =
LENGTH = STAR_V = 2.5
click = {pygame.K_LEFT:, pygame.K_RIGHT:, pygame.K_UP:, pygame.K_DOWN:} ENEMY_SPEED_MIN =
ENEMY_SPEED_MAX = class Star(pygame.sprite.Sprite):
def __init__(self, pos):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface([, ])
self.image.fill((, , ))
self.rect = self.image.get_rect()
self.rect.topleft = pos class Enemy(pygame.sprite.Sprite):
def __init__(self, enemy_pos, star_pos):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface([, ])
self.image.fill((, , ))
self.rect = self.image.get_rect() # 只是图片的大小
self.rect.topleft = enemy_pos # 这才是图片的位置
v = uniform(ENEMY_SPEED_MIN, ENEMY_SPEED_MAX)
self.v = v
var = sqrt((v ** ) / ((star_pos[] - enemy_pos[]) ** + (star_pos[] - enemy_pos[]) ** ))
x = (star_pos[] - enemy_pos[]) * var
y = (star_pos[] - enemy_pos[]) * var
self.v_x = x
self.v_y = y def update(self):
if self.v == :
print self
self.rect.left += self.v_x
self.rect.top += self.v_y
if self.rect.left >= WIDTH or self.rect.left <= or self.rect.top >= LENGTH or self.rect.top <= :
self.kill() def star_move(star_pos, star_rect):
star_x = star_pos[] + click[pygame.K_RIGHT] - click[pygame.K_LEFT]
star_y = star_pos[] + click[pygame.K_DOWN] - click[pygame.K_UP]
if star_x < :
star_pos[] =
elif star_x > WIDTH - star_rect.width:
star_pos[] = WIDTH - star_rect.width
else:
star_pos[] = star_x if star_y < :
star_pos[] =
elif star_y > LENGTH - star_rect.height:
star_pos[] = LENGTH - star_rect.height
else:
star_pos[] = star_y
pygame躲敌人的游戏的更多相关文章
- pygame开发滑雪者游戏
pygame开发滑雪者游戏 一.实验说明 下述介绍为实验楼默认环境,如果您使用的是定制环境,请修改成您自己的环境介绍. 1. 环境登录 无需密码自动登录,系统用户名 shiyanlou,该用户具备 s ...
- 基于pygame的一个小游戏
class GameStats(): """跟踪游戏的统计信息""" #def __int__(self, ai_settings): de ...
- python学习笔记(七) 类和pygame实现打飞机游戏
python中类声明如下: class Student(object): def __init__(self, name, score): self.name = name self.score = ...
- Pygame制作答题类游戏的实现
代码地址如下:http://www.demodashi.com/demo/13495.html 概述 个人比较喜欢玩这些答题类的游戏,在这类的游戏中其实存在着一些冷知识在里面.练习pygame的过程中 ...
- 吴裕雄--天生自然python学习笔记:python 用pygame模块开发俄罗斯方块游戏
俄罗斯方块游戏 多年前,游戏机中最流行的游戏就是“俄罗斯方块”了.时至今日,虽然网络 游戏日新月异 ,但“俄罗斯方块”这款小游戏仍在许多人心中 占有一席之地.本例中, 我们将亲手设计一个简单的俄罗斯方 ...
- 使用pygame开发一个弹幕射击游戏(一)
本文作为开发过程记录用. 目前游戏画面: 下一个添加的功能:敌机可以进行射击. 弹幕类 from pygame.sprite import Sprite from pygame import tran ...
- 练手项目:利用pygame库编写射击游戏
本项目使用pygame模块编写了射击游戏,目的在于训练自己的Python基本功.了解中小型程序框架以及学习代码重构等.游戏具有一定的可玩性,感兴趣的可以试一下. 项目说明:出自<Python编程 ...
- 2015/11/2用Python写游戏,pygame入门(2):游戏中的事件和显示
pygame是一个比较大的库,以我这点弱小的实力是没办法详解的.所以我只讲我懂得那些部分,其他部分由大家慢慢查找了解. ------------------------------- 我用pygame ...
- Python3+Pygame实现的射击游戏,很流畅,有音效
之前看到过很多人写的飞机大战,当然了之前我也写过多个版本,总体来说功能是实现了,但总感觉不够"炫" 今天浏览Python资料的时候,意外发现了这个很好的"射击" ...
随机推荐
- Android RxJava使用介绍(四) RxJava的操作符
本篇文章继续介绍下面类型的操作符 Combining Observables(Observable的组合操作符) Error Handling Operators(Observable的错误处理操作符 ...
- oracle经常使用函数(1)
1.返回与指定的字符相应的十进制数 select ascii('A') A,ascii('z') a,ascii('12') 一打,ascii(' ') kg from dual; 2.返回与指定十进 ...
- (三)Thymeleaf标准表达式之——文字(literals)
2.2 文字(literals) 模板名称:text.html 2.2.1 文本(text literals)(放在 单引号 里面,可以是任意字符) <p> Now you are loo ...
- About the Apple Captive Network Assistant
If you’re a mac user, you likely have seen a strange popup window appear on your computer when you t ...
- quick-cocos2d-x3.2 scheduler使用注意事项
近期在使用scheduler时发现例如以下问题 调用: local scheduler = require(cc.PACKAGE_NAME .. ".scheduler") fun ...
- MySQL三:存储引擎
阅读目录 一 什么是存储引擎 二 mysql支持的存储引擎 三 使用存储引擎 一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的 ...
- memcache原理和实际应用
Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的.眼下全世界不少人使用这个缓存项目来构建自己大负载的站点,来分担数据库的压力. 它能够应 ...
- PyCharm搭建Spark开发环境 + 第一个pyspark程序
一, PyCharm搭建Spark开发环境 Windows7, Java 1.8.0_74, Scala 2.12.6, Spark 2.2.1, Hadoop 2.7.6 通常情况下,Spark开发 ...
- Mysql:1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'错误解决
select distinct b.sale_count from product_sale b where b.pro_id in (select a.pro_id from product a L ...
- 2017年Android百大框架排行榜(转)
一.榜单介绍 排行榜包括四大类: 单一框架:仅提供路由.网络层.UI层.通信层或其他单一功能的框架 混合开发框架:提供开发hybrid app.h5与webview结合能力.web app能力的框架 ...