我正在努力更好地理解该__str__
函数的正确用法.假设我有一个名为Character的非常简单的类用于游戏,如下所示:
class Character(object):
""" A game character. """
def __init__(self, name):
self.name = name
self.poisoned = False
self.strength = random.randrange(10, 20)
self.max_strength = self.strength
self.dexterity = random.randrange(10, 20)
self.max_dexterity = self.dexterity
self.hit_points = 100
self.spell_points = 100
self.weapon = []
self.spell = []
self.items = []
self.aura = []
self.xp = 0
Run Code Online (Sandbox Code Playgroud)
在学习该__str__
函数之前,我会定义一个被调用的类的方法print_stats(self)
,它将打印字符统计信息Character.print_stats()
.在了解之后__str__
,似乎这是一个定义和显示对象统计信息的函数,类似于我将要做的print_stats(self)
...但是在使用它并了解返回的值必须是字符串而不包含整数,看来我的假设是错误的.
所以现在我的问题是什么样的好用法__str__
?我提供的示例会从使用该功能中获益吗?
我目前正在研究John Zelle的Python编程:计算机科学概论,并在第10章遇到困难.我在理解这个练习的原因和方法时遇到了一个概念性问题,需要一些帮助才能解决问题.练习要求我创建一个程序,使用命名的类显示n个卡,Card
并需要以下方法.它也应该在生成n个随机卡的应用程序中调用:
__init__(self, rank, suit):
getRank(self)
getSuite(self)
BJValue(self)
__str__(self)
尽管这应该是非常容易的,但是我试图实现这个课程.我创建了一个简单的应用程序,可以生成一副52张牌,提示用户他们想要的牌数,然后用这些卡填充手牌.一旦生成手,我就无法看到我将从卡特定类中受益.到目前为止,这是我的工作代码:
import random
class Card:
def __init__(self, rank, suite):
self.rank = rank
self.suite = suite
def getRank(self):
return self.rank
def getSuite(self):
return self.suite
def BJValue(self):
if self.rank == 'Ace':
return 1
elif self.rank == 'Jack' or self.rank == 'Queen' or self.rank == 'King':
return 10
else:
return int(self.rank)
def __str__(self):
return ('{0} of {1}'.format(self.rank, self.suite))
def shuffled_deck():
deck = []
for suite in ['Clubs', 'Diamonds', …
Run Code Online (Sandbox Code Playgroud) 我无法找到答案,为什么我为瓷砖地图制作的瓷砖板在使用libGDX时在屏幕上移动时会产生垂直的白线和抖动的水平线.
这是一段显示白色垂直线的视频:https://www.youtube.com/watch?v = 34V64WacMo4 这是一个显示水平抖动线:https://www.youtube.com/watch?v = LizBZzxmy0
为了比较,这是我今年早些时候没有使用GDX的项目.你可以看到瓷砖地图顺利移动,没有任何明显的看法:https://www.youtube.com/watch?v = VvdPdA_253k
当我将这个非常好的瓷砖放入我们的引擎时,您可以看到各个瓷砖周围的外观.即使我在当前引擎中使用此项目中完全相同的tileheet也是如此.
我和我的伙伴都在调查导致这种情况的原因,即使我们找到了几个可能的答案,但没有任何效果.我们目前的解决方案感觉非常错误.我使用Photoshop来创建我的瓷砖表.我保持非常有条理,这样当它被导入到Tiled时,它是有效的.这是我一直在使用的测试表,用于创建上述示例的测试表:
作为一个实验,我的朋友创建了一些简单的32x32磁贴,并使用TexturePacker打包它们,然后在Tiled中使用它们.最终结果就是这个文件:
如果你在图像编辑器中打开该文件,你会发现没有意义,瓷砖甚至不均匀.蓝色和绿色瓷砖是34x34,而红色和黄色是35x34.他说在TexturePacker中他已经将填充和间距都定义为2.所以首先我很困惑32x32磁贴如何以各种大小输出.然后他说他将其导入Tiled并将导入设置设置为33x33,间距和填充均为1.使用这些图块创建的地图似乎在我们的引擎中有效.这引起了一些问题.
首先,我不想使用TexturePacker,因为我不是一次创建一个图块,我有一个有组织的布局创建的主图块表.当导入到平铺时,TexturePacker的输出是不可行的混乱.我觉得我应该能够手工创建有组织的瓷砖表而不必依赖TexturePacker.此外,使用TexturePacker意味着我必须导出我的主表,然后手动将其刻录成单个图像,涉及的工作量会以指数方式增加工作量,因此避免这样做是最好的.
我还发现输出,将32x32瓷砖转换为34x34和35x34瓷砖会扭曲我的图形.这不是正确的方法.如何创建在平铺地图中使用并在GDX中使用的平铺图表,其显示方式与我在上面的第二个视频链接中演示的平铺图像一样流畅?
如果有兴趣,这是我们的应用程序的当前工作分支:https://github.com/vinbreauX/DULES
我写了一个简单的脚本来帮助我更好地理解使用类.它为游戏生成随机字符.我定义了该对象,然后在该对象上调用一个函数来打印出生成的字符.在印刷块的末尾,有一个无关的"无",我不确定它的来源以及为什么要打印.这是示例输出:
ted
Strength : 20
Dexterity : 17
Hit Points: 100
Aura : 100
Weapon :
Spell :
Item :
Element :
--------------------
None
Run Code Online (Sandbox Code Playgroud)
在我的代码,最后一行player.stats()
就是print "-" * 20
这是正上方"无"显示.这是定义对象的代码:
class Player(object):
def __init__(self, name):
self.name = name
self.strength = randint(15, 20)
self.dexterity = randint(15, 20)
self.hit_points = 100
self.aura = 100
self.weapon = " "
self.spell = " "
self.item = " "
self.element = " "
def stats(self):
print "\n"
print self.name
print "Strength : %d" …
Run Code Online (Sandbox Code Playgroud) 我是Javascript的新手,就像今天刚开始使用Javascript一样.我正在测试一本书第一章中的一些非常基本的代码,并在第一个例子中遇到了问题.我在Notepad ++中编写了代码,但即使在该程序中,我的第二行注释是黑色而不是绿色.为什么</noscript>
渲染后的线条正确?
我浏览器的输出呈现为: Hello World! // Display a message dialog after the page has loaded.
<!DOCTYPE html>
<html>
<body>
<div id = "panel">
<script type = "text/javascript">
// Dynamically write a text string as the page loads.
document.write("Hello World!");
</script>
<noscript>Javascript is Not Enabled!</noscript>
// Display a message dialog after the page has loaded.
<body onload = " window.alert('Document Loaded!');">
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) python ×3
python-3.x ×2
class ×1
comments ×1
function ×1
graphics ×1
javascript ×1
libgdx ×1
methods ×1
python-2.7 ×1
sprite ×1
tiling ×1