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

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

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

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

Q&A

0回答

1164閲覧

can't set attribute を解決したいです。

abeyuuki

総合スコア0

Python 3.x

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

0グッド

0クリップ

投稿2020/11/01 05:00

前提・実現したいこと

can't set attribute を解決したいです。
私のコードはとても長くて汚いものですが、もし助言をいただけるとありがたいです。

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

AttributeError: can't set attribute
エラーメッセージ
Traceback (most recent call last):
File "c:/Users/###########/Downloads/19#############/Excbsys.py", line 47, in <module>
combat_system(Monster1=Monster01,Monster2=Monster02)
File "c:/Users/###########/Downloads/19#############/Excbsys.py", line 12, in combat_system
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power**2 / Monster2.Offensive_power)*0.8))
AttributeError: can't set attribute

該当のソースコード

Excbsys.py

import hakyuuPlayerIO as hIO
import random
import collections
from extra import PocketMonster

def combat_system(Monster1,Monster2):
Monster1_Initiative=random.uniform(0, 1)
Monster2_Initiative=random.uniform(0,1)

if Monster1_Initiative <= Monster2_Initiative:
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power2 / Monster2.Offensive_power)*0.8))
while Monster1.Hit_point==0 or Monster2.Hit_point==0:
if Monster1.Quickness <= Monster2.Quickness:
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power
2 / Monster2.Offensive_power)*0.8))
Monster2.Hit_point -= (+(Monster1.Offensive_power - (Monster2.Defense_power2 / Monster1.Offensive_power)*0.8))
else:
Monster2.Hit_point -= (+(Monster1.Offensive_power - (Monster2.Defense_power
2 / Monster1.Offensive_power)*0.8))
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power2 / Monster2.Offensive_power)*0.8))
else:
Monster2.Hit_point -= (+(Monster1.Offensive_power - (Monster2.Defense_power
2 / Monster1.Offensive_power)*0.8))
while Monster1.Hit_point==0 or Monster2.Hit_point==0:
if Monster1.Quickness <= Monster2.Quickness:
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power2 / Monster2.Offensive_power)*0.8))
Monster2.Hit_point -= (+(Monster1.Offensive_power - (Monster2.Defense_power
2 / Monster1.Offensive_power)*0.8))
else:
Monster2.Hit_point -= (+(Monster1.Offensive_power - (Monster2.Defense_power2 / Monster1.Offensive_power)*0.8))
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power
2 / Monster2.Offensive_power)*0.8))

if Monster1.Hit_point==0:
return 2
elif Monster2.Hit_point==0:
return 1
else:
return 0

if name=="main":
fileHandle2=open("outputFile.txt","r")
List = []
for w in range(6):
List.append(hIO.readPlayerFromFile(fileHandle2))
fileHandle2.close()
Monster01 = random.choice(List)
Monster02 = random.choice(List)
print(Monster01)
print(Monster02)
combat_system(Monster1=Monster01,Monster2=Monster02)

試したこと

考えてみましたが何が悪いのかわかず、調べてもみましたがどのサイトも自分のエラーと似ているものが見つからませんでした。
ここに問題に対して試したことを記載してください。

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

使用しているエディタはVs codeです。
使用しているパソコンはWindows10です。
ここにより詳細な情報を記載してください。
#importするコード
hakyuuPlayerIO.py

import collections
from extra import PocketMonster
import random

def modifyRandomly(fValue, percentage):
return fValue**round(random.uniform(1-1float(percentage)/100,1+1float(percentage)/100 ),3)

def createRandomPlayer(nameInit="noname",Offensive_powerInit=-1,Defense_powerInit=-1,QuicknessInit=-1,Hit_pointInit=-1,Special_attack_powerInit=-1,Special_defense_powerInit=-1):
if(Offensive_powerInit==-1):Offensive_powerInit=random.randint(0, 101)
if(Defense_powerInit==-1):Defense_powerInit=random.randint(0, 101)
if(QuicknessInit==-1):QuicknessInit=random.randint(0, 11)
if(Hit_pointInit==-1):Hit_pointInit=random.randint(0, 51)
if(Special_attack_powerInit==-1):Special_attack_powerInit=random.randint(0, 101)
if(Special_defense_powerInit==-1):Special_defense_powerInit=random.randint(0,101)

randomPokemon=PocketMonster(name=nameInit,Offensive_power=Offensive_powerInit, Defense_power=Defense_powerInit, Quickness=QuicknessInit,Hit_point=Hit_pointInit, Special_attack_power= Special_attack_powerInit, Special_defense_power=Special_defense_powerInit) return randomPokemon

#receives a file that has already been open in fileHandle
def writePlayerToFile(fileHandle,pokemon):
fileHandle.write(pokemon.name+"\n")
fileHandle.write(str(pokemon.Offensive_power)+"\n")
fileHandle.write(str(pokemon.Defense_power)+"\n")
fileHandle.write(str(pokemon.Quickness)+"\n")
fileHandle.write(str(pokemon.Hit_point)+"\n")
fileHandle.write(str(pokemon.Special_attack_power)+"\n")
fileHandle.write(str(pokemon.Special_defense_power)+"\n")

#receives a file that has already been open in fileHandle
def readPlayerFromFile(fileHandle):
nameInit=fileHandle.readline().strip()
Offensive_powerInit=float(fileHandle.readline().strip())
Defense_powerInit=float(fileHandle.readline().strip())
QuicknessInit=int(fileHandle.readline().strip())
Hit_pointInit=int(fileHandle.readline().strip())
Special_attack_powerInit=float(fileHandle.readline().strip())
Special_defense_powerInit=float(fileHandle.readline().strip())

return PocketMonster(name=nameInit, Offensive_power=Offensive_powerInit, Defense_power=Defense_powerInit, Quickness=QuicknessInit, Hit_point=Hit_pointInit, Special_attack_power= Special_attack_powerInit, Special_defense_power=Special_defense_powerInit)

#importするコード
extra.py

import collections

PocketMonster = collections.namedtuple("PocketMonster","name Offensive_power Defense_power Quickness Hit_point Special_attack_power Special_defense_power")

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

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

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

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

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

y_waiwai

2020/11/01 05:04

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問