本文整理汇总了Python中direct.showbase.RandomNumGen.RandomNumGen.choice方法的典型用法代码示例。如果您正苦于以下问题:Python RandomNumGen.choice方法的具体用法?Python RandomNumGen.choice怎么用?Python RandomNumGen.choice使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类direct.showbase.RandomNumGen.RandomNumGen
的用法示例。
在下文中一共展示了RandomNumGen.choice方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: startSuitWalkTask
# 需要导入模块: from direct.showbase.RandomNumGen import RandomNumGen [as 别名]
# 或者: from direct.showbase.RandomNumGen.RandomNumGen import choice [as 别名]
def startSuitWalkTask(self):
ival = Parallel(name='catchGameMetaSuitWalk')
rng = RandomNumGen(self.randomNumGen)
delay = 0.0
while delay < CatchGameGlobals.GameDuration:
delay += lerp(self.SuitPeriodRange[0], self.SuitPeriodRange[0], rng.random())
walkIval = Sequence(name='catchGameSuitWalk')
walkIval.append(Wait(delay))
def pickY(self = self, rng = rng):
return lerp(-self.StageHalfHeight, self.StageHalfHeight, rng.random())
m = [2.5,
2.5,
2.3,
2.1][self.getNumPlayers() - 1]
startPos = Point3(-(self.StageHalfWidth * m), pickY(), 0)
stopPos = Point3(self.StageHalfWidth * m, pickY(), 0)
if rng.choice([0, 1]):
startPos, stopPos = stopPos, startPos
walkIval.append(self.getSuitWalkIval(startPos, stopPos, rng))
ival.append(walkIval)
ival.start()
self.suitWalkIval = ival
示例2: MazeSuit
# 需要导入模块: from direct.showbase.RandomNumGen import RandomNumGen [as 别名]
# 或者: from direct.showbase.RandomNumGen.RandomNumGen import choice [as 别名]
#.........这里部分代码省略.........
elif self.DIR_DOWN == dir:
TY -= 1
elif self.DIR_LEFT == dir:
TX -= 1
elif self.DIR_RIGHT == dir:
TX += 1
return (TX, TY)
def _MazeSuit__chooseNewWalkDirection(self, unwalkables):
if not self.rng.randrange(self._walkSameDirectionProb):
(newTX, newTY) = self._MazeSuit__applyDirection(self.direction, self.TX, self.TY)
if self.maze.isWalkable(newTX, newTY, unwalkables):
return self.direction
if self.difficulty >= 0.5:
if not self.rng.randrange(self._walkTurnAroundProb):
oppositeDir = self.oppositeDirections[self.direction]
(newTX, newTY) = self._MazeSuit__applyDirection(oppositeDir, self.TX, self.TY)
if self.maze.isWalkable(newTX, newTY, unwalkables):
return oppositeDir
candidateDirs = [
self.DIR_UP,
self.DIR_DOWN,
self.DIR_LEFT,
self.DIR_RIGHT]
candidateDirs.remove(self.oppositeDirections[self.direction])
while len(candidateDirs):
dir = self.rng.choice(candidateDirs)
(newTX, newTY) = self._MazeSuit__applyDirection(dir, self.TX, self.TY)
if self.maze.isWalkable(newTX, newTY, unwalkables):
return dir
candidateDirs.remove(dir)
return self.oppositeDirections[self.direction]
def getThinkTimestampTics(self, curTic):
if curTic < self.nextThinkTic:
return []
else:
r = range(self.nextThinkTic, curTic + 1, self.ticPeriod)
self.lastTicBeforeRender = r[-1]
return r
def prepareToThink(self):
self.occupiedTiles = [
(self.nextTX, self.nextTY)]
def think(self, curTic, curT, unwalkables):
self.TX = self.nextTX
self.TY = self.nextTY
self.lastDirection = self.direction
self.direction = self._MazeSuit__chooseNewWalkDirection(unwalkables)
(self.nextTX, self.nextTY) = self._MazeSuit__applyDirection(self.direction, self.TX, self.TY)
self.occupiedTiles = [
(self.TX, self.TY),
(self.nextTX, self.nextTY)]
if curTic == self.lastTicBeforeRender:
示例3: MazeAI
# 需要导入模块: from direct.showbase.RandomNumGen import RandomNumGen [as 别名]
# 或者: from direct.showbase.RandomNumGen.RandomNumGen import choice [as 别名]
#.........这里部分代码省略.........
elif dir == Globals.North:
if sy == self.ysize - 1:
return None
if self.map[sy][sx].bits & Globals.North == 0:
return None
if self.map[sy + 1][sx].bits != Globals.AllDirs:
return None
self.map[sy][sx].bits &= ~Globals.North
self.map[sy + 1][sx].bits &= ~Globals.South
return (sx, sy + 1, dir)
elif dir == Globals.East:
if sx == self.xsize - 1:
return None
if self.map[sy][sx].bits & Globals.East == 0:
return None
if self.map[sy][sx + 1].bits != Globals.AllDirs:
return None
self.map[sy][sx].bits &= ~Globals.East
self.map[sy][sx + 1].bits &= ~Globals.West
return (sx + 1, sy, dir)
assert False
def __findEmptySquare(self):
""" Finds an empty square next door to a non-empty square, and
starts a new path. """
if self.numSquares == self.xsize * self.ysize - 1:
# All squares are still empty.
sx = self.random.randint(0, self.xsize - 1)
sy = self.random.randint(0, self.ysize - 1)
dir = self.random.choice(Globals.AllDirsList)
return (sx, sy, dir)
# First, get the map squares in random order.
ylist = list(range(self.ysize))
xlist = list(range(self.xsize))
self.random.shuffle(ylist)
self.random.shuffle(xlist)
for sy in ylist:
for sx in xlist:
if self.map[sy][sx].bits != Globals.AllDirs:
continue
if sy > 0 and self.map[sy - 1][sx].bits != Globals.AllDirs:
return (sx, sy - 1, Globals.North)
elif sy < self.ysize - 1 and self.map[sy + 1][sx].bits != Globals.AllDirs:
return (sx, sy + 1, Globals.South)
elif sx > 0 and self.map[sy][sx - 1].bits != Globals.AllDirs:
return (sx - 1, sy, Globals.East)
elif sx < self.xsize - 1 and self.map[sy][sx + 1].bits != Globals.AllDirs:
return (sx + 1, sy, Globals.West)
self.drawMap()
assert False
def makeCollisionWalls(self):
""" Creates and returns a scene graph that contains a
collision wall for each West and South wall in the maze, for
the purposes of determining visibility. """
root = self.__makeCollisionQuadtree(0, 0, self.xsize, self.ysize)
root.flattenLight()
return root