本游戏要使用的是由Pycharm中的pygame模块来实现的,也可以在python中运行。

目录

  • 介绍模块
  • 最小开发框架
    • Pygame和sys模块
    • random模块
  • 相关功能
    • 窗口尺寸改变
    • 键盘控制挡板
    • 鼠标控制
    • 挡板接住小球并得分
    • 小球未接住小球
    • 小球移动
    • 显示分数
  • 完整代码

介绍模块

最小开发框架

Pygame最小开发框架详细介绍

Pygame和sys模块

import pygame #制作游戏时要使用的模块
import sys #python的标准库,对内部各功能模块进行初始化创建,系统模块

random模块

需要在屏幕上随机生成小球

from random import randint

详情请看此文章:Python-random模块

相关功能

窗口尺寸改变

可以调节游戏屏幕的大小

# 改变窗口尺寸elif event.type == pygame.VIDEORESIZE:size = w,h = event.w,event.hscreen = pygame.display.set_mode(size,pygame.RESIZABLE)

pygame.VIDEORESIZE 这是窗口大小改变事件,事件发生后,返回event.size元组,包含新窗口的宽度和高度。
.size[0] 高度,也可以用event.w表示
.size[1] 宽度,也可以用event.h表示
返回参数仅在事件发生时有用

键盘控制挡板

# 键盘控制挡板elif event.type == pygame.KEYDOWN: #键盘按下事件检测if event.key == pygame.K_LEFT:  # 判断挡板是否左移if board_rect.left > 0 and board_rect.left <= w - 186:board_rect.left -= board_xelif board_rect.left <= 0:  # 判断挡板左边的坐标是否小于0board_rect.left = 0board_rect.top -= board_yelif event.key == pygame.K_RIGHT:  # 判断挡板是否右移if board_rect.right >= 186 and board_rect.right < w:board_rect.right += board_xelif board_rect.right >= w:  # 判断挡板右边的坐标是否大于屏幕的宽度                        board_rect.right = wboard_rect.bottom += board_y

鼠标控制

#鼠标控制挡板elif event.type == pygame.MOUSEMOTION:# 鼠标左键按下并跟随鼠标移动if event.buttons[0] == 1:if event.pos[0] >= 0 and event.pos[0] < w - 186:#判断鼠标的位置board_rect.left = event.pos[0] #将鼠标的x坐标给Rect对象的左边elif event.pos[0] >= w - 186 and event.pos[0] <= w:board_rect.left = w - 186# board_rect.top = h - 17 #档板位置在底部elif event.type == pygame.MOUSEBUTTONDOWN:  #鼠标按键按下# 将鼠标当前位置给挡板if event.button == 1:if event.pos[0] >= 0 and event.pos[0] < w - 186:#判断鼠标的位置board_rect.left = event.pos[0] #将鼠标的x坐标给Rect对象的左边if event.pos[0] >= w - 186 and event.pos[0] <= w:board_rect.left = w - 186# board_rect.top = h - 17

挡板接住小球并得分

# 下方挡板接到小球if ball_y >= h - 37 and (ball_x >= board_rect.left - 20 and ball_x <= board_rect.left + 206):move_y = - move_y  # y方向速度反向score += points  #得分count += 1   #次数增加1次if count == 5:  # 每满五次,难度和单次接球得分增加count = 0  # 接球得分的次数清零points += points# x方向速度增加if move_x > 0:move_x += 1else:move_x -= 1move_y -= 1

小球未接住小球

# 下方挡板未接到小球if ball_y > h - 27 and (ball_x < board_rect.left - 20 or ball_x > board_rect.left + 206):# 游戏结束ball_y = 200  #小球所在的位置break

小球移动

# 移动小球ball_x += move_xball_y += move_yif ball_x <= 20 or ball_x >= w - 20:  # 碰到左右两侧墙壁move_x = - move_x  # x方向速度反向if ball_y <= 20:  # 碰到上方墙壁move_y = - move_y  # y方向速度反向

显示分数

my_score = font.render(str(score), False, (255, 255, 0))  # 创建文字对象(文字,是否平滑,文字颜色)screen.blit(my_score, (w - 100, 30))  # 将文字添加到窗口上

完整代码

import sys
from random import randint
import pygamepygame.init() # 初始化size = w, h = (600,500) # 屏幕显示的区域,高度和宽度
screen = pygame.display.set_mode(size,pygame.RESIZABLE)
pygame.display.set_caption("接球游戏") # 屏幕的标题
fpsClock = pygame.time.Clock() # 帧速率 窗口刷新速度 越大运行越快board = pygame.image.load(r"D:\pycharm\WorkTime(大二上)\挡板.jpg")
board_rect = board.get_rect() #对图片进行加框 利用surface生成rectcolor = pygame.Color(255,255,255) # 屏幕(窗口)的颜色:白色
Green = pygame.Color('green') # 小球的颜色:绿色# 随机生成小球的x、y坐标(整数,包括两端)
ball_x = randint(20,580)
ball_y = randint(20,200)# 小球x、y坐标变化量
move_x = 1
move_y = 1# 挡板x、y坐标变化量
board_x = 46
board_y = 0score=0    #得分
font=pygame.font.Font(r'D:\字库\书法和新增字库\微软雅黑.ttf',60) #设置字体(前者是字体路径)和字体大小
points=1 #一次接球的加分
count=0    #接球得分的次数# size1 = board.get_size() #获取图片大小
# print(size1)
while True:board_rect.top = h - 17for event in pygame.event.get(): # pygame.event.get() 从事件队列中取出事件,并从队列中删除该事件if event.type == pygame.QUIT:sys.exit()# 改变窗口尺寸elif event.type == pygame.VIDEORESIZE:size = w,h = event.w,event.hscreen = pygame.display.set_mode(size,pygame.RESIZABLE)# 键盘控制挡板elif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT:  # 挡板左移if board_rect.left > 0 and board_rect.left <= w - 186:board_rect.left -= board_xelif board_rect.left <= 0:  # 判断挡板左边的坐标是否小于0board_rect.left = 0board_rect.top -= board_yelif event.key == pygame.K_RIGHT:  # 挡板右移if board_rect.right >= 186 and board_rect.right < w:board_rect.right += board_xelif board_rect.right >= w:  # 判断挡板右边的坐标是否大于屏幕的宽度                        board_rect.right = wboard_rect.bottom += board_y#鼠标控制挡板elif event.type == pygame.MOUSEMOTION:# 鼠标左键按下并跟随鼠标移动if event.buttons[0] == 1:if event.pos[0] >= 0 and event.pos[0] < w - 186:#判断鼠标的位置board_rect.left = event.pos[0] #将鼠标的x坐标给Rect对象的左边elif event.pos[0] >= w - 186 and event.pos[0] <= w:board_rect.left = w - 186# board_rect.top = h - 17 #档板位置在底部elif event.type == pygame.MOUSEBUTTONDOWN:  #鼠标按键按下# 将鼠标当前位置给挡板if event.button == 1:if event.pos[0] >= 0 and event.pos[0] < w - 186:#判断鼠标的位置board_rect.left = event.pos[0] #将鼠标的x坐标给Rect对象的左边if event.pos[0] >= w - 186 and event.pos[0] <= w:board_rect.left = w - 186# board_rect.top = h - 17# 下方挡板接到小球if ball_y >= h - 37 and (ball_x >= board_rect.left - 20 and ball_x <= board_rect.left + 206):move_y = - move_y  # y方向速度反向score += pointscount += 1if count == 5:  # 每满五次,难度和单次接球得分增加count = 0  # 接球得分的次数清零points += points# x方向速度增加if move_x > 0:move_x += 1else:move_x -= 1move_y -= 1# 下方挡板未接到小球if ball_y > h - 27 and (ball_x < board_rect.left - 20 or ball_x > board_rect.left + 206):# 游戏结束ball_y = 200break# 移动小球ball_x += move_xball_y += move_yif ball_x <= 20 or ball_x >= w - 20:  # 碰到左右两侧墙壁move_x = - move_x  # x方向速度反向if ball_y <= 20:  # 碰到上方墙壁move_y = - move_y  # y方向速度反向fpsClock.tick(200)screen.fill(color)# 显示分数my_score = font.render(str(score), False, (255, 255, 0))  # 创建文字对象(文字,是否平滑,文字颜色)screen.blit(my_score, (w - 100, 30))  # 将文字添加到窗口上screen.blit(board,board_rect)  #将一个图像绘制在另一个图像上 把surface对象覆盖到移动后的rect对象pygame.draw.circle(screen, Green, (ball_x, ball_y), 20)  # 绘制小球pygame.display.update() # 对显示窗口进行更新,默认窗口全部重绘

pygame小游戏(接球小游戏)相关推荐

  1. Pygame:编写一个小游戏

    大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...

  2. 帽子接球小游戏(二)--接球的实现

    帽子接球小游戏(二)--接球的实现 注:本小游戏共两章,第一章讲界面的制作,第二章讲后台代码控制接球. (工程中所使用到的所有图片都是我自己PS画的,比较粗糙,不太美观,能看就行,哈哈.) 传送门: ...

  3. pygame外星人来了小游戏

    外星人来了小游戏 需要安装包pygame 游戏实现功能 开始功能 计分功能 最高分功能记录 飞船剩余数记录 游戏难度随游戏时间增加而增加 项目地址 https://github.com/2501070 ...

  4. 手把手教你使用Pygame制作飞机大战小游戏,4万字超详细讲解!

    点击上方"早起Python",关注并"星标" 每日接收原创Python干货! 大家好,偷学Python系列是由小甜同学从初学者的角度学习Python的笔记,其特 ...

  5. 帽子接球小游戏(一)--制作UI面板

    帽子接球小游戏(一)--制作UI面板 注:本小游戏共两章,第一章讲界面的制作,第二章讲后台代码控制接球.最终效果见下章. (工程中所使用到的所有图片都是我自己PS画的,比较粗糙,不太美观,能看就行,哈 ...

  6. pygame只能编写游戏_使用pygame开发的游戏发布+小总结

    概述 大约两年前接触了python,然后就爱上了这个语言. 然后就想用它写游戏,很快就找到了pygame这个库,但是pygame貌似十分冷门,网上教程也比较少,好在还有个文档来参考. 于是胡乱搞了很久 ...

  7. pygame游戏_小蝌蚪吃蚊子幼虫成长

    网上有许多小蝌蚪的游戏.其中有一游戏,小蝌蚪开始很小,其四处游动吃蚊虫(蚊子幼虫),吃一个蚊虫后其身体长大一点,长大到某尺寸变为青蛙.本例实现其部分功能.游戏有3个角色:小蝌蚪.蚊虫和背景角色.小蝌蚪 ...

  8. 北邮数电实验三接球小游戏

    文章目录 前言 一.实验要求 二.设计思路 三.设计系统框图 四.源代码 五.遇到的问题和解决办法 六.总结 前言 北邮数电实验三"接球小游戏" 数电实验验收已经结束了,实验报告也 ...

  9. 体感游戏 | 手势识别玩飞机大战游戏(一) 用pygame实现飞机大战小游戏

    Color Space OpenCV与AI深度学习 后面将分四篇文章来介绍实现手势识别控制飞机大战游戏的功能,它们分别是: 使用Pygame实现简易飞机大战小游戏 使用Python+OpenCV实现简 ...

最新文章

  1. spring-mvc注解
  2. android面试自定义view,资深面试官:自定义View的实现方式,你知道几种?
  3. 牛客练习赛73 D 离别(线段树+右端点排序离线查询)
  4. 使用Hibernate的JPA 2.0标准查询
  5. 网易云音乐被纳入港股通 3月7日起生效
  6. 禁ping也能ping的工具: tcping
  7. fatal error LNK _X
  8. [ openwrt ] 添加一个通过GPIO控制的LED
  9. 国内开源镜像(下载Linux系统)
  10. 计算机地图制图的点状符号制作,计算机地图制图地图符号库系统建立..doc
  11. 跨站脚本攻击(XSS)
  12. 计算机桌面上的照片转pdf免费,电脑上怎样快速将图片转PDF
  13. php创蓝253四要素认证_PHP调用创蓝253国际短信验证码
  14. 【软件工程】实验九 建立动态模型--自行车租赁管理系统
  15. VSC | vscode 常用快捷键
  16. spring boot网上购物系统毕业设计源码311236
  17. Java设计模式8,校验、审批流程改善神器,责任链模式
  18. 【计算机网络】实验2:常见网络命令操作
  19. 红色企业通用年终总结PPT模板
  20. java构造函数的调用

热门文章

  1. 5-Springboot实现web的常用功能
  2. 获取浏览器高度_鸡哥解读FILECOIN浏览器之幸运值
  3. js中数组filter过滤奇偶数_JS filter()方法:根据指定条件过滤数组元素
  4. java输入输出流_金九银十准备季:Java异常+Java IO与NIO面试题(含答案)
  5. 另存为里面没有jpg_CAD图不会转JPG?教你两个方法,从此CAD格式转换不再烦恼
  6. spark的python开发安装方式_windows下安装spark-python
  7. python难度大吗_python需要学多久?自学两年也很难达到企业标准
  8. 如何寻找灵感?让那些小众但富有创意的页面告诉你
  9. PSD分层素材模板,快速设计美妆类海报
  10. .net websocket 获取http登录的用户_辽宁装备制造职业技术学院用户登录http://59.46.58.179/login...