用pygame怎样做一个接球小游戏?
Admin 2021-10-09 群英技术资讯 1616 次浏览
一些朋友应该有玩过接球小游戏吧,也就是通过左右移动一个滑块来接住下落小球,然后小球反弹,再接住小球,再反弹,如此重复获得分数。那么我们如果使用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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Python3.x中input()函数接受一个标准输入数据,返回为string类型。Python2.x中input()相等于 eval(raw_input(prompt)) ,用来获取控制台的输入。raw_input()将所有输入作为字符串看待,返回字符串类型。而input()在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型(int,float)。注意
这篇文章主要介绍了python中进程间通信及设置状态量控制另一个进程,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
yield 简单说来就是一个生成器,生成器是这样一个函数,它记住上一次返回时在函数体中的位置。对生成器函数的第二次(或第 n 次)调用跳
python staticmethod 返回类,函数的静态方法。该方法不强制要求传递参数,如下声明一个静态方法:以上实例声明了静态方法 f,从而可以实现实例化使用 C().f(),当然也可以不实例化调用该方法 C.f()。
这篇文章主要为大家介绍了卷积神经Inception V3网络结构代码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008