Python ピンボール ゲーム イースターエッグ

前回では基本的なピンボール関数を実装しましたので、前回のコードを要約してみましょう。

import pygame
pygame.init()

width=800
height=600

screen=pygame.display.set_mode([width,height])
pygame.display.set_caption("python弹球游戏")

keepGoing=True
pic=pygame.image.load("ball.png")
colorkey=pic.get_at((0,0))
pic.set_colorkey(colorkey)

picx = 0
picy = 0
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
timer = pygame.time.Clock()
speedx = 5
speedy = 5
paddlew = 200
paddleh = 25
paddlex = 300
paddley = 550
picw = 100
pich = 40

xend=width-50
yend=height-50#这两行的减50为判定提供时间
ticks=60#帧率

font=pygame.font.SysFont("None",24)
while keepGoing:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            keepGoing=False
    picx+=speedx
    picy+=speedy
    if picx<=0 or picx+pic.get_width()>=xend:
        speedx= -speedx
    if picy<=0:
        speedy= -speedy
    if picy>=yend:
        speedy= -speedy
    if picy + pich >= paddley and picy + pich <= paddley + paddleh and speedy > 0:
        if picx + picw / 2 >= paddlex and picx + picw / 2 <= paddlex + paddlew:
            speedy = -speedy
    screen.fill(BLACK)
    screen.blit(pic, (picx, picy))
    paddlex = pygame.mouse.get_pos()[0]
    paddlex -= paddlew / 2
    pygame.draw.rect(screen, WHITE, (paddlex, paddley, paddlew, paddleh))
    pygame.display.update()
    timer.tick(ticks)

pygame.quit()

機能については...詳しく説明する必要はありませんね。

えー、本題に戻りましょう。今日のタスクをリストアップしましょう。

1. 座標、スコア、ゲーム結果などの字幕を追加します

2. 全体的なアルゴリズムを最適化する

3. 開始インターフェイスとオプションを追加します。

まず最初の項目である字幕を作成しましょう

字幕の追加

字幕と言えば、pygameではすでに標準となっています。pygameの字幕はシンプルな演出、多彩なフォント、多彩な色という特徴があるからです。そのテンプレートは次のように非常にシンプルです。

まずはフォントの設定についてです。

font=pygame.font.SysFont("字体",大小)

次にフォントの表示です。

draw_string="要显示的内容"
text=font.render(draw_string,True,颜色)
text_rect=text.get_rect()
text_rect.centerx=screen.get_rect().centerx
text_rect.y= y坐标
screen.blit(text,text_rect)

上記のコードは関数内でのみ表示できます

したがって、ピンボールとラケットの座標を出力できます。コードは次のようになります。

import pygame

pygame.init()
width=800
height=600
screen=pygame.display.set_mode([width,height])
pygame.display.set_caption("python弹球游戏")
keepGoing=True
pic=pygame.image.load("ball.png")
colorkey=pic.get_at((0,0))
pic.set_colorkey(colorkey)
picx = 0
picy = 0
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
timer = pygame.time.Clock()
speedx = 5
speedy = 5
paddlew = 200
paddleh = 25
paddlex = 300
paddley = 550
picw = 100
pich = 40
xend=width-50
yend=height-50#这两行的减50为判定提供时间
ticks=60#帧率
font=pygame.font.SysFont("None",24)
while keepGoing:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            keepGoing=False
    picx+=speedx
    picy+=speedy
    if picx<=0 or picx+pic.get_width()>=xend:
        speedx= -speedx
    if picy<=0:
        speedy= -speedy
    if picy>=yend:
        speedy= -speedy
    screen.fill(BLACK)
    screen.blit(pic, (picx, picy))
    paddlex = pygame.mouse.get_pos()[0]
    paddlex -= paddlew / 2
    pygame.draw.rect(screen, WHITE, (paddlex, paddley, paddlew, paddleh))
    if picy + pich >= paddley and picy + pich <= paddley + paddleh and speedy > 0:
        if picx + picw / 2 >= paddlex and picx + picw / 2 <= paddlex + paddlew:
            speedy = -speedy
    draw_string = "X Speed:" + str(speedx) + '   ' + "Y Speed:" + str(speedy)
    text = font.render(draw_string, True, WHITE)
    text_rect = text.get_rect()
    text_rect.centerx = screen.get_rect().centerx
    text_rect.y = 30
    screen.blit(text, text_rect)
    pygame.display.update()
    timer.tick(ticks)
pygame.quit()

最初、作者がビートを描画するためのプログラムを誤って削除してしまい、その結果、ビートがまったく表示されなくなりました。

スコアを表示

上記のコードを理解していれば、分数は非常に単純です。コードは以下のように表示されます:

import pygame

pygame.init()
width=800
height=600
screen=pygame.display.set_mode([width,height])
pygame.display.set_caption("python弹球游戏")
keepGoing=True
pic=pygame.image.load("ball.png")
colorkey=pic.get_at((0,0))
pic.set_colorkey(colorkey)
picx = 0
picy = 0
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
timer = pygame.time.Clock()
speedx = 5
speedy = 5
paddlew = 200
paddleh = 25
paddlex = 300
paddley = 550
picw = 100
pich = 40
xend=width-50

おすすめ

転載: blog.csdn.net/CSP_J/article/details/129030422