python项目之弹球小游戏 2

Hello,大家好,我们又见面了。本来我是想再拖几天再发布的,可我的良心不允许我这么做!毕竟在“python项目之弹球小游戏 1”中我们只是写了窗口的程序,还没有加入我们的主题元素呢!所以今天,我们就来加入“小球”这个关键因素!(小球的图片素材我放在文章结尾了,需要自取)

诶,对了,先把上一期的代码给一下:

import pygame
screen=pygame.display.set_mode([800,600])
pygame.display.set_caption("python弹球游戏")
running=True
while running:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            running=False

pygame.quit()

好的,那我们言归正传,开始我们程序的“蜕变”之旅!

首先我们来导入图片:

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

这段代码很容易理解,第一行使用了pygame中的“load”函数来预加载“ball"图片,第二行则是给予图片一个位置,让它呆在那里。关于pygame的定位机制,我们一会再讲。第三行则是优化我们导入的图片,否则会穿模。

pygame的定位功能

关于定位功能,pygame和turtle略有不同,这是因为turtle的定位坐标(0,0)是在窗口正中间,它的公式是:screen_width//2,screen_height//2

但是pygame就不同了,它并不讲究坐标(0,0),直接就设在第1个像素上。下图是他俩的区别:

python项目之弹球小游戏 2_第1张图片 

 python项目之弹球小游戏 2_第2张图片

这也是我为什么要用pygame制作游戏的原因,如果我用turtle,就算我做出来了,也会让游戏卡顿或出现判定错误(主要是懒得搞)

好了,让我们加入它的移动吧!

picx=0
picy=0
BLACK=(0,0,0)
WHITE=(255,255,255)
timer=pygame.time.Clock()
speedx=5
speedy=5
picw=100
pich=40
font=pygame.font.SysFont("Times",24)

注意,一定要加上这些变量及数值,不然自己改的话会很麻烦

import pygame
pygame.init()
screen=pygame.display.set_mode([800,600])
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
picw=100
pich=40
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()>=800:
        speedx= -speedx
    if picy<=0:
        speedy= -speedy
    if picy>=550:
        speedy= -speedy
    screen.fill(BLACK)
    screen.blit(pic,(picx,picy))
    pygame.display.update()
    timer.tick(60)
font_addr = pygame.font.get_default_font()
font = pygame.font.Font(font_addr, 36)
pygame.quit()

上面的就是今天的全部代码啦!哦,对了,吧图片附一下......

 嘶......有水印,算了还是下次再说吧!

我们来解析一下代码,首先,嗯,前面的代码一样,后面主要加入了球的基本判定,它的判定很简单,只要不超出窗口就行,如果超出,python会立即反转方向,如果上面超了就把yspeed变成-yspeed,下面也同理。关于tick,怎么说呢,它就是你窗口的刷新次数,也叫帧率,帧率越高,速度越快,损耗也更大。

你可能感兴趣的:(python,pygame,开发语言)