用python做一个简单的pong游戏 - jokermarvelous

jokerspace 2021-08-09 原文


用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()

运行的结果如下:

 

像素较差。。。。。。 

posted on
2017-06-27 18:03 
jokermarvelous 
阅读(3761
评论(0
编辑 
收藏 
举报

 

版权声明:本文为jokerspace原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jokerspace/p/7086504.html

用python做一个简单的pong游戏 - jokermarvelous的更多相关文章

  1. iPhone / iPad L2TP Client Setup

    iPhone / iPad L2TP Client Setup 原文链接:http://www.softeth […]...

  2. [知乎]学了 Python 之后,再学 Java 是不是会更容易? – morxio

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:Lambda链接:https://w […]...

  3. Linux shell从入门到精通 – 我的星期八

    Linux shell从入门到精通 前言 关于本文档 文档名称 Shell 从入门到精通 腾讯课堂 http: […]...

  4. PHP 源码 —— is_array 函数源码分析

    is_array 函数源码分析 本文首发于 https://github.com/suhanyujie/lea […]...

  5. 简单的图书管理系统 – 野心家

    简单的图书管理系统 主函数Test方法,负责调用 public class Test { public sta […]...

  6. Oracle – 数据库的实例、表空间、用户、表之间关系

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。 1) 数据库是一系列物理文件的集合 […]...

  7. web安全之XSS攻击原理及防范 – 龙恩0707

    web安全之XSS攻击原理及防范 2019-05-22 23:30  龙恩0707  阅读(84992)  评 […]...

  8. 【精编重制版】JavaWeb 入门级项目实战 — 文章发布系统 (第一节)

    说明 本教程是,原文章发布系统教程的精编重置版,会包含每一节的源码,以及修正之前的一些错误。因为之前的教程只做 […]...

随机推荐

  1. java初中级程序员面试宝典-蚂蚁课堂

    Java基础部分 &与&&区别? &和&&都是逻辑运算符,都是 […]...

  2. StringBuilder类的作用,以及与String类的相互转换

    # 转载请留言联系 先看一段String类的字符串拼接的代码。 String s = “hello […]...

  3. 递归、搜索与回溯

    同学对于递归一直不理解,写篇文章帮帮他吧。 递归 递归的定义 首先,啥是递归? 请查阅“递归” 好吧,这个例子 […]...

  4. 企业级监控zabbix基础

    一个标准的监控系统所具备的基本功能: 1.数据的采集 2.为了展示其长期走势,将数据存储下来 3.万一某次采样 […]...

  5. 设计模式-代理模式

    代理模式...

  6. DOCKER 学习笔记7 Docker Machine 在阿里云实例化ECS 以及本地Windows 实例化虚拟机实战

    前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了。大家都可以发现使用 DOCKER […]...

  7. http 400 错误的请求怎么解决 – ╰★张志峰★╮

    HTTP400是个错误的统称 你将IE选项-高级中的显示HTTP友好错误信息前面的勾去掉。 然后在开这个页,, […]...

  8. 由5名程序员亲身面试百度,腾讯,阿里总结的20道面试必考题

    写在前面:本篇文章由小编的几位参加过阿里,腾讯,阿里面试的朋友整理总结而成,由于篇幅有限,所以挑选出其中最常问 […]...

展开目录

目录导航