Bomb Catcher 游戏 (Pygame)

 简单的处理事件,以及对鼠是的操作

不足就是不能让小球自己下落

import sys, random, time, pygame
from pygame.locals import *


def print_text(font, x, y, text, color=(255, 255, 255)):
    imgText = font.render(text, True, color)
    screen.blit(imgText, (x, y))


pygame.init()#初始化
screen = pygame.display.set_mode((600, 500))#创建高600,宽500的界面
pygame.display.set_caption("Bomb Catching Game")#窗口标题
font1 = pygame.font.Font(None, 24)#数字越大 字体越大 
pygame.mouse.set_visible(False)  #隐藏或显示当前的鼠标
white = 255, 255, 255
red = 220, 50, 50
yellow = 230, 230, 50
black = 0, 0, 0
lives = 3
score = 0
game_over = True
mouse_x = mouse_y = 0
pos_x = 300
pos_y = 460
bomb_x = random.randint(0, 500)#随机产生数字
bomb_y = -50#初始炸弹在上方
vel_y = 1.7#下降速度


while True:
    for event in pygame.event.get():
        if event.type == QUIT:#叉掉窗口
            sys.exit()
        elif event.type == MOUSEMOTION:#鼠标动作
            mouse_x, mouse_y = event.pos#鼠标当前坐标
            move_x, move_y = event.rel#鼠标相对移动
        elif event.type == MOUSEBUTTONUP:
            if game_over:
                game_over = False
                lives = 3
                score = 0

        keys = pygame.key.get_pressed()#轮询键盘接口,返回一个布尔值的大列表
        if keys[K_ESCAPE]:
            sys.exit()

        screen.fill((0, 0, 100))
        if game_over:
            print_text(font1, 100, 200, "<CLICK TO PLAY>")
        else:
            bomb_y += vel_y
        if bomb_y > 500:
            bomb_x = random.randint(0, 500)
            bomb_y = -50
            lives -= 1
            if lives == 0:
                game_over = True
        elif bomb_y > pos_y:
            if (bomb_x > pos_x) and (bomb_x < pos_x+120):
                score += 10
                bomb_x = random.randint(0, 500)
                bomb_y = -50
        #pygame.draw.circle(screen, black, (bomb_x-4, int(bomb_y)-4), 30, 0)
        pygame.draw.circle(screen, yellow, (bomb_x, int(bomb_y)), 30, 0)

        pos_x = mouse_x
        if pos_x < 0:
            pos_x = 0
        elif pos_x > 500:
            pos_x = 500
        #pygame.draw.rect(screen, black, (pos_x-4, pos_y-4, 120, 40), 0)
        pygame.draw.rect(screen, red, (pos_x, pos_y, 120, 40), 0)

        print_text(font1, 0, 0, "LIVES: "+str(lives))

        print_text(font1, 500, 0, "SCORE: "+str(score))
        pygame.display.update()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏walterlv - 吕毅的博客

Grid 布局算法!自己动手实现一个 Grid

2018-05-20 07:11

922
来自专栏前端桃园

Grid布局简介

没错,这其实就是我们小时候写的小格子本本,其实它跟我们今天要讲的主题Grid布局非常类似,其实Grid布局就是它的升级加强版。

1.2K7
来自专栏较真的前端

深入研究CSS字体度量及CSS 盒子

1653
来自专栏深度学习之tensorflow实战篇

Python生成词云图,TIIDF方法文本挖掘: 词频统计,词云图

python中使用wordcloud包生成的词云图。 下面来介绍一下wordcloud包的基本用法。 class wordcloud.WordCloud(fon...

5366
来自专栏数据小魔方

sparklines迷你图系列5——Evolution(Horizon)

今天跟大家分享区域(面积图)图的一个变体——水平线图。 之所以说是面积图的变体,因为这种水平线图,表达的信息与面积图几乎差不多,差别仅仅在图表呈现形式上。 ? ...

3206
来自专栏深度学习之tensorflow实战篇

R语言高级绘图命令(标题-颜色等)

plot(x)          以x的元素值为纵坐标、以序号为横坐标绘图 plot(x,y)        x(在x-轴上)与y(在y-轴上)的二元作图 ...

6236
来自专栏腾讯IVWEB团队的专栏

SVG 快速入门

SVG 全称是 Scalable Vector Graphics,即,矢量图。在 Web 中使用 SVG 可以解决位图放大失真的问题。

5611
来自专栏编程

你不知道的前端算法之热力图的实现

作者:TalkingData 李凤禄 本文为TalkingData原创,未经授权禁止转载。申请授权请在评论中留言联系! inMap 是一款基于 canvas 的...

7768
来自专栏儿童编程

Processing雁群实验(续)

(1)旋转复杂不规则图形; (2)运用二维数组定义图形; (3)鼠标左右移动控制物体沿 Y 轴旋转; (4)点击鼠标线条变色。

1442
来自专栏极客猴

Python 绘图,我只用 Matplotlib(二)

上篇文章,我们了解到 Matplotlib 是一个风格类似 Matlab 的基于 Python 的绘图库。它提供了一整套和matlab相似的命令API,十分适合...

1341

扫码关注云+社区

领取腾讯云代金券