我正在创建一个骰子游戏,您可以在其中打印出骰子的面孔(我是初学者) 而且必须有2个班级一个称为DiceGame的类。它有一个叫做play的方法,可以显示骰子的脸。还有一个叫做Die的课程。它具有一个名为face的属性,该属性保存了脸部图像。有一种叫做roll的方法,可以随机设置脸部。
import random
class Die(object):
def __init__ (self, face =None, faceValue = None):
self.face = face
self.faceValue = faceValue
def roll(self):
for c in range(1,2):
random.randint(1,2)
if random == '1':
self.face = (' ------\n| |\n| o |\n| |\n ------')
def __str__(self):
return str(self.face)
class DiceGame(Die):
def play(self):
print(self.face)
go = DiceGame(Die)
print(go.play)
输出为
bound method DiceGame.play of <__main__.DiceGame object at 0x7fd060db0358>>
它应该打印模面。 (我是堆栈溢出的新手。不确定为什么我的代码要这样格式化。)
答案 0 :(得分:0)
您的代码有几个问题:
在第go = DiceGame(Die)
行上,类Die将作为面发送到构造函数中。尝试使用go = DiceGame()
。
您不会在第print(go.play)
行调用方法play。尝试使用go.play()
。
random.randint(1,2)
返回整数对象。与“ 1”进行比较将始终导致False。
在您的代码中,您实际上并没有滚动。
固定代码:
import random
class Die(object):
def __init__(self, face=None, faceValue=None):
self.face = face
self.faceValue = faceValue
def roll(self):
self.faceValue = random.randint(1, 6)
if self.faceValue == 1:
self.face = (
' ------\n'
'| |\n'
'| o |\n'
'| |\n'
' ------')
elif self.faceValue == 2:
self.face = (
' ------\n'
'| o |\n'
'| |\n'
'| o |\n'
' ------')
elif self.faceValue == 3:
self.face = (
' ------\n'
'| o |\n'
'| o |\n'
'| o|\n'
' ------')
elif self.faceValue == 4:
self.face = (
' ------\n'
'| o o|\n'
'| |\n'
'| o o|\n'
' ------')
elif self.faceValue == 5:
self.face = (
' ------\n'
'| o o|\n'
'| o |\n'
'| o o|\n'
' ------')
elif self.faceValue == 6:
self.face = (
' ------\n'
'| o o|\n'
'| o o|\n'
'| o o|\n'
' ------')
def __str__(self):
return str(self.face)
class DiceGame(Die):
def play(self):
self.roll()
print(self.face)
go = DiceGame()
go.play()
替代滚动方法可以是:
def roll(self):
self.face_value = random.randint(1, 6)
self.face = u"⚀⚁⚂⚃⚄⚅"[self.face_value-1]
,但是您可能需要将# -*- coding: utf-8 -*-
作为代码的第一行来表示编码。
答案 1 :(得分:0)
我同意Jan,尽管我会在DiceGame类中将方法play
更改为返回self.face
,而不仅仅是打印它。相反,我会print(go.play())
。
import random
class Die(object):
def __init__ (self, face =None, faceValue = None):
self.face = face
self.faceValue = faceValue
def roll(self):
self.faceValue = random.randint(1, 6)
if self.faceValue == 1:
self.face = (
' ------\n'
'| |\n'
'| o |\n'
'| |\n'
' ------')
elif self.faceValue == 2:
self.face = (
' ------\n'
'| o |\n'
'| |\n'
'| o |\n'
' ------')
elif self.faceValue == 3:
self.face = (
' ------\n'
'| o |\n'
'| o |\n'
'| o|\n'
' ------')
elif self.faceValue == 4:
self.face = (
' ------\n'
'| o o|\n'
'| |\n'
'| o o|\n'
' ------')
elif self.faceValue == 5:
self.face = (
' ------\n'
'| o o|\n'
'| o |\n'
'| o o|\n'
' ------')
elif self.faceValue == 6:
self.face = (
' ------\n'
'| o o|\n'
'| o o|\n'
'| o o|\n'
' ------')
def __str__(self):
return str(self.face)
class DiceGame(Die):
def play(self):
self.roll()
return self.face
go = DiceGame()
print(go.play())