#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. The return types for the following stored procedures could not be detected

    1.使用dbml映射数据库,添加存储过程到dbml文件时报错. 2.原因:存储过程中使用了临时表 3.解决方案 3.1 通过自定义表值变量实现 Ex: DECLARE @TempTable TABLE ...

  2. jar包解压与打包

    首先感谢大神的指导:https://blog.csdn.net/mr_pang/article/details/47028921 1.首先准备一个能运行的jar文件,我们使用第三方解压工具进行解压wi ...

  3. win7上python+theano+keras安装

    https://blog.csdn.net/yongjiankuang/article/details/50485610 其实过程很简单,首先说一下安装条件: 1.win7 (32和64都可以,下载安 ...

  4. Oracle直接路径加载--append的深度解析

    ㈠ 直接路径加载和buffer cache              直接路径插入的数据不经过buffer cache,从PGA直接把数据格式化成Oracle块       然后由普通的Oracle ...

  5. idea设置自定义快捷键

    在说明之前,先引入一个非常好的 Intellij Idea中文教程:intelliJ Idea中文教程 一创建模板类 二使用方法备注 在IntellijIdea中我并没有找到直接对某个方法进行注释的模 ...

  6. 2018,从AI看安卓生态的变革

    AI的发展与影响 与传统技术不同的是,AI技术算法清晰,优化目标明确,基础技术成熟,使得一众中小创企也看到了市场的机会.2017年中国企业动作频频,在自动驾驶,智能安防,智慧城市等领域都取得了不俗的成 ...

  7. DFS应用——查找强分支

    [0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 "DFS应用--查找强分支" 的idea 并用源代码加以实现 : [1]查找强分支 1 ...

  8. Tomcat startup.bat启动隐藏弹出的信息窗口

    to make tomcat to use javaw.exe instead of java.exe using some startup parameter or environment vari ...

  9. Intellij idea subversion checkout error

    Subversion 1.8 and IntelliJ IDEA 13 Unlike its earlier versions, Subversion 1.8 support uses the nat ...

  10. [Java开发之路](8)输入流和输出流

    1. Java流的分类 按流向分: 输入流: 能够从当中读入一个字节序列的对象称作输入流. 输出流: 能够向当中写入一个字节序列的对象称作输出流. 这些字节序列的来源地和目的地能够是文件,并且通常都是 ...