#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. MYSQL总结之sql语句大全

    一.基础1.说明:创建数据库 CREATE DATABASE database-name .说明:删除数据库 drop database dbname .说明:备份sql server --- 创建 ...

  2. ESXi安装iso镜像添加驱动(esxi6.5,6.7)

    准备工作:1.安装 Windows PowerShell 3.0 (需要启用Windows AutoUpdate服务,安装完毕计算机需要重启) https://www.microsoft.com/en ...

  3. mysql中的for update

    Select…For Update语句的语法与select语句相同,只是在select语句的后面加FOR UPDATE [NOWAIT]子句. 该语句用来锁定特定的行(如果有where子句,就是满足w ...

  4. 搭建SSH框架整合Struts2和Spring时,使用@Autowired注解无法自动注入

    © 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述: 搭建SSH框架,在进行Struts2和Spring整合时,使用Spring的@Autowired自动注入失败,运行报错java.lan ...

  5. macbook 下SDK Manager 的更新[即使Google被屏蔽了也无所谓]

    废话少说,直接说操作步骤: 1. 改动/etc/hosts文件: 右键单击Finder,选择前往目录,输入/private/etc/,敲回车键.将文件/etc/hosts复制到桌面(由于权限受限.无法 ...

  6. 《STL源代码剖析》学习笔记系列之七、八——仿函数和配接器

    1. 仿函数 仿函数又名函数对象.具有函数性质的对象.就是传入一些參数.然后对參数进行某些运算,然后返回一个值. 为了可以使行为类似函数,须要在类别定义中必须自己定义function call 运算子 ...

  7. Atitit.5gl 第五代语言编程语言 PROLOG教程  人工智能语言的标准 与实现

    Atitit.5gl 第五代语言编程语言 PROLOG教程  人工智能语言的标准 与实现 1. 第五代语言就是自然语言又被称为知识库语言或人工智能语言,1 2. 人工智能语言特点2 2.1. 试探法2 ...

  8. An error occurred while searching for implementations of method

    1:在我安装完scala的插件后,在打开方法的实现类(open implementactions)的时候,抛出这个异常,后来发现这个异常是因为我的scala的插件跟我eclipse版本不兼容导致的. ...

  9. windows upd广播包无法发送到局域网解决方法

    不能发送广播包的电脑和可以发送广播报的主机对比,发现不能发送广播报的主机上都有安装虚拟机,也有虚拟网卡,将所有的虚拟网卡关闭,然后再进行测试,都正常了,无论是Win7,Win10还是Xp. 禁用VMw ...

  10. string 和 stringbuffer的区别?

    string和stringbuffer的区别其实是变量和常亮的关系,string和stringbuffer内部实现的原理不同,在修改string对象时会产生另外的对象,也就是说在内存中会有两个存储区域 ...