用python写一个既有趣有可爱的弹球小游戏

这几天闲着无聊,就在家写着游戏玩一玩,发现一个这样有趣的小游戏,我通过pygame把它先做了出来,话不多少先上代码。

首先先导入包,导包是必不可少的一件事

# -*- coding:utf-8 -*-
import pygame,sys
from pygame.locals import *
import random
from random import randint

这里我使用了sys包主要是为了使用sys.exit(0)来控制程序退出,然后导入了random包,接着导入random包中的方法randint,这个随机取整数范围的方法也是必不可少的,在游戏中游戏的随机性是非常重要的,几乎占据了游戏的一大部分趣味性,是游戏开发中的重要组成部分。

接着我们载入所有的pygame包的内容

pygame.init()

并且设置一下屏幕的宽度和高度

SCREEN_SIZE = (640,480)

紧接着创建一个屏幕

screen = pygame.display.set_mode(SCREEN_SIZE,0,32)

这里对的“0”代表着是控制游戏是否全屏,如果把 “0” 改成FULLSCREEN那么游戏就全屏了,超级神奇对不对,我们这里做一个测试,所以改成0就ok。

再创建一个窗口的标题名称为game,此游戏主要是用来测试的

caption = pygame.display.set_caption('game')

在创建时钟锁,来控制游戏延迟

clock = pygame.time.Clock()

游戏填充背景为黑色,并刷新屏幕

screen.fill([0,0,0])
pygame.display.flip()

吧所有该赋初值的变量都赋初值

color=[[255,0,0],[0,255,0],[0,0,255],[255,255,255]]
pos_x=0
pos_y=0
vel_x=2
vel_y=1
colorflag=0
i=0

color变量是控制游戏对象的颜色变化的几种状态
pos_x,pos_y 是对象的坐标,游戏中对象必须都要有坐标才能移动
vel_x,vel_y是对象垂直变换的中间变量
colorflag 是控制颜色随机变化的变量
i 是辅助颜色控制的变量

接着游戏原理就是一个死循环whle(true)来控制的

while(true):...

在…出写入代码就可以

现在死循环内写入消息轮播时间

for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()

为了检查是否有退出游戏的消息,有的话就调用sys.exit()方法退出程序

接着填充在填充游戏背景为黑色,防止发生颜色错乱

screen.fill([0,0,0])

之前对象的左边是左上角,因为pos_x和pos_y的值都是0,所以是坐上角,可能初学者都有点疑问为什么0,0就是左上角,而不是中间。
因为在计算机图形学中0,0(即x坐标0,y坐标0)都建立在窗口左上角,在计算机图形学表示屏幕框中却没有负数这个概念,这个概念和数学却不同。
如图:

如上面一张图就可以阐述计算机图形学中的坐标原理,上图可以看出,左上角坐标为x=0和y=0,屏幕中最小的值为0,越往右边移动值就越大,所以屏幕右下角的值是x,y。

在这里我在阐述一下,并不是坐标不能表示负数,表示负数当然是可以,只不过已经超出屏幕可以显示的范围了,屏幕正确的范围是>0且<屏幕的宽。(即你可以看到的内容)

再继续写代码,做完上述代码之后,我们的球就可以动了,但是还有一个最大的核心代码没有写,就是遇到墙反弹回来,这才是游戏的核心。

 if pos_x > 550 or pos_x < 0:vel_x = - vel_xcolorflag=1if pos_y > 400 or pos_y < 0:vel_y = - vel_ycolorflag=1

上面的代码控制vel_x和vel_y来实现遇到墙面就反向的算法控制对象移动轨迹。

最后加一点特效,如果碰到墙面,就让对象改变自己的颜色

 if colorflag:i+=1if i==3:i=0colorflag=0

这样添加了游戏的生动性

再接着绘制游戏坐标

 pos = pos_x,pos_y,100,100pygame.draw.rect(screen,color[i],pos)

写完上述代码后,游戏变化的特别快,我么得让游戏慢起来,让人的眼睛能够捕捉游戏的美才好,最后添加两行代码:

 clock.tick(200)pygame.display.update()

到这里我们游戏就结束了。然后运行游戏,enter起来。

最后完整的代码如下:

# -*- coding:utf-8 -*-
import pygame,sys
from pygame.locals import *
import random
from random import randint
pygame.init()
SCREEN_SIZE = (640,480)
screen = pygame.display.set_mode(SCREEN_SIZE,0,32) #HWSURFACE | FULLSCREEN
caption = pygame.display.set_caption('game')
clock = pygame.time.Clock()
screen.fill([0,0,0])
pygame.display.flip()
color=[[255,0,0],[0,255,0],[0,0,255],[255,255,255]]
pos_x=0
pos_y=0
vel_x=2
vel_y=1
colorflag=0
i=0
while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.fill([0,0,0])pos_x+=vel_xpos_y+=vel_yif pos_x > 550 or pos_x < 0:vel_x = - vel_xcolorflag=1if pos_y > 400 or pos_y < 0:vel_y = - vel_ycolorflag=1if colorflag:i+=1if i==3:i=0colorflag=0pos = pos_x,pos_y,100,100pygame.draw.rect(screen,color[i],pos)clock.tick(200)pygame.display.update()

[python] 写个既有趣又可爱的弹球小游戏相关推荐

  1. PYTHON pygame库实战——实现双人弹球小游戏

    PYTHON pygame实战--运用pygame库实现双人弹球小游戏 使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截 ...

  2. python写一个表白程序_用Python写一个能算出自己年龄的小程序

    用Python写一个能算出自己年龄的小程序. 其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理 ...

  3. python画圆形螺旋线_Python写的弹球小游戏

    Python 的功能强大应用广泛,从爬虫到 Web 开发,从科学计算到人工智能,都能见到它的身影.当然,Python 还可以编写游戏代码,虽然不是主流,但却十分有趣,既能提升代码能力,又能自娱自乐.敲 ...

  4. 如何用python计算年龄_用Python写一个能算出自己年龄的小程序

    用Python写一个能算出自己年龄的小程序. 其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理 ...

  5. python弹球小游戏程序设计_Python写的弹球小游戏

    原标题:Python写的弹球小游戏 Python 的功能强大应用广泛,从爬虫到 Web 开发,从科学计算到人工智能,都能见到它的身影.当然,Python 还可以编写游戏代码,虽然不是主流,但却十分有趣 ...

  6. python写的一个-批量下载股票年报的小工具

    python写的一个-批量下载股票年报的小工具 from urllib import request import requests import os import openpyxl# print( ...

  7. python两人一碰_python运用pygame库实现双人弹球小游戏

    使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截失败的一方输掉游戏,规则类似于简化版的乒乓球. 因为是第一次用pygam ...

  8. python弹球小游戏程序_Python实现弹球小游戏

    本文主要给大家分享一个实战项目,通过python代码写一款我们儿时大多数人玩过的游戏---小弹球游戏.只不过当时,我们是在游戏机上玩,现在我们通过运行代码来玩,看看大家是否有不一样的体验,是否可以重温 ...

  9. python弹球游戏双球代码键盘操作_python运用pygame库实现双人弹球小游戏

    使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截失败的一方输掉游戏,规则类似于简化版的乒乓球. 因为是第一次用pygam ...

最新文章

  1. AngularJS路由使用案例
  2. python算法与数据结构-数据结构中二叉树的介绍
  3. pycharm debug 断点调试
  4. Windows下安装苹果iPhone开发环境xcode图文教程
  5. 543. 二叉树的直径 golang
  6. HPC高性能运算的发展应用场景以及高性能计算技术总结
  7. HDU 6706 huntian oy(杜教筛 + 一些定理)题解
  8. equal java用法_equal,和等号的用法..
  9. 用友NCCloud2021.11 专项漏洞补丁列表
  10. 【008】基于vue.js的仿网易云web端(含源码答辩PPT、接口文档、运行教程)
  11. MS4200 PCI串口卡驱动
  12. 三种局域网扫描工具比较
  13. 【错误记录】Android 编译报错 ( Installed Build Tools revision 31.0.0 is corrupted. Remove and install again )
  14. 智能家居项目进度控制表
  15. 获取UNIX主机当前时间的函数
  16. 百度小程序模板制作_百度小程序模板平台
  17. Win10“启动”文件夹在哪里?如何打开Win10启动文件夹?
  18. java 面试108
  19. Python中 -m pip install -U --force-reinstall pip 个人经验及解决办法
  20. 李晓慧:如何利用MongoDB打造爆款小程序

热门文章

  1. 关于八大员继续教育在线考试的一些想法
  2. 51单片机led点亮集合
  3. 阿里云搭建一个web项目(网站)介绍(Apache+php+MySQL)
  4. 麒麟 990 系列揭秘:突破物理极限的第二代 7nm 工艺
  5. arduino2048小游戏源代码解析(超详细)
  6. 读灵遁者文章,来学习写文章
  7. Java项目你们期待的热门游戏-王者荣耀
  8. 前端的独有个性,你能秒懂么?
  9. GT1030 GTX1050 GT705 Pascal Maxwell Fermi系列N卡Monterey 12.5 – Ventura 13.2 开启QE/CI驱动详尽教程
  10. 实时路径追踪篇 反射和折射