weixuan-接小球游戏终极

import pygame
import random
import time

# 初始化
pygame.init()
ck = pygame.display.set_mode((600, 600))
ball_x = 300
ball_y = 300
x = 300
y = 300
r = random.randint(0, 244)
g = random.randint(0, 244)
b = random.randint(0, 244)
right = True  # 默认处事向右移动
down = True
ban_x, ban_y = 150, 500

# 文字1 设置文字字体和大小      font
wenzi = pygame.font.SysFont("SimHei", 40)
fenshu = 0
# 流畅:  每过多少毫秒响应多少次
pygame.key.set_repeat(500, 1)
# 图片1 导入入图片
ball = pygame.image.load("ball3.png")
benjin=pygame.image.load("ti.jpg")
bjx = 0
game_over = 1
zuigaofen = 0

pygame.mixer.init()
# 背景音乐
pygame.mixer.music.load("wzry.mp3")
pygame.mixer.music.set_volume(0.4)
pygame.mixer.music.play(-1)
# 音效
da = pygame.mixer.Sound("jineng.mp3")
da.set_volume(0.1)


while 1 < 2:
    for shi_jian in pygame.event.get():
        if shi_jian.type == pygame.QUIT:
            pygame.quit()
        elif shi_jian.type == pygame.KEYDOWN:
            if shi_jian.key == pygame.K_LEFT:
                ban_x = ban_x - 50
            if shi_jian.key == pygame.K_RIGHT:
                ban_x = ban_x + 50
        elif shi_jian.type == pygame.MOUSEBUTTONUP:
            if game_over == 1:
                game_over = 2

        elif shi_jian.type == pygame.MOUSEMOTION:
            ban_x,ban_y = shi_jian.pos

    ck.fill((14, 241, 210))
    ck.blit(benjin,(bjx,0))
    bjx=bjx-1

    if game_over == 1:
        wz=wenzi.render("点击开始游戏",True,(12,43,35))
        ck.blit(wz,(200,300))
        wz=wenzi.render("最高分数%d"%zuigaofen,True,(12,43,35))
        ck.blit(wz,(200,400))

        pygame.draw.circle(ck, (0, 0, 0), (200, 200), 30)
    elif game_over == 2:
        wz = wenzi.render("倒计时:3", True, (12, 43, 35))
        ck.blit(wz, (200, 300))
        game_over = 3
        pygame.display.update()
        time.sleep(0.4)

    elif game_over == 3:
        wz = wenzi.render("倒计时:2", True, (12, 43, 35))
        ck.blit(wz, (200, 300))
        game_over = 4
        pygame.display.update()
        time.sleep(0.4)

    elif game_over == 4:
        wz = wenzi.render("倒计时:1", True, (12, 43, 35))
        ck.blit(wz, (200, 300))
        game_over = 5
        pygame.display.update()
        time.sleep(0.4)

        t1 = time.time()
        sheng_yu_time = 60
        fenshu = 0
    else:
        y = y + 1
        if y > 600:
            y = 0
            x = random.randint(1, 600)
            r = random.randint(0, 244)
            g = random.randint(0, 244)
            b = random.randint(0, 244)
        if ban_x < -3:
            ban_x = 1
        if ban_x > 400:
            ban_x = 397

        # 判断是否接到小球
        if ban_x < x < ban_x + 200 and ban_y < y < ban_y + 30:
            fenshu = fenshu + 1
            y = 0
            x = random.randint(1, 600)
            da.play()

        # 记录一次时间
        t2=time.time()
        sheng_yu_time=60-(t2-t1)
        if sheng_yu_time<0:
            if fenshu>zuigaofen:
                zuigaofen=fenshu

            game_over = 1

        # 文字2 设置文字内容和颜色   render设置(文字内容,True,颜色)
        wenzi2 = wenzi.render('win %d' % fenshu, True, (12, 34, 56))
        # 文字3 把文字放在窗口上 窗口.blit(文字2,(x,y))
        ck.blit(wenzi2, (300, 300))
        sysj = wenzi.render("%d"%sheng_yu_time,True,(56,7,91))
        ck.blit(sysj,(0,300))

        # 画一个小球:参数分别pygame.draw.circle(窗口,(红,绿,蓝),(球x坐标,球y坐标),球的半径)
        # pygame.draw.circle(ck, (r, g, b), (x, y), 30)
        # 画一个长方形:参数分别pygame.draw.rect(窗口,(红,绿,蓝),(球x坐标,球y坐标,长方形宽度,长方形高度))
        pygame.draw.rect(ck, (1, 11, 1), (ban_x, ban_y, 200, 30))


        ck.blit(ball, (x,y))
    pygame.display.update()


猜你喜欢

转载自blog.csdn.net/houlaos/article/details/106454051
今日推荐