用python做一个简单的pong游戏
Posted joker marvelous
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python做一个简单的pong游戏相关的知识,希望对你有一定的参考价值。
pong游戏就是一个用挡板去控制一个小球不触底的一个小游戏,上个世纪以电视游戏的方式发行,取得巨大的成功。
看了一点书,知道pygame是python里一个强大的模块,做出这个游戏的简易模式也不难。
主要思想:1.创建游戏界面,挡板,小球以及记分牌。
2.小球碰到游戏界面四个边界会反弹,即x方向和y方向上的速度会改变为负,碰到底边生命数会减1.
3.小球与挡板碰撞y方向速度会变负,同时分数加1.
4.游戏结束会显示相关文字。
代码如下:
import pygame pygame.init() screen = pygame.display.set_mode([800,600]) pygame.display.set_caption("pong") keep_going = True image = pygame.image.load(".\\2.bmp") # print(type(image)) scale = 100 pic=pygame.transform.scale(image,(scale,scale)) # print(type(pic)) colorkey = pic.get_at((0,0)) pic.set_colorkey(colorkey)#设置游戏界面,加载小球图片,设置颜色键 picx = 0 picy = 0 timer = pygame.time.Clock() speedX = 5 speedY = 5 paddleW = 200 paddleH = 25 paddleX = 300 paddleY = 550 picW = 100 picH = 100 points = 0 lives = 5 white = (255,255,255) font = pygame.font.SysFont("C:\\\\Windows\\Fonts\\\\Corbel",24,False,False)#初始化参数 pygame.mixer.init() pop = pygame.mixer.music pop.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游戏的主要内容,如果未能解决你的问题,请参考以下文章