<p>这里有一种可能的方法来生成一个季度的逐场比赛列表,从两个得分事件列表开始,例如</p>
<pre><code>teamA_scores = ['A2', 'A3']
teamB_scores = ['B3', 'B3', 'B2']
</code></pre>
<p>步骤1:将列表合并为单个列表,并将合并后的列表洗牌,例如</p>
<pre><code>scores: ['A3', 'B3', 'A2', 'B3', 'B2']
^^ - team A scores 3 points
</code></pre>
<p>第二步:当同一队连续得分两次时,必须有另一队未得分的事件。因此,创建一个新的播放列表,其中包括那些必须切换的播放,例如</p>
<pre><code>switch: ['A3', 'B3', 'A2', 'B3', 'AS', 'B2']
^^ - team A gives the ball back to team B without scoring
</code></pre>
<p>步骤3:在列表中添加一个季度末比赛(只是为了让下一步更容易),例如</p>
<pre><code>end Q: ['A3', 'B3', 'A2', 'B3', 'AS', 'B2', 'AQ']
^^ - time runs out with team A in possession
</code></pre>
<p>第4步:现在添加一些额外的非得分游戏来填充这个季度。在示例代码中,播放列表被填充为10的任意长度。为了真实感,您需要为每个剧本指定一个时间,并填充列表,直到总时间为12分钟</p>
<pre><code>plays: ['AK', 'A3', 'B3', 'AS', 'BS', 'A2', 'B3', 'AS', 'B2', 'AQ']
^^ - team A keeps the ball, e.g. missed shot, offensive rebound
^^ - team A loses the ball
^^ - team B loses the ball
</code></pre>
<p>下面是一些示例代码,展示了如何从两个得分重头戏列表中创建10个重头戏的列表:</p>
<pre><code>from random import shuffle
from random import randrange
from random import randint
# helper functions
def getTeam(event):
return event[0]
def makeSameTeamItem(event, item):
if getTeam(event) == 'A':
return 'A' + item
else:
return 'B' + item
def makeOtherTeamItem(event, item):
if getTeam(event) == 'B':
return 'A' + item
else:
return 'B' + item
# start with a list of scores for each team
teamA_scores = ['A2', 'A3']
teamB_scores = ['B3', 'B3', 'B2']
# step 1: combine and shuffle to create an overall list of scores
scores = teamA_scores + teamB_scores
shuffle(scores)
print 'scores:', scores
# step 2: create list of plays including mandatory SWITCH plays
plays = []
plays.append(scores[0])
for i in range(1, len(scores)):
if getTeam(scores[i]) == getTeam(scores[i-1]):
plays.append(makeOtherTeamItem(scores[i], 'S'))
plays.append(scores[i])
print 'switch:', plays
# step 3: add the end of quarter play
plays.append(makeOtherTeamItem(scores[-1], 'Q'))
print 'end Q: ', plays
# step 4: insert additional non-scoring plays to fill the quarter
quarter = 10
while len(plays) < quarter:
index = randrange(0, len(plays))
if quarter - len(plays) == 1 or randint(1,2) == 1:
plays.insert(index, makeSameTeamItem(plays[index], 'K'))
else:
plays.insert(index, makeOtherTeamItem(plays[index], 'S'))
plays.insert(index, makeOtherTeamItem(plays[index], 'S'))
print 'plays: ', plays
</code></pre>