我正在尝试为我的游戏创建两个精灵,一个是$name= mysqli_real_escape_string($con,$_POST['name']);
$password= mysqli_real_escape_string($con,$_POST['password']);
$confirm= mysqli_real_escape_string($con,$_POST['confirm']);
$first= mysqli_real_escape_string($con,$_POST['first']);
$email= mysqli_real_escape_string($con,$_POST['email']);
$hash = md5(rand(0,1000));
$mysql_get_users = mysqli_query("SELECT * FROM userInfo where name = '$name'");
if (empty($name)) {
echo "Name is required\n";
}
else if (mysqli_num_rows($mysql_get_users) > 0){
echo "Username already exists";
}
else if (empty($password)){
echo "Password is required\n";
}
else if (empty($confirm)){
echo "Please confirmed the password\n";
}
else if (empty($first)){
echo "First name is required\n";
}
else if (!preg_match("/^[a-zA-Z'-]+$/",$first)){
echo "First name should only contains letters";
}
else if ($password != $confirm){
echo "Password does not match confirmation";
}
else{
$sql = "INSERT INTO userInfo (name, password, first, email, hash) VALUES ('$name', '$password', '$first', '$email', '$hash')";
if(!mysqli_query($con, $sql)){
echo "Unable to save the data to the database.";
}
else{
echo "Your account has been made, a verification email has been sent to you.";
$to = $email;
$subject = 'Signup| Verification';
$message = '
Thank you for signing up!
Your account has been created.
Please click this link to activate your account:
$headers = 'From:noreply@app.com' . "\r\n";
mail($to, $subject, $message, $headers);
}
}
}
mysqli_close($con);
?>
,另一个是Player1
,因此它们具有非常相似的属性。我正在努力弄清楚我如何能够将Player2
课程的所有方法用于我的Player1
课程。
Player2
创建class Player2(pygame.sprite.Sprite):
def __init__(self):
Player1.__init__(self)
self.rect.x = 400
self.walkImages = ["p2 walk/Run (1).png", "p2 walk/Run (2).png", "p2 walk/Run (3).png", "p2 walk/Run (4).png", "p2 walk/Run (5).png", "p2 walk/Run (6).png", "p2 walk/Run (7).png",
"p2 walk/Run (8).png"]
self.idleImages = ["p2 idle/Idle (1).png", "p2 idle/Idle (2).png", "p2 idle/Idle (3).png", "p2 idle/Idle (4).png", "p2 idle/Idle (5).png", "p2 idle/Idle (6).png", "p2 idle/Idle (7).png",
"p2 idle/Idle (8).png", "p2 idle/Idle (9).png", "p2 idle/Idle (10).png"]
def update(Player1, blocksGroup):
pass
课程时,我会继承Player2
。但是,使用我的更新方法,理论上它与Player1
s相同。我将如何使用Player1
的方法进行更新?
以下是Player1
的更新方法:
Player1
答案 0 :(得分:3)
你还没有真正说过Player1
和Player2
类是如何不同的,但假设你有充分的理由我建议创建一个名为{{的基类1}}并将其用作这两个其他类的基类。
这将使他们非常清楚地分享行为,并且只需要在每个子类的方法中实现差异。
我之所以说“假设你有充分的理由”有两个类的原因,是因为如果它们之间的唯一区别是它们包含的数据,例如,你不需要有两个类来做 - 相反,只需定义(单个)类的PlayerBase
方法,使其接受提供此数据的参数,然后在必要时将其作为类实例数据通过__init__()
参数存储,该参数默认传递给所有常规方法
维基百科关于 Objects and classes的文章中有一个标题为Object-oriented Programming (OOP)的部分,其中讨论了两者之间的差异,这些差异可能会让您更深入地了解何时应该使用其中一种做事。
答案 1 :(得分:0)
如果Player2
继承自Player1
且update
方法完全相同,则您无法为update
定义Player2
。
在这种情况下,当update
对象调用Player2
时,它将使用Player1
中的继承定义,self
将引用Player2
实例。