用python做一个简单的pong游戏,,pong游戏就是一个


技术分享

pong游戏就是一个用挡板去控制一个小球不触底的一个小游戏,上个世纪以电视游戏的方式发行,取得巨大的成功。

看了一点书,知道pygame是python里一个强大的模块,做出这个游戏的简易模式也不难。

主要思想:1.创建游戏界面,挡板,小球以及记分牌。

     2.小球碰到游戏界面四个边界会反弹,即x方向和y方向上的速度会改变为负,碰到底边生命数会减1.

     3.小球与挡板碰撞y方向速度会变负,同时分数加1.

     4.游戏结束会显示相关文字。

代码如下:

import  pygamepygame.init()screen = pygame.display.set_mode([800,600])pygame.display.set_caption("pong")keep_going = Trueimage = pygame.image.load(".\2.bmp")# print(type(image))scale = 100pic=pygame.transform.scale(image,(scale,scale))# print(type(pic))colorkey = pic.get_at((0,0))pic.set_colorkey(colorkey)#设置游戏界面,加载小球图片,设置颜色键picx = 0picy = 0timer = pygame.time.Clock()speedX = 5speedY = 5paddleW = 200paddleH = 25paddleX = 300paddleY = 550picW = 100picH = 100points = 0lives = 5white = (255,255,255)font = pygame.font.SysFont("C:\\Windows\Fonts\\Corbel",24,False,False)#初始化参数pygame.mixer.init()pop = pygame.mixer.musicpop.load(".\w.mp3")#加载声音pop.play()while keep_going:#while的重复绘图制作出动画的效果    for event in pygame.event.get():        if event.type == pygame.QUIT:            keep_going = False        if event.type == pygame.KEYDOWN:#注意注意注意            if event.key ==pygame.K_F1:#F1键复位                points = 0                lives = 5                picx = 0                picy = 0                speedX = 5                speedY = 5    picx+=speedX    picy+=speedY    if picx<=0 or picx+pic.get_width()>=800:#值得注意的是游戏界面的坐标是以左上角为原点,                                            #向右为x正半轴,向下为y正半轴        speedX=-speedX*1.1    if picy<=0:        speedY = -speedY+1    if picy >=500:        lives-=1        # speedY = -speedY        speedY = -5        speedX = 5        picy = 499    screen.fill((0,0,0))    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:            points+=1            speedY = -speedY#与挡板碰撞的逻辑    draw_string = "lives:"+str(lives)+"Points:"+str(points)    if lives<1:        speedY = speedX = 0        draw_string = "game over! your scores is"+str(points)#游戏结束判断    text = font.render(draw_string,True,white)    text_rect = text.get_rect()    text_rect.centerx = screen.get_rect().centerx    text_rect.y = 10    screen.blit(text,text_rect)    pygame.display.update()    timer.tick(60)pygame.quit()

运行的结果如下:

技术分享

像素较差。。。。。。

用python做一个简单的pong游戏

评论关闭