我正在创建一个“宠物游戏”,以便在python中训练我的计算技能(这只是一个借口:因为它很有趣)。
我决定做一个简单的RPG游戏。为此,我定义了类英雄:
class hero:
#Common class for the main character
def __init__(self, name, lvl, str, agi, vit, int, luk, prof):
self.name = name
self.lvl = lvl
self.str = str
self.agi = agi
self.vit = vit
self.int = int
self.luk = luk
self.prof = prof
self.exp = 0
if prof==1:
self.dmg=3*(self.str)+1*(self.agi)
self.skillList=['heavySlash01']
self.strUp=3
self.agiUp=1
self.vitUp=2
self.intUp=1
self.lukUp=1
if prof==2:
self.dmg=1*(self.str)+3*(self.agi)
self.skillList=['doubleAttack02']
self.strUp=1
self.agiUp=3
self.vitUp=1
self.intUp=1
self.lukUp=2
if prof==3:
self.dmg=4*(self.int)
self.skillList=['fireBall03']
self.strUp=1
self.agiUp=1.5
self.vitUp=0.5
self.intUp=3.5
self.lukUp=1.5
self.hp=19*vit
然而,我注意到,每当英雄升级,我需要分别更新其所有状态。例如,我需要手动更新hero.dmg
。更改agi
,str
和int
并未像我预期的那样自动更改dmg
。
我的问题是:有没有办法让dmg
根据其公式自动更新?
答案 0 :(得分:1)
将dmg
设为属性,而不是设置__init__
功能。 __init__
仅在初始化实例时运行,这就是事情未更新的原因。但是,只要访问该属性,将其设为属性就会运行该方法。
@property
def dmg(self):
if prof==1:
return 3*(self.str)+1*(self.agi)
if prof==2:
...
答案 1 :(得分:1)
最好在你的情况下使用继承:
<!-- block -->
<div class="row grid events-block">
<?php
$parent = $post->ID;
// query_posts('posts_per_page=15&post_type=page&post_parent='.$parent);
query_posts(array('posts_per_page'=>'1', 'post_type' => 'page', 'post_parent' => $parent, 'paged' => get_query_var('paged')));
while (have_posts()) : the_post();
?>
<!-- item -->
<div class="grid-item col-md-6 col-sm-6 col-xs-12 event-item">
<div class="date-box">
<?php echo $event_dates; ?>
</div>
<div class="event-item-text-box">
<div class="event-item-text-inner-box">
<h3 class="heading-item"><a href="#" target="_blank"><?php the_title(); ?></a></h3>
<p><?php the_excerpt(); ?></p>
</div>
</div>
</div>
<!-- item -->
<?php endwhile; ?>
<?php
// Reset the post to the original after loop. otherwise the current page becomes the last item from the while loop.
// https://codex.wordpress.org/Function_Reference/wp_reset_query
wp_reset_query();
?>
</div>
<!-- block -->
<?php $args = array(
'base' => '%_%',
'format' => '?paged=%#%',
'total' => 1,
'current' => 0,
'show_all' => false,
'end_size' => 1,
'mid_size' => 2,
'prev_next' => true,
'prev_text' => __('« Previous'),
'next_text' => __('Next »'),
'type' => 'plain',
'add_args' => false,
'add_fragment' => '',
'before_page_number' => '',
'after_page_number' => ''
); ?>
<?php echo paginate_links( $args ); ?>