pygame小游戏(接球小游戏)
本游戏要使用的是由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小游戏(接球小游戏)相关推荐
- Pygame:编写一个小游戏
大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...
- 帽子接球小游戏(二)--接球的实现
帽子接球小游戏(二)--接球的实现 注:本小游戏共两章,第一章讲界面的制作,第二章讲后台代码控制接球. (工程中所使用到的所有图片都是我自己PS画的,比较粗糙,不太美观,能看就行,哈哈.) 传送门: ...
- pygame外星人来了小游戏
外星人来了小游戏 需要安装包pygame 游戏实现功能 开始功能 计分功能 最高分功能记录 飞船剩余数记录 游戏难度随游戏时间增加而增加 项目地址 https://github.com/2501070 ...
- 手把手教你使用Pygame制作飞机大战小游戏,4万字超详细讲解!
点击上方"早起Python",关注并"星标" 每日接收原创Python干货! 大家好,偷学Python系列是由小甜同学从初学者的角度学习Python的笔记,其特 ...
- 帽子接球小游戏(一)--制作UI面板
帽子接球小游戏(一)--制作UI面板 注:本小游戏共两章,第一章讲界面的制作,第二章讲后台代码控制接球.最终效果见下章. (工程中所使用到的所有图片都是我自己PS画的,比较粗糙,不太美观,能看就行,哈 ...
- pygame只能编写游戏_使用pygame开发的游戏发布+小总结
概述 大约两年前接触了python,然后就爱上了这个语言. 然后就想用它写游戏,很快就找到了pygame这个库,但是pygame貌似十分冷门,网上教程也比较少,好在还有个文档来参考. 于是胡乱搞了很久 ...
- pygame游戏_小蝌蚪吃蚊子幼虫成长
网上有许多小蝌蚪的游戏.其中有一游戏,小蝌蚪开始很小,其四处游动吃蚊虫(蚊子幼虫),吃一个蚊虫后其身体长大一点,长大到某尺寸变为青蛙.本例实现其部分功能.游戏有3个角色:小蝌蚪.蚊虫和背景角色.小蝌蚪 ...
- 北邮数电实验三接球小游戏
文章目录 前言 一.实验要求 二.设计思路 三.设计系统框图 四.源代码 五.遇到的问题和解决办法 六.总结 前言 北邮数电实验三"接球小游戏" 数电实验验收已经结束了,实验报告也 ...
- 体感游戏 | 手势识别玩飞机大战游戏(一) 用pygame实现飞机大战小游戏
Color Space OpenCV与AI深度学习 后面将分四篇文章来介绍实现手势识别控制飞机大战游戏的功能,它们分别是: 使用Pygame实现简易飞机大战小游戏 使用Python+OpenCV实现简 ...
最新文章
- spring-mvc注解
- android面试自定义view,资深面试官:自定义View的实现方式,你知道几种?
- 牛客练习赛73 D 离别(线段树+右端点排序离线查询)
- 使用Hibernate的JPA 2.0标准查询
- 网易云音乐被纳入港股通 3月7日起生效
- 禁ping也能ping的工具: tcping
- fatal error LNK _X
- [ openwrt ] 添加一个通过GPIO控制的LED
- 国内开源镜像(下载Linux系统)
- 计算机地图制图的点状符号制作,计算机地图制图地图符号库系统建立..doc
- 跨站脚本攻击(XSS)
- 计算机桌面上的照片转pdf免费,电脑上怎样快速将图片转PDF
- php创蓝253四要素认证_PHP调用创蓝253国际短信验证码
- 【软件工程】实验九 建立动态模型--自行车租赁管理系统
- VSC | vscode 常用快捷键
- spring boot网上购物系统毕业设计源码311236
- Java设计模式8,校验、审批流程改善神器,责任链模式
- 【计算机网络】实验2:常见网络命令操作
- 红色企业通用年终总结PPT模板
- java构造函数的调用
热门文章
- 5-Springboot实现web的常用功能
- 获取浏览器高度_鸡哥解读FILECOIN浏览器之幸运值
- js中数组filter过滤奇偶数_JS filter()方法:根据指定条件过滤数组元素
- java输入输出流_金九银十准备季:Java异常+Java IO与NIO面试题(含答案)
- 另存为里面没有jpg_CAD图不会转JPG?教你两个方法,从此CAD格式转换不再烦恼
- spark的python开发安装方式_windows下安装spark-python
- python难度大吗_python需要学多久?自学两年也很难达到企业标准
- 如何寻找灵感?让那些小众但富有创意的页面告诉你
- PSD分层素材模板,快速设计美妆类海报
- .net websocket 获取http登录的用户_辽宁装备制造职业技术学院用户登录http://59.46.58.179/login...