質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

戦争ゲームの”c2”の引数について

yousann
yousann

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

2回答

0評価

0クリップ

322閲覧

投稿2022/04/22 09:06

編集2022/04/24 16:22

下記の戦争ゲームのCardクラス内における”c2”の引数の値はどこから来るのでしょうか?
考えてもピンと来なかったので解説をよろしくお願いいたします。

python3

from random import shuffle class Card: suits = ["spades", "hearts", "diamonds", "clubs"] values = [None, None,"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"] def __init__(self, v, s): """suit + value are ints""" self.value = v self.suit = s def __lt__(self, **c2**): if self.value < c2.value: return True if self.value == c2.value: if self.suit < c2.suit: return True else: return False return False def __gt__(self, c2): if self.value > c2.value: return True if self.value == c2.value: if self.suit > c2.suit: return True else: return False return False def __repr__(self): v = self.values[self.value] +\ " of " + \ self.suits[self.suit] return v class Deck: def __init__(self): self.cards = [] for i in range(2, 15): for j in range(4): self.cards\ .append(Card(i, j)) shuffle(self.cards) def rm_card(self): if len(self.cards) == 0: return return self.cards.pop() class Player: def __init__(self, name): self.wins = 0 self.card = None self.name = name class Game: def __init__(self): name1 = input("p1 name ") name2 = input("p2 name ") self.deck = Deck() self.p1 = Player(name1) self.p2 = Player(name2) def wins(self, winner): w = "{} wins this round" w = w.format(winner) print(w) def draw(self, p1n, p1c, p2n, p2c): d = "{} drew {} {} drew {}" d = d.format(p1n, p1c, p2n, p2c) print(d) def play_game(self): cards = self.deck.cards print("beginning War!") while len(cards) >= 2: m = "q to quit. Any " + \ "key to play:" response = input(m) if response == 'q': break p1c = self.deck.rm_card() p2c = self.deck.rm_card() p1n = self.p1.name p2n = self.p2.name self.draw(p1n, p1c, p2n, p2c) if p1c > p2c: self.p1.wins += 1 self.wins(self.p1.name) else: self.p2.wins += 1 self.wins(self.p2.name) win = self.winner(self.p1, self.p2) print("War is over.{} wins" .format(win)) def winner(self, p1, p2): if p1.wins > p2.wins: return p1.name if p1.wins < p2.wins: return p2.name return "It was a tie!" game = Game() game.play_game()

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

mather

2022/04/22 09:40

** という記号は強調するために追加したものでしょうか?このままではSyntaxErrorになります。 実際の動作するコードを提示してください。
TakaiY

2022/04/22 12:26 編集

「考えてもピンと来なかった」とのことですが、調べてみたのでしょうか。 気になっている。 c2 という変数を含んでいる関数は、`__lt__`と`_gt__`という特殊なメソッド(関数) ですが、これらの意味を調べていますか。
yousann

2022/04/22 11:44

matherさん 修正依頼ありがとうございます。修正させていただきました。 TkakaiYさん ご指摘ありがとうございます。 特殊メソッドがかかわっているのだろうと思って1度調べたのですが。 お恥ずかしい話、つながりがよくわからないため他の要因かと思ったので質問させていただきました。 matherさんにご指摘していただいたので、現在再度理解をするために調べています。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。