保龄球计分java代码_从 保龄球得分计算方法 浅析 深度学习

本文从作者的保龄球体验出发,介绍了保龄球的计分规则,并逐步展示了如何用Python编写计分程序。接着,文章探讨了如何利用深度学习和MXNet框架构建神经网络模型来实现保龄球得分计算,包括数据生成、模型训练和预测。通过这种方式,文章将基础编程与深度学习技术相结合,展示了在游戏场景中的应用。
摘要由CSDN通过智能技术生成

起因

周六被小伙伴拖去游泳,美名其曰:锻炼身体。其实某人就是去泡澡的,哈哈。说正题吧,游完泳在体育场里闲逛,里面很大,转着转着看到一个保龄球馆,怀着对未知事物的好奇,决定和某人去尝试一下。我和S同学一人买了一局,按照说明,每一局分为10次,每一次有两次机会扔球。最后的比分就不说了,反正玩的很爽,最后也在边上一个厉害的大叔指点下,学会了基本的扔球姿势。

看到这你以为这是一篇叙事文?那就错了,起因是从这里开始的,我们的次数用完后,留在里面打台球(这里也有台球桌),看到不断有穿着队服一类东西的人进来,应该是来比赛的,同时又看到了赛道上面的牌子,有一个写着:289分。那分数是怎么计算的呢,怀着好奇心搜索起保龄球的积分规则来。在了解之后,我就在想一个问题:__如果是让我开发一个保龄球的游戏,那么计分程序要怎么写呢?__今天我们就从这里说起。。。

规则

先简述一下保龄球的规则,这里引用百度知道的别人的回答,每一局比赛有10格,每格有两次击球机会,我们这里关注它的得分情况,这里分为两种情况:

1-9格击球

每一格有3种可能:

第一次击球全部击倒:这种情况得分就是击倒的瓶数(10)+后两次击球击倒的总数

两次击球全部击倒:这样得分为击倒的瓶数(10)+后一次击球击倒的总数

两次击球没有全部击倒:得分为两次击倒总瓶数

第10格击球

这一格有两种可能:

前两次未能将瓶全部击倒:得分为击倒总瓶数+第9格的得分

前两次将瓶全部击倒,获得一次追加机会:得分为两次击倒总数(10)+追加时击倒的总瓶数+第9格分数

程序

规则也了解了,下面就到了写代码的时候了,为了方便,这里选择Python,版本为3.6

考虑到直观性,这里没有用交互式的程序,而是直接将击中情况抽象成矩阵(数组),算出最后总分。

输入的数据大概是这个样子:

[[0, 3], [2, 6], [3, 6], [0, 3], [3, 0], [9, 1], [6, 3], [6, 2], [4, 6], [4, 2]]

10x2的数组,代表前10格每格的击倒瓶数,如果一格内不需要第二次击球,也算作0。这里先写一个简单的数据生成函数。

import random

def top_10():

for i in range(10):

for j in range(2):

if j == 0 :

a[i][j] = random.randint(0,10)

else :

a[i][j] = random.randint(0,10-a[i][j-1])

return a

同时,我们注意到了,这个生成函数还少了点什么,没错,就是第十格的追加击球数。所以,这里再定义一个追加球生成函数

这里为了后面计算方便,也定义为[[x,y]]这种格式

def addto_num(a):

return [[random.randint(0,10),0]] if sum(a[9]) =&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值