寄り道05

今回の目標

Raspberry Piの準備(OSの準備)

今回の結果

Raspberry Piの準備(OSの準備)
→Micro SDがタイプCアダプタから抜けない事故がありましたが解決できました。

次回の目標

LinuCの自習(10ページ)

Raspberry Piの準備(OSの準備)

 OSを用意するのに時間がかかったのではなく、アダプタが固すぎてMicroSDの取り外しが難しくなっただけです。
 参考にした記事が少し古かったらしく、最新のをダウンロードしたところ、初期設定の項目が減っていました。Visual Studio Codeは、左上のアプリのアイコン→設定→Recommended Softwareの項目でインストール可能でした。
 また、OSのないパソコンでOSを入れることは不可能なので、もう一台必要です。
 OSのインストールされてないパソコンにOSを入れるのは、昔だと大変だったみたいです。

余談:授業中に寝るとどうなるのか

 授業中に寝ると、今の私みたいになります。どのような状態かは授業中に寝ている人を見れば明らかです。
 因みに、授業中に寝ている生徒を叱る先生はいい先生です。成長したらわかることですが。
(少なくとも、生徒のために叱ってくれる先生はいい先生です。しかし、やる気のない生徒をやる気にさせる能力のある先生か否かは別なので、ほとんどの場合は起こす必要がないのが悲しい現状です)

寄り道04

今回の目標

辞書型のキーに整数を置けるかなど試して遊ぶ。

今回の結果

辞書型のキーに整数を置けるかなど試して遊ぶ。
→いろいろ学べたので残す。

次回の目標

ラズベリーパイが届かない場合は、pythonでmatplotlibについてさわる。

辞書型のキーに整数を置けるかなど試して遊ぶ。

 普通に動くし大丈夫でした。冷静に考えると、辞書型でなくて良かったうえ、コード書くときに不便だと思います(辞書型のkeyは英数字が基本です。また、lと1が区別がつきにくいように、読み間違えのリスクがあるので、ほかの方々が読みやすいように最大限配慮したコードを書きましょう。特に私の場合)
 keyの値を1と"1"で作ってみましたが、問題なく動くことからpythonでは文字型の1と数値型の1は別のものとして扱われることが確認できます。

余談:一番強欲な生き物とは

 何をするにも、必要最低限のお金は必要です。生きてるだけでもお金はかかります。
 私の場合は、趣味のゲームにお金がいります。
 猫は食べ物を欲しいとねだってきますが、それ以上のものは何も求めてきません(例外もありますが)
 動物からしたら、人間が一番強欲なのかもしれません。

寄り道02

今回の目標

教科書を読み進める

今回の結果

教科書を読み進める
→26ページまで読んだ

次回の目標

CCNAの問題を自分用に作る。
教科書を読み進める(36ページまで)

教科書を読み進める

 今回は放置していた本をようやく読み始めました。
 以下今回勉強した用語です。次回時に言語化できるかの確認用です。
カーネル
ディストリビューション
(Red Hat系とDebian系はやっていることは同じです)

余談:言語化

 他者に説明できるのはもちろんのこと、人に質問することやGoogle先生に頼る時に用語自体を知ってないと調べようがありません。
 聞くは一時の恥聞かぬは一生の恥ともいいますが、実際は多少の用語を知っていないと聞くこともできません。
 今回は用語の説明のわからない単語があったりすると困ったことがありました。これはいいことです。
 理由は、わからないこと自体を認識できるからです。
 無知の自覚は自分を一番成長させます。知らないことを恥ずかしいと思って放置すると、今の私になります。
 わからないことが増えたということは、認識できる範囲が増えたということです。素直に喜びましょう。

寄り道01

寄り道01

 以前は管理者権限がないので、Haskellの環境構築ができませんでした。
 Ubuntu仮想環境上でようやくHaskell Platformをインストールできました。
 なぜかデフォルトでは言語選択をJapaneseにしているにもかかわらず、ローマ字入力ができない状態になっていました。
https://novicengineering.com/ubuntu_mozc_install/
(非常に参考になりました)
 時間がなかったので詳しくは書けませんでした。悲しいです。
 

Pythonゲーム作りの過程 その21

今回の目標

MROについて読み進める

今回の結果

MROについて読み進める
→未達成(312ページの内容が読み込めていない チャプター6を読まないといけない)

次回の目標

デコレータについて読み進める

 今日は参照透過性について調べていました。
 以下、今回のコードになります(変更箇所なし)

import subprocess
import time
import csv
from playsound import playsound #メモ windows11では古めのバージョンをインストールすること。pip install playsound==1.2.2
import pygame
import random
import sys
import string

class monster:#モンスターの設計。
    def __init__(self, level):
        self.level=level
        
# 問題の入った辞書を引数に、シャッフルした選択肢と解答のリスト
def get_answer(q):#関数定義
    shuffle_kouho=q['kouho']
    #print(shuffle_kouho) 230501 こちらのprint文は取り除きました。
    random.shuffle(shuffle_kouho)
    answer_str=shuffle_kouho.index(q['answer']) #インデックスを返す。
    return [shuffle_kouho,answer_str]

# 回答者が答えた選択肢の文字列a1(A,B,C,Dとか)と正解の選択肢のインデックス(0,1,2,3とか)を引数に、一致しているときはTrue,一致しないときはFalseを返す
def sf(a1,a2):#success,failuer
    if a1==chr(65+a2):
        return 1
    else:
        return 0

# CSVのファイル名を指定して、問題が格納されたリストを返す
def csv2list(file_path):
    questions =[]
    with open(file_path, 'r',encoding="UTF-8") as f:
        reader = csv.reader(f)
        for line in reader:#ここでCSV1行ごとの処理が行われる
            #print(line)
            kouho_array = line[1].split('/') #鯏/鯵/鱒/鱚
            dict = {'question':line[0],'kouho':kouho_array,'answer':line[2],'category':line[3],'level':line[4]}
            questions.append(dict)
        
        questions.pop(0)
    return questions

#引 数:出題する問題と全問題のディクショナリ
#戻り値:出題する問題のカテゴリにあった問題のみ
def categorize_questions(category,allquestions):#変数名が組み込み関数と一致していたので、tupleからquestion_tupleに変えました。
    categorized_questions=[]
    for question_tuple in allquestions:
        if category==question_tuple['category']:
            categorized_questions.append(question_tuple)
    return categorized_questions

#このbattleは1匹のモンスターとの戦闘に関わる関数
def battle():#戦闘時の関数定義  def battle(monster):
    i=0
    mhp=40 #主人公のHP
    ehp=50 #敵モンスターのHP

    pygame.mixer.init(frequency = 44100)
    bgm_sound = pygame.mixer.Sound("../素材/sound/battle.wav")
    bgm_sound2 = pygame.mixer.Sound("../素材/sound/quiz1.wav")
    bgm_sound3 = pygame.mixer.Sound("../素材/sound/quiz2.wav")
    bgm_sound4 = pygame.mixer.Sound("../素材/sound/madamada.mp3")
    bgm_sound5 = pygame.mixer.Sound("../素材/sound/kakugo.mp3")
    bgm_sound.play()

    #問題のデータベース。ここから問題がピックアップされて出題される。
    """
    questions =[
        {'question':"「洋琴」が表す楽器はどれ?",'kouho':['ピアノ','ギター','チェロ','ハープ'],'answer':"ピアノ",'category':'漢字'},
        {'question':"ラッコを漢字で書くとどれ?",'kouho':['海鼠','海獺','海狸','海犬'],'answer':"海獺",'category':'漢字'},
        {'question':"ガーナの首都は?",'kouho':['アクラ','アピア','アテネ','アンカラ'],'answer':"アクラ",'category':'地理'},
    ]"""
    
    questions = csv2list('Dict3.csv') #questionsが1匹のモンスターに相当する
    while len(questions)>0:
            # if i==0:
            #     ran = random.randint(1,3)
            #     if ran ==2 :
            #         bgm_sound5.play()  移転しました。

        if mhp<=0:
            bgm_sound4.play() 
            print("主人公は敗北した…")
            time.sleep(2)
            break
        elif ehp<=0:
            print("モンスターは倒れた!")
            break
        else:
            this_question = questions.pop(random.randint(0,len(questions)-1)) #questions[0] とかquestions[1]とか
            # this_question = questions[random.randint(0,2)] #questions[0] とかquestions[1]とか
            #print(this_question)
            #sys.exit( )
            """
            s1="漢字出題モンスターが現れた!"
            s2=s1.replace(s1,"")
            print(s1)
            time.sleep(2)
            print(s2)
            """
            #没になった。メモリ内容が変わるだけで、画面に出力したのは変わらない。
            
            
            #print(this_question['category'],end='')
            #print("出題モンスターが現れた!")
            #print("漢字出題モンスターが現れた!")
            if i==0:#初回のみモンスター名の表示するための変数
                ran = random.randint(1,3)
                if ran ==2 :
                    bgm_sound5.play()
                print(this_question['category']+"出題モンスターが現れた")#モンスターの名前の表示
                questions=categorize_questions(this_question['category'],questions)#questionsをカテゴリ統一したものに上書きする
                time.sleep(2)
                subprocess.run('CLS',shell=True)#2秒後に消す
            # if i>0:
            #     after_question= questions[t] 
            print("debug: ", end="")
            print(this_question['question'])#ここで表示された後にシャッフルされている!!
            #print(this_question['kouho'])
            ans_list=get_answer(this_question)
            #print(ans_list)
            #ans_list は次のような形 [['紋白蝶', '紋花蝦蛄', '秋刀魚', '背赤後家蜘蛛'], 1]
            print(ans_list[0])
            for j in range(0,len(ans_list[0])):
                print(chr(65+j)+': '+ans_list[0][j])#ASCIIコードで設定しました
            """
            for question_kouho in this_question['kouho']:
                print('候補: '+question_kouho)
            """
            
            
            # ans=input()
            # if ans=="A":
            #     bgm_sound2.play()
            #     print("モンスターは30のダメージを受けた!")
            #     #bgm_sound.stop()
            #     ehp=ehp-30
            #     time.sleep(1)
            #     break
            #ans=input()
            ans=input()#答えの入力を行わせる
            if sf(ans,ans_list[1]):#ans==chr(65+ans_list[1])
                bgm_sound2.play()
                print("正解!モンスターは30のダメージを受けた!")
                #bgm_sound.stop()
                ehp=ehp-30
                time.sleep(1)
                #break
            else:
                bgm_sound3.play()
                print("主人公は30のダメージを受けた!")
                mhp=mhp-30
                time.sleep(1)
            i=i+1
            time.sleep(2)
            subprocess.run('CLS',shell=True)
        if len(questions)<=0:
            print("問題数が不足しています。戦闘を中断します。")




battle()#確認用に呼び出し

"""
while my_hp :
    mondai = monster_attack(monster) #モンスターが出題する
    my_hp,monster_hp =player_attack(mondai,kaitou) #主人公が答える
    if monster_hp <= 0 :
        monster = monster_change()
  
"""

余談:料理について

 先週に久々に自分で夕飯を作りました。
 親の苦労はこうして徐々に学んでいくのだと思います。
 親の有難味(ありがたみ)が理解できる頃には、親元を離れて一人暮らしになっていると思います。

Pythonゲーム作りの過程 その20

今回の目標

教科書を読み進める
オーバーライドとは
super()関数とは
パッキングとアンパッキング

今回の結果

教科書を読み進める
オーバーライドとは
super()関数とは
パッキングとアンパッキング
→とりあえず読んで理解した

次回の目標

MRO(Method Resolution Order : メソッド解決順序)について詳しく見ていく

オーバーライド

 オーバーライドは基底クラス、派生クラス、継承といった用語が理解できてないと説明を見てもそれらの用語で躓く状態になります。
(私の場合は、それらの用語の説明の時に脱水症状でダウンし、その後のオーバーライドの説明でよくわからなくなりました。皆様も、体調管理には気を付けましょう)

super()関数

 派生クラスで基底クラスから継承したメソッドを呼ぶ際に使う関数です。

パッキングとアンパッキング

 実際に今読んで理解しましたが、以前は実際に何に使うのかわからないので授業中上の空でした。

 以下が今回のコードです。(今回は変更したところはなし)

import subprocess
import time
import csv
from playsound import playsound #メモ windows11では古めのバージョンをインストールすること。pip install playsound==1.2.2
import pygame
import random
import sys
import string

class monster:#モンスターの設計。
    def __init__(self, level):
        self.level=level
        
# 問題の入った辞書を引数に、シャッフルした選択肢と解答のリスト
def get_answer(q):#関数定義
    shuffle_kouho=q['kouho']
    #print(shuffle_kouho) 230501 こちらのprint文は取り除きました。
    random.shuffle(shuffle_kouho)
    answer_str=shuffle_kouho.index(q['answer']) #インデックスを返す。
    return [shuffle_kouho,answer_str]

# 回答者が答えた選択肢の文字列a1(A,B,C,Dとか)と正解の選択肢のインデックス(0,1,2,3とか)を引数に、一致しているときはTrue,一致しないときはFalseを返す
def sf(a1,a2):#success,failuer
    if a1==chr(65+a2):
        return 1
    else:
        return 0

# CSVのファイル名を指定して、問題が格納されたリストを返す
def csv2list(file_path):
    questions =[]
    with open(file_path, 'r',encoding="UTF-8") as f:
        reader = csv.reader(f)
        for line in reader:#ここでCSV1行ごとの処理が行われる
            #print(line)
            kouho_array = line[1].split('/') #鯏/鯵/鱒/鱚
            dict = {'question':line[0],'kouho':kouho_array,'answer':line[2],'category':line[3],'level':line[4]}
            questions.append(dict)
        
        questions.pop(0)
    return questions

#引 数:出題する問題と全問題のディクショナリ
#戻り値:出題する問題のカテゴリにあった問題のみ
def categorize_questions(category,allquestions):#変数名が組み込み関数と一致していたので、tupleからquestion_tupleに変えました。
    categorized_questions=[]
    for question_tuple in allquestions:
        if category==question_tuple['category']:
            categorized_questions.append(question_tuple)
    return categorized_questions

#このbattleは1匹のモンスターとの戦闘に関わる関数
def battle():#戦闘時の関数定義  def battle(monster):
    i=0
    mhp=40 #主人公のHP
    ehp=50 #敵モンスターのHP

    pygame.mixer.init(frequency = 44100)
    bgm_sound = pygame.mixer.Sound("../素材/sound/battle.wav")
    bgm_sound2 = pygame.mixer.Sound("../素材/sound/quiz1.wav")
    bgm_sound3 = pygame.mixer.Sound("../素材/sound/quiz2.wav")
    bgm_sound4 = pygame.mixer.Sound("../素材/sound/madamada.mp3")
    bgm_sound5 = pygame.mixer.Sound("../素材/sound/kakugo.mp3")
    bgm_sound.play()

    #問題のデータベース。ここから問題がピックアップされて出題される。
    """
    questions =[
        {'question':"「洋琴」が表す楽器はどれ?",'kouho':['ピアノ','ギター','チェロ','ハープ'],'answer':"ピアノ",'category':'漢字'},
        {'question':"ラッコを漢字で書くとどれ?",'kouho':['海鼠','海獺','海狸','海犬'],'answer':"海獺",'category':'漢字'},
        {'question':"ガーナの首都は?",'kouho':['アクラ','アピア','アテネ','アンカラ'],'answer':"アクラ",'category':'地理'},
    ]"""
    
    questions = csv2list('Dict3.csv') #questionsが1匹のモンスターに相当する
    while len(questions)>0:
            # if i==0:
            #     ran = random.randint(1,3)
            #     if ran ==2 :
            #         bgm_sound5.play()  移転しました。

        if mhp<=0:
            bgm_sound4.play() 
            print("主人公は敗北した…")
            time.sleep(2)
            break
        elif ehp<=0:
            print("モンスターは倒れた!")
            break
        else:
            this_question = questions.pop(random.randint(0,len(questions)-1)) #questions[0] とかquestions[1]とか
            # this_question = questions[random.randint(0,2)] #questions[0] とかquestions[1]とか
            #print(this_question)
            #sys.exit( )
            """
            s1="漢字出題モンスターが現れた!"
            s2=s1.replace(s1,"")
            print(s1)
            time.sleep(2)
            print(s2)
            """
            #没になった。メモリ内容が変わるだけで、画面に出力したのは変わらない。
            
            
            #print(this_question['category'],end='')
            #print("出題モンスターが現れた!")
            #print("漢字出題モンスターが現れた!")
            if i==0:#初回のみモンスター名の表示するための変数
                ran = random.randint(1,3)
                if ran ==2 :
                    bgm_sound5.play()
                print(this_question['category']+"出題モンスターが現れた")#モンスターの名前の表示
                questions=categorize_questions(this_question['category'],questions)#questionsをカテゴリ統一したものに上書きする
                time.sleep(2)
                subprocess.run('CLS',shell=True)#2秒後に消す
            # if i>0:
            #     after_question= questions[t] 
            print("debug: ", end="")
            print(this_question['question'])#ここで表示された後にシャッフルされている!!
            #print(this_question['kouho'])
            ans_list=get_answer(this_question)
            #print(ans_list)
            #ans_list は次のような形 [['紋白蝶', '紋花蝦蛄', '秋刀魚', '背赤後家蜘蛛'], 1]
            print(ans_list[0])
            for j in range(0,len(ans_list[0])):
                print(chr(65+j)+': '+ans_list[0][j])#ASCIIコードで設定しました
            """
            for question_kouho in this_question['kouho']:
                print('候補: '+question_kouho)
            """
            
            
            # ans=input()
            # if ans=="A":
            #     bgm_sound2.play()
            #     print("モンスターは30のダメージを受けた!")
            #     #bgm_sound.stop()
            #     ehp=ehp-30
            #     time.sleep(1)
            #     break
            #ans=input()
            ans=input()#答えの入力を行わせる
            if sf(ans,ans_list[1]):#ans==chr(65+ans_list[1])
                bgm_sound2.play()
                print("正解!モンスターは30のダメージを受けた!")
                #bgm_sound.stop()
                ehp=ehp-30
                time.sleep(1)
                #break
            else:
                bgm_sound3.play()
                print("主人公は30のダメージを受けた!")
                mhp=mhp-30
                time.sleep(1)
            i=i+1
            time.sleep(2)
            subprocess.run('CLS',shell=True)
        if len(questions)<=0:
            print("問題数が不足しています。戦闘を中断します。")




battle()#確認用に呼び出し

"""
while my_hp :
    mondai = monster_attack(monster) #モンスターが出題する
    my_hp,monster_hp =player_attack(mondai,kaitou) #主人公が答える
    if monster_hp <= 0 :
        monster = monster_change()
  
"""

余談:体調管理について

 最近の私は、体調管理不足を正当化できる年齢を超えていたことを理解しました。
 実際に、体調を崩すと職場に被害がでます。キッズ時代の終わりを感じました。

Pythonゲーム作りの過程 その19

今回の目標

コードの内容を修正する(変数名のミスを修正)
教科書を読み進める

今回の結果

コードの内容を修正する(変数名のミスを修正)
→達成
教科書を読み進める

次回の目標

教科書を読み進める
super関数について理解する
オーバーライドとは何かを調べる
以前読まないで授業中に寝てしまった箇所(パッキングとアンパッキングについて)を読む

コードの内容を修正する(変数名のミスを修正)

 今回は訳あって予約語について調べていました。世の中には変数名として設定できないものもある話を見ていたところ、予約語の他に、組み込み関数名を使ってはいけないという情報がありました。
 これはまずいと思い、以下の箇所を修正しました。

def categorize_questions(category,allquestions):
    categorized_questions=[]
    for tuple in allquestions:
        if category==tuple['category']:
            categorized_questions.append(tuple)
    return categorized_questions

 上記のtupleという変数名は、組み込み関数の一つなので、訂正しました。
 組み込み関数名を変数名で使ってしまった場合の不具合は調べれば出てきます。
※ほかにもインストールしたモジュールでも変数名がかぶることはあります。わざわざ壊れかけの橋を渡る人にならないよう、変数名は被らないようにしましょう。

def categorize_questions(category,allquestions):#変数名が組み込み関数と一致していたので、tupleからquestion_tupleに変えました。
    categorized_questions=[]
    for question_tuple in allquestions:
        if category==question_tuple['category']:
            categorized_questions.append(question_tuple)
    return categorized_questions

話は短くなりましたが、以下が今回のソースコードです。

import subprocess
import time
import csv
from playsound import playsound #メモ windows11では古めのバージョンをインストールすること。pip install playsound==1.2.2
import pygame
import random
import sys
import string

class monster:#モンスターの設計。
    def __init__(self, level):
        self.level=level
        
# 問題の入った辞書を引数に、シャッフルした選択肢と解答のリスト
def get_answer(q):#関数定義
    shuffle_kouho=q['kouho']
    #print(shuffle_kouho) 230501 こちらのprint文は取り除きました。
    random.shuffle(shuffle_kouho)
    answer_str=shuffle_kouho.index(q['answer']) #インデックスを返す。
    return [shuffle_kouho,answer_str]

# 回答者が答えた選択肢の文字列a1(A,B,C,Dとか)と正解の選択肢のインデックス(0,1,2,3とか)を引数に、一致しているときはTrue,一致しないときはFalseを返す
def sf(a1,a2):#success,failuer
    if a1==chr(65+a2):
        return 1
    else:
        return 0

# CSVのファイル名を指定して、問題が格納されたリストを返す
def csv2list(file_path):
    questions =[]
    with open(file_path, 'r',encoding="UTF-8") as f:
        reader = csv.reader(f)
        for line in reader:#ここでCSV1行ごとの処理が行われる
            #print(line)
            kouho_array = line[1].split('/') #鯏/鯵/鱒/鱚
            dict = {'question':line[0],'kouho':kouho_array,'answer':line[2],'category':line[3],'level':line[4]}
            questions.append(dict)
        
        questions.pop(0)
    return questions

#引 数:出題する問題と全問題のディクショナリ
#戻り値:出題する問題のカテゴリにあった問題のみ
def categorize_questions(category,allquestions):#変数名が組み込み関数と一致していたので、tupleからquestion_tupleに変えました。
    categorized_questions=[]
    for question_tuple in allquestions:
        if category==question_tuple['category']:
            categorized_questions.append(question_tuple)
    return categorized_questions

#このbattleは1匹のモンスターとの戦闘に関わる関数
def battle():#戦闘時の関数定義  def battle(monster):
    i=0
    mhp=40 #主人公のHP
    ehp=50 #敵モンスターのHP

    pygame.mixer.init(frequency = 44100)
    bgm_sound = pygame.mixer.Sound("../素材/sound/battle.wav")
    bgm_sound2 = pygame.mixer.Sound("../素材/sound/quiz1.wav")
    bgm_sound3 = pygame.mixer.Sound("../素材/sound/quiz2.wav")
    bgm_sound4 = pygame.mixer.Sound("../素材/sound/madamada.mp3")
    bgm_sound5 = pygame.mixer.Sound("../素材/sound/kakugo.mp3")
    bgm_sound.play()

    #問題のデータベース。ここから問題がピックアップされて出題される。
    """
    questions =[
        {'question':"「洋琴」が表す楽器はどれ?",'kouho':['ピアノ','ギター','チェロ','ハープ'],'answer':"ピアノ",'category':'漢字'},
        {'question':"ラッコを漢字で書くとどれ?",'kouho':['海鼠','海獺','海狸','海犬'],'answer':"海獺",'category':'漢字'},
        {'question':"ガーナの首都は?",'kouho':['アクラ','アピア','アテネ','アンカラ'],'answer':"アクラ",'category':'地理'},
    ]"""
    
    questions = csv2list('Dict3.csv') #questionsが1匹のモンスターに相当する
    while len(questions)>0:
            # if i==0:
            #     ran = random.randint(1,3)
            #     if ran ==2 :
            #         bgm_sound5.play()  移転しました。

        if mhp<=0:
            bgm_sound4.play() 
            print("主人公は敗北した…")
            time.sleep(2)
            break
        elif ehp<=0:
            print("モンスターは倒れた!")
            break
        else:
            this_question = questions.pop(random.randint(0,len(questions)-1)) #questions[0] とかquestions[1]とか
            # this_question = questions[random.randint(0,2)] #questions[0] とかquestions[1]とか
            #print(this_question)
            #sys.exit( )
            """
            s1="漢字出題モンスターが現れた!"
            s2=s1.replace(s1,"")
            print(s1)
            time.sleep(2)
            print(s2)
            """
            #没になった。メモリ内容が変わるだけで、画面に出力したのは変わらない。
            
            
            #print(this_question['category'],end='')
            #print("出題モンスターが現れた!")
            #print("漢字出題モンスターが現れた!")
            if i==0:#初回のみモンスター名の表示するための変数
                ran = random.randint(1,3)
                if ran ==2 :
                    bgm_sound5.play()
                print(this_question['category']+"出題モンスターが現れた")#モンスターの名前の表示
                questions=categorize_questions(this_question['category'],questions)#questionsをカテゴリ統一したものに上書きする
                time.sleep(2)
                subprocess.run('CLS',shell=True)#2秒後に消す
            # if i>0:
            #     after_question= questions[t] 
            print("debug: ", end="")
            print(this_question['question'])#ここで表示された後にシャッフルされている!!
            #print(this_question['kouho'])
            ans_list=get_answer(this_question)
            #print(ans_list)
            #ans_list は次のような形 [['紋白蝶', '紋花蝦蛄', '秋刀魚', '背赤後家蜘蛛'], 1]
            print(ans_list[0])
            for j in range(0,len(ans_list[0])):
                print(chr(65+j)+': '+ans_list[0][j])#ASCIIコードで設定しました
            """
            for question_kouho in this_question['kouho']:
                print('候補: '+question_kouho)
            """
            
            
            # ans=input()
            # if ans=="A":
            #     bgm_sound2.play()
            #     print("モンスターは30のダメージを受けた!")
            #     #bgm_sound.stop()
            #     ehp=ehp-30
            #     time.sleep(1)
            #     break
            #ans=input()
            ans=input()#答えの入力を行わせる
            if sf(ans,ans_list[1]):#ans==chr(65+ans_list[1])
                bgm_sound2.play()
                print("正解!モンスターは30のダメージを受けた!")
                #bgm_sound.stop()
                ehp=ehp-30
                time.sleep(1)
                #break
            else:
                bgm_sound3.play()
                print("主人公は30のダメージを受けた!")
                mhp=mhp-30
                time.sleep(1)
            i=i+1
            time.sleep(2)
            subprocess.run('CLS',shell=True)
        if len(questions)<=0:
            print("問題数が不足しています。戦闘を中断します。")




battle()#確認用に呼び出し

"""
while my_hp :
    mondai = monster_attack(monster) #モンスターが出題する
    my_hp,monster_hp =player_attack(mondai,kaitou) #主人公が答える
    if monster_hp <= 0 :
        monster = monster_change()
  
"""

余談:目標をもって取り組む

 前回は、とにかく手を動かすと書いていました。
 それが失敗だと気付いたので、訂正します。
 手を動かさないと何も進まない ⇒ 手を動かすために目標を立てる ⇒ 目標を確実にするために具体的な小さい目標を立てる
 今までの考えの変化は上記の通りです。
 スモールステップ大事。