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

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

新規登録して質問してみよう
ただいま回答率
85.48%
文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

644閲覧

Pythonで作ったゲームのエラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/21 13:49

編集2020/08/21 13:56

前提・実現したいこと

「独学プログラマー」コーリー・アルソフの本を使ってPythonを勉強中に戦争(War)というゲームのコードを本に沿って書いたのですがエラーが出てしまいました。分かる方がいましたら直し方を教えてもらえないでしょうか?

発生している問題・エラーメッセージ

Traceback (most recent call last): File "C:\Users\nogiz\OneDrive\ドキュメント\WAR_GAME.py", line 91, in <module> game=Game() File "C:\Users\nogiz\OneDrive\ドキュメント\WAR_GAME.py", line 53, in __init__ self.deck=Deck() File "C:\Users\nogiz\OneDrive\ドキュメント\WAR_GAME.py", line 38, in __init__ self.cards.append(Card(i.j)) AttributeError: 'int' object has no attribute 'j'

該当のソースコード

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): """スート(マーク)も値も整数値です""" 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("プレーヤー1の名前") name2=input("プレーヤー2の名前") self.deck=Deck() self.p1=Player(name1) self.p2=Player(name2) def wins(self,winner): w="このラウンドは{}が勝ちました" w=w.format(winner) print(w) def draw(self,p1n,p1c,p2n,p2c): d="{}は{},{}は{}を引きました" d=d.format(p1n,p1c,p2n,p2c) print(d) def play_game(self): cards=self.deck.cards print("戦争を始めます!") while len(cards)>=2: m="qで終了、それ以外のキーで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("ゲーム終了、{}の勝利です!".format(win)) def winner(self,p1,p2): if p1.wins>p2.wins: return p1.name if p1.wins<p2.wins: return p2.name return "引き分け!" game=Game() game.play_game()

試したこと

最後のコード「game=Game() game.play_game()」を一行したの行に書き直しましたが駄目でした。

補足情報(FW/ツールのバージョンなど)

Pythonのバージョンは(Python 3.8.1)です。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

AttributeError: 'int' object has no attribute 'j'

int のオブジェクトに jと言うアトリビュートはありません、といってます

self.cards.append(Card(i.j))

iにはなにが入ってて、i.j とはなにをどうしたいというはなしなのか考えてみよう

#タイプミスってやつなのねw

投稿2020/08/21 14:25

編集2020/08/21 14:28
y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/21 14:43

回答ありがとうございます。 これを参考に少し自分で考えて直しています。
y_waiwai

2020/08/21 14:51

あとで気がついたけど、ピリオドとコンマを間違えただけなのね
退会済みユーザー

退会済みユーザー

2020/08/21 15:13

私も今気が付いて直したら正常に動きました。 アドバイスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問