pygame实现弹球游戏


Posted in Python onApril 14, 2020

本文实例为大家分享了pygame实现弹球游戏的具体代码,供大家参考,具体内容如下

pygame弹球游戏

写的很简陋
pip install pygame 安装pygame模块

代码,复制运行即可

import pygame
import random

pygame.init()

win = pygame.display.set_mode((600, 600)) # 画布窗口的大小
pygame.display.set_caption("弹球游戏") # 窗口标题

x, y = 300, 0 # 方块的起点
width, height = 10, 10 # 方块的宽,高
speed = 1 # 速度


def _randomOK():
  return random.randint(0, 1)


stop = False
_random = _randomOK()

str1 = "暂停中"
baffle = 250
status = 0

count = 0
top = 0
while True:
  # 刷新频率, 小球移动速度
  pygame.time.Clock().tick(1000)

  for event in pygame.event.get():
    # 窗口x事件
    if event.type == pygame.QUIT:
      exit(0)
    elif event.type == pygame.KEYDOWN:
      # 回车事件
      if event.key == 13:
        str1 = "暂停中"
        stop = not stop
        if status == 1:
          x, y = 300, 0

  keys = pygame.key.get_pressed()
  if stop:
    pygame.display.set_caption(str1) # 窗口标题
    continue
  if y >= 590:
    status = 1
    stop = not stop
    str1 = "游戏结束,回车重新开始,反弹次数" + str(count)
    count = 0

  pygame.display.set_caption("弹球游戏") # 窗口标题
  if y == 0:
    top = 0
  if top == 0:
    if _random == 0: # 向下左弹
      x -= speed
      y += speed
    elif _random == 1:
      x += speed
      y += speed
  else:
    if _random == 0: # 向上左弹
      x -= speed
      y -= speed
    elif _random == 1: # 向上右弹
      x += speed
      y -= speed
  # 方向箭头响应
  if keys[pygame.K_LEFT]:
    baffle -= speed
    if baffle < 0:
      baffle = 0

  if keys[pygame.K_RIGHT]:
    baffle += speed
    if baffle > 500:
      baffle = 500
  # 碰撞逻辑
  if 500 <= y <= 520:
    print(x, y)
    print(baffle)
    # y 高度坐标 200 x 宽度坐标 200
    # x坐标加300 大于 宽度初始坐标, 小于 宽度+300
    if baffle <= x <= baffle + 100:
      count += 1
      top = 1

  # 防止跑出边界
  if x > win.get_size()[0] - width:
    _random = _randomOK()
    x = win.get_size()[0] - width

  if x < 0:
    _random = _randomOK()
    x = 0

  if y > win.get_size()[1] - height:
    _random = _randomOK()
    y = win.get_size()[1] - height

  if y < 0:
    _random = _randomOK()
    y = 0

  # 将每一帧的底色先填充成黑色
  win.fill((64, 158, 255))
  # 画方块
  pygame.draw.rect(win, (255, 0, 0), (x, y, width, height))
  # 挡板设置,
  pygame.draw.rect(win, (255, 255, 255), (baffle, 500, 100, 20))
  # 更新画布
  pygame.display.update()
pygame.quit()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python批量修改文件后缀示例代码分享
Dec 24 Python
python如何实现excel数据添加到mongodb
Jul 30 Python
python UNIX_TIMESTAMP时间处理方法分析
Apr 18 Python
Python+selenium实现截图图片并保存截取的图片
Jan 05 Python
python编程培训 python培训靠谱吗
Jan 17 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 Python
python3.x实现base64加密和解密
Mar 28 Python
OpenCV读取与写入图片的实现
Oct 13 Python
Python控制鼠标键盘代码实例
Dec 08 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 #Python
Python request操作步骤及代码实例
Apr 13 #Python
jupyter notebook插入本地图片的实现
Apr 13 #Python
Python BeautifulReport可视化报告代码实例
Apr 13 #Python
解决jupyter notebook 出现In[*]的问题
Apr 13 #Python
超全Python图像处理讲解(多模块实现)
Apr 13 #Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
Apr 13 #Python
You might like
php数组应用之比较两个时间的相减排序
2008/08/18 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
2011/07/12 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
给Python初学者的一些编程技巧
2015/04/03 Python
python协程用法实例分析
2015/06/04 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
什么是python类属性
2020/06/10 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
办公室驾驶员岗位职责
2013/11/15 职场文书
新护士岗前培训制度
2014/02/02 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
运动会通讯稿300字
2015/07/20 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python