#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躲敌人的游戏的更多相关文章

  1. pygame开发滑雪者游戏

    pygame开发滑雪者游戏 一.实验说明 下述介绍为实验楼默认环境,如果您使用的是定制环境,请修改成您自己的环境介绍. 1. 环境登录 无需密码自动登录,系统用户名 shiyanlou,该用户具备 s ...

  2. 基于pygame的一个小游戏

    class GameStats(): """跟踪游戏的统计信息""" #def __int__(self, ai_settings): de ...

  3. python学习笔记(七) 类和pygame实现打飞机游戏

    python中类声明如下: class Student(object): def __init__(self, name, score): self.name = name self.score = ...

  4. Pygame制作答题类游戏的实现

    代码地址如下:http://www.demodashi.com/demo/13495.html 概述 个人比较喜欢玩这些答题类的游戏,在这类的游戏中其实存在着一些冷知识在里面.练习pygame的过程中 ...

  5. 吴裕雄--天生自然python学习笔记:python 用pygame模块开发俄罗斯方块游戏

    俄罗斯方块游戏 多年前,游戏机中最流行的游戏就是“俄罗斯方块”了.时至今日,虽然网络 游戏日新月异 ,但“俄罗斯方块”这款小游戏仍在许多人心中 占有一席之地.本例中, 我们将亲手设计一个简单的俄罗斯方 ...

  6. 使用pygame开发一个弹幕射击游戏(一)

    本文作为开发过程记录用. 目前游戏画面: 下一个添加的功能:敌机可以进行射击. 弹幕类 from pygame.sprite import Sprite from pygame import tran ...

  7. 练手项目:利用pygame库编写射击游戏

    本项目使用pygame模块编写了射击游戏,目的在于训练自己的Python基本功.了解中小型程序框架以及学习代码重构等.游戏具有一定的可玩性,感兴趣的可以试一下. 项目说明:出自<Python编程 ...

  8. 2015/11/2用Python写游戏,pygame入门(2):游戏中的事件和显示

    pygame是一个比较大的库,以我这点弱小的实力是没办法详解的.所以我只讲我懂得那些部分,其他部分由大家慢慢查找了解. ------------------------------- 我用pygame ...

  9. Python3+Pygame实现的射击游戏,很流畅,有音效

    之前看到过很多人写的飞机大战,当然了之前我也写过多个版本,总体来说功能是实现了,但总感觉不够"炫" 今天浏览Python资料的时候,意外发现了这个很好的"射击" ...

随机推荐

  1. java web 中文乱码

    开发环境:设设置idea的VM options:-Dfile.encoding=UTF-8 生产环境:在tomcat部署目录bin\catalina.bat中,set "JAVA_OPTS= ...

  2. 对象序列和反序列化Xml

    1. XmlArray和XmlArrayItem XmlArray和XmlArrayItem是不同的,XmlArray是指这个数组叫什么,XmlArrayItem 值数组的每个元素叫什么. <X ...

  3. BGP双线的真真假假

    BGP双线的真真假假: 国内不少IDC服务商都号称自己是“真正的双线”.“双线单IP”.“全路由双线”,但是,这其中有没有水分?他们都是BGP双线?BGP的门槛真的这么低吗? 首先,要构建真正的BGP ...

  4. Atitit.异步编程的发展历史 1.1. TAP & async/await

    Atitit.异步编程的发展历史 1.1. TAP & async/await 1. 异步编程的发展历史1 1.1. Thread1 1.2. Task1 1.3. Async await2 ...

  5. Python中运算符与while初识

    一.运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.位运算: 注: ~  举例: ~5 = -6  解释: 将二进制数+1之后乘以-1,即~x = -(x+1),-(101 + 1) = ...

  6. jquery的find()

    jQuery 遍历 - find() 方法 jQuery 遍历参考手册 实例 搜索所有段落中的后代 span 元素,并将其颜色设置为红色: $("p").find("sp ...

  7. Word 操作

    1.出文件,最后一页是附件.最后一页的页码不想要.如何删除?用的是 office word 2010版本,跟07 03版本界面不一样. 在最后一页的最前面插入分节符:下一页 ,编辑页脚.让页脚“取消链 ...

  8. Android Activity去除标题栏和状态栏

    一.在代码中设置public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //去除ti ...

  9. 【Mac系统 + Python + Django】之搭建第一个【Django Demo(一)】

    我编写的此系列学习资料是通过虫师的python接口自动化出的书学习而来的,在此说明一下,想学习更多的自动化的同学可以找虫师的博客园,非广告,因为我python+selenium自动化也是跟虫师学的,学 ...

  10. 【转】使用Python学习selenium测试工具

    出处:https://my.oschina.net/u/1433482/blog/633231?fromerr=vaxqh9bn