Pygame制作跳跃小球小游戏,击中一次得一分并显示分数。仅添加击中判断模块和分数显示模块。一共包含三个步骤,代码如下:
(1)首先创建一个游戏窗口,然后再窗口内创建一个小球。以一定的速度移动小球,当小球碰到游戏窗口的边缘时,小球弹回,继续移动。可以按照如下步骤实现该功能。
(2)其次增加鼠标点击的值域判断。
(3)最后通过右上角的分数显示模块显示分数。
### -*- coding:utf-8 -*-
import sys # 导入sys模块
import pygame # 导入pygame模块
import pyautogui as pag
import time
pygame.init() # 初始化pygame
size = width, height = 640, 480 # 设置窗口
screen = pygame.display.set_mode(size) # 显示窗口
color = (0, 1, 0) # 设置颜色
def text_objects(text, font):
textSurface = font.render(text, True, white)
return textSurface, textSurface.get_rect()
def message_diaplay(text):
largeText = pygame.font.Font('freesansbold.ttf',18)
TextSurf, TextRect = text_objects(text, largeText)
TextRect.center = ((width-80),20)
screen.blit(TextSurf, TextRect)
pygame.display.update()
#def crash():
# message_diaplay('You Crashed')
black = (0,0,0)
white = (255,255,255)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
ball = pygame.image.load("D:\\python\\ball\\ball.jpg") # 加载图片
ballrect = ball.get_rect() # 获取矩形区域
number = 0;
speed = [35, 35] # 设置移动的X轴、Y轴距离
clock = pygame.time.Clock() # 设置时钟
# 执行死循环,确保窗口一直显示
while True:
message_diaplay("the score is " + str(number))
clock.tick(12) # 每秒执行60次,次数太多与按键延时有关
# 检查事件
for event in pygame.event.get():
if event.type == pygame.QUIT: # 如果点击关闭窗口,则退出
sys.exit()
ballrect = ballrect.move(speed) # 移动小球
# 碰到左右边缘
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
# 碰到上下边缘
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1]
if event.type == pygame.MOUSEBUTTONDOWN:
x,y = pag.position();
if(x>ballrect.left & x<ballrect.right & y>ballrect.bottom & y<ballrect.top):
print(x,y)
number = number + 1;
screen.fill(color) # 填充颜色
screen.blit(ball, ballrect) # 将图片画到窗口上
pygame.display.flip() # 更新全部显示
pygame.quit() # 退出pygame
游戏的实现效果如下: