用pygame怎样做一个接球小游戏?
Admin 2021-10-09 群英技术资讯 1051 次浏览
一些朋友应该有玩过接球小游戏吧,也就是通过左右移动一个滑块来接住下落小球,然后小球反弹,再接住小球,再反弹,如此重复获得分数。那么我们如果使用pygame,怎么写一个接球小游戏呢?下面就给大家分享用pygame做一个滑块接小球的游戏代码,感兴趣的朋友可以参考学习。
先上图
游戏很简单也很弱智,主要用到了pygame画圆,画方块,随机数等,可以锻炼基本的鼠标控制,游戏设计思维,简单地碰撞判断等,废话不多说,上代码
写之前,先思考能用到哪些参数
pygame.init() screen = pygame.display.set_mode((800, 600)) # 生命和得分 lives = 3 score = 0 # 设置颜色 white = 255, 255, 255 yellow = 255, 255, 0 black = 0, 0, 0 red = 220, 50, 50 # 设置字体 font = pygame.font.Font(None, 38) pygame.mouse.set_visible(False) game_over = True # 设置鼠标坐标及鼠标事件参数 # 鼠标坐标 mouse_x = mouse_y = 0 # 滑板坐标 pos_x = 300 pos_y = 580 # 球坐标 ball_x = random.randint(0, 500) ball_y = -50 # 球半径 radius = 30 # 下落速度 vel = 0.5 def print_text(font, x, y, text, color=white): imgText = font.render(text, True, color) screen.blit(imgText, (x, y))
解释下:
game_over一开始设置为True 是因为开局先停止,等鼠标点击后再开始,这也用到当死了以后,从新开始游戏
pygame.mouse.set_visible(False)是让鼠标不可见
然后是游戏主体部分
# 主循环 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: exit() elif event.type == pygame.MOUSEMOTION: mouse_x, mouse_y = event.pos move_x, move_y = event.rel elif event.type == pygame.MOUSEBUTTONDOWN: lives = 3 score = 0 game_over = False keys = pygame.key.get_pressed() if keys[K_ESCAPE]: exit() screen.fill((0, 0, 10)) if game_over: print_text(font, 220, 300, "Press MouseButton To Start", white) else: # 球落到了地上 if ball_y > 600: ball_y = -50 ball_x = random.randint(0, 800) lives -= 1 if lives == 0: game_over = True # 球被滑板接住了 elif pos_y < ball_y and pos_x < ball_x < pos_x + 120: score += 10 ball_y = -50 ball_x = random.randint(0, 800) # 既没有落地上也没被接住的时候,则不断增加y坐标数值使球从顶部落下 else: ball_y += vel ball_pos = int(ball_x), int(ball_y) pygame.draw.circle(screen, yellow, ball_pos, radius, 0) # 滑板不要划出边界 pos_x = mouse_x if pos_x < 0: pos_x = 0 elif pos_x > 700: pos_x = 700 # 画滑板并跟随鼠标左右移动 pygame.draw.rect(screen, white, (pos_x, 580, 100, 20), 0) print_text(font, 50, 0, "Score: " + str(score), red) print_text(font, 650, 0, "Lives:" + str(lives), red) pygame.display.update()
基本思路是,当球落到屏幕最下边,或者碰到了滑块,则通过给球的y坐标赋值,让球重新回到最上边去。
当球的y坐标大于滑块的y坐标,即球下落到滑块的高度,同时球的x坐标又在滑块的x坐标范围内,则视为碰撞,球依然回到顶上去。
游戏很简单,逻辑也很简单。
这是基本思路,以后用到sprite精灵类的时候,才是常规的用法,也会有更加严禁的碰撞计算方法。
以上就是pygame实现接球小游戏的介绍啦,是不是很简单呢?上述示例具有一定的借鉴价值,感兴趣的朋友可以了解看看,想要了解更多实现小游戏的方法,大家可以继续浏览群英网络其他相关的文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
今天很有可能你已经做了一些使用滑动窗口(也称为移动窗口)的事情,而你甚至不知道它。例如:许多编辑算法都是基于移动窗口的。在GIS中做地形分析的大多数地形栅格度量(坡度、坡向、山坡阴影等)都基于滑动窗口。很多情况下,对格式化为二维数组的数据进行分析时,都很有可能涉及到滑动窗口。滑动窗口操作非常普遍,非常有用。它们也很容易在Python中实现。学习如何实现移动窗口将把你的数据分析和争论技能提升到一个新的水平。
网格是从刻度线开始延伸,贯穿至整个绘图区域的辅助线条,它能帮助人们轻松地查看图形的数值。网格按不同的方向可以分为垂直网格的水平网格,这两种网格既可以单独使用,也可以同时使用,常见于添加图表精度、分辨图形细微差别的场景。
Spark部署模式分为Local模式(本地单机模式)和集群模式,在Local模式下,常用于本地开发程序与测试,而集群模式又分为Standalone模式(集群单机模式)、Yarn模式和Mesos模式,关于这三种集群模式的相关介绍具体如下:
PCA 是最常用的一种降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的方差最大,以此使用较少的维度,同时保留较多原数据的维度。
需求说明:通过在界面上输入春联的上、下批和横批汉字从而生成春联图像,最后将春联图片保存。有实际需要的还可以将春联打印。实现过程:实现思路是先下载好春联的背景图片,再下载每个汉字的文字图片将文字图片粘贴
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008