えくすとらんのブログ: 1月 2019

ゲームを作ってみた(ドラゴンじゃんけん)

プログラミングを勉強してみてわかったこと

pythonの基本的な動かし方はなんとなくわかってきたような気がしていますが

なにぶんにも算数ができないんです

これが難関

文章で問題が書いてあるとしてこれを数式にすることができない

これはもうプログラミング以前の問題でしょう^^;

まぁコピペプログラミングならなんとかできるような気がしているので

趣味のプログラミングでひとまずは楽しむことはできています

あ そうだ

なんとなく作ってみたじゃんけんプログラムを公開してみよう

ツッコミどころ満載です

倉庫にいれておきます

フォルダをダウンロードしてpyファイルに実行権限をつけたら起動できるとおもいます

名前はdoragonjyanken(ドラゴンじゃんけん)

readmetextにも書いていますが音関連に外部のプログラム(sox)を使っています

ライセンス関連(よくわかりません)で違反があればすぐに消しますので教えてください


#!/usr/bin/python3.7
# -*- coding: utf-8 -*-

import random as rdm
import easygui as eg
import sys
import time
import subprocess
from subprocess import Popen

senshi_img = "yusya.png"
bijyo_img = "oujyo.png"
doragon_img= "doragon.png"


Popen(['play','chorus.mp3'])

first_msg = eg.ccbox("""この世界とは違う世界のお話。
その日空は暗黒におおわれ人々の平和な暮らしは
終わりを告げた
魔王はフラワー王国を手中におさめようと手下を
王国に次々と送り込んだが”勇者””美女””ドラゴン”の
フラワー国パーティーにことごとく敗北した
魔王は魔力を集めフラワー国パーティーと互角の戦力
”魔鏡のパーティー”を作り出し王国に侵入させた
お互いの弱点は共通である

勇者は美女に弱く
美女はドラゴンに弱く
ドラゴンは勇者に弱いのだ

フラワーパーティーは王国を守ることができるのか?
""",title="doragonjyanken",image="doraopen.png",choices=('gamestart', 'cancel'))

if first_msg == False:
    sys.exit()
elif first_msg == True:
    Popen(['play','magic2.wav'])
    pass

#自軍パラメータを割り振る
senshi_pm = eg.choicebox(title="アタックパラメータの振り分け",msg="パーティーのパラメータ(戦士)(上限70): 残り100",
choices = list(range(71)))
if int(senshi_pm) <= 71:
    Popen(['play','crrect.mp3'])
pm_furi1 = 101- int(senshi_pm)
bijyo_pm = eg.choicebox(title="アタックパラメータの振り分け",msg= "パーティーのパラメータ(美女): 残り{}".format(pm_furi1- 1),
choices=list(range(pm_furi1)))
if int(bijyo_pm) <= 71:
    Popen(['play','crrect.mp3'])
pm_furi2 = int(pm_furi1)- int(bijyo_pm)
doragon_pm = eg.choicebox(title="アタックパラメータの振り分け",msg= "パーティーのパラメータ(ドラゴン)残り{}".format(pm_furi2-1),
choices=list(range(pm_furi2)))
if int(doragon_pm) <= 71:
    Popen(['play','magic2.wav'])
#各軍のライフ
mylife = int(1000)
cpulife = int(round(100))
end_count = 1

# 敵軍パラメータを作成
enemy_senshi_pm = rdm.randint(1,100)
enemy_bijyo_pm = rdm.randint(1,100- enemy_senshi_pm)
enemy_doragon_pm = (100- (enemy_senshi_pm+ enemy_bijyo_pm))
print(enemy_senshi_pm,enemy_bijyo_pm, enemy_doragon_pm)

#def field():
#    eg.msgbox("どちらに進みますか?")
#field()

def game():
    global cpulife
    global mylife
    print(cpulife, mylife)
    class Kyara:
        def __init__(self, name):
            self.name = name
        def battle(self):
            eg.msgbox("敵-魔王軍(cpu):"+ "{}".format(self.name))

    senshi = Kyara("戦士")
    bijyo = Kyara("美女")
    doragon = Kyara("ドラゴン")


    battle_list = [senshi, bijyo, doragon]
    battle_choice1 = eg.buttonbox(title="戦うキャラクターの選択",msg='敵が現れた!どのキャラクターで\
    戦いますか?\nATKパラメータ 戦士: {0} 美女: {1} ドラゴン: {2} '.format(senshi_pm, bijyo_pm, doragon_pm),
    choices=('戦士','美女','ドラゴン'),images=(senshi_img,bijyo_img, doragon_img))
    if battle_choice1 == "yusya.png":
        Popen(['play','laser1.mp3'])
        battle_choice1= "戦士"
    elif battle_choice1 == "oujyo.png":
        Popen(['play','laser1.mp3'])
        battle_choice1= "美女"
    elif battle_choice1 == "doragon.png":
        Popen(['play','laser1.mp3'])
        battle_choice1 = "ドラゴン"
    elif battle_choice1 == None:
        sys.exit(0)
    cpu_choice2 = battle_list[rdm.randint(0,2)]
    eg.msgbox("あなた(フラワー国パーティー):"+ str(battle_choice1))
    eg.msgbox("vs")
    cpu_choice2.battle()
    print(battle_choice1,cpu_choice2.name)

    def jyanken():
        global cpulife
        global mylife
        if battle_choice1 == cpu_choice2.name:
            Popen(['play','magic2.wav'])
            eg.msgbox("ひきわけ")#drawアイテムでレアスキルを付与?

        elif battle_choice1 == "戦士" and cpu_choice2.name == "美女":#wincpu
            Popen(['play','kiss1.mp3'])
            eg.msgbox("あなたは美女にきりかかれない\n魔王軍美女はナゲキッスの呪文を唱えた\nあなたの戦士は骨ぬきにされた。\nあなたはダメージを負った")

            mylife = int(mylife)- (int(mylife)* int(enemy_bijyo_pm)/ 100)
            eg.msgbox("あなたのチームのLIFE:{0}  敵チームのLIFE:{1}".format(mylife, cpulife))

        elif battle_choice1 == "戦士" and cpu_choice2.name == "ドラゴン":#winmyteam
            Popen(['play','swish1_4.mp3'])
            eg.msgbox("あなたの戦士はエクスカリバーで切りつけた。\nあなたの勝利!")
            cpulife = int(cpulife)- (int(cpulife) * int(senshi_pm)/ 100)
            eg.msgbox("あなたのチームのLIFE:{0}  敵チームのLIFE:{1}".format(mylife, cpulife))

        elif battle_choice1 == "美女" and cpu_choice2.name == "ドラゴン":#wincpu
            Popen(['play','dragon_breath1.mp3'])
            eg.msgbox("敵のドラゴンは口から灼熱の炎を吐き出した!\nあなたはダメージを負った")
            mylife = int(mylife)- (int(mylife)* int(enemy_doragon_pm)/ 100)
            eg.msgbox("あなたのチームのLIFE:{0}  敵チームのLIFE:{1}".format(mylife, cpulife))

        elif battle_choice1 == "美女" and cpu_choice2.name == "戦士":#winmyteam
            Popen(['play','kiss1.mp3'])
            eg.msgbox("あなたの美女は魅了の魔法を使った\n魔王軍戦士は理性を失い魔王に切りかかり返り討ちにあった\nあなたの勝利!")
            cpulife = int(cpulife)- (int(cpulife) * int(bijyo_pm)/ 100)
            eg.msgbox("あなたのチームのLIFE:{0}  敵チームのLIFE:{1}".format(mylife, cpulife))

        elif battle_choice1 == "ドラゴン" and cpu_choice2.name == "戦士":#wincpu
            Popen(['play','swish1_4.mp3'])
            eg.msgbox("敵の戦士は闘気をまとった剣を振りおろした。\nあなたはダメージを負った")
            mylife = int(mylife)- (int(mylife)* int(enemy_senshi_pm)/ 100)
            eg.msgbox("あなたのチームのLIFE:{0}  敵チームのLIFE:{1}".format(mylife, cpulife))

        elif battle_choice1 == "ドラゴン" and cpu_choice2.name == "美女":#winmyteam
            Popen(['play','dragon_breath1.mp3'])
            eg.msgbox("あなたはのドラゴンは口から炎を吐き出した。\nあなたの勝利!")
            cpulife = int(cpulife)- (int(cpulife) * int(doragon_pm)/ 100)
            eg.msgbox("あなたのチームのLIFE:{0}  敵チームのLIFE:{1}".format(mylife, cpulife))

    jyanken()
    while (int(cpulife) > int(1) and int(mylife) > int(1)):
        game()
        print(cpulife,mylife)
    if cpulife < mylife:
        Popen(['play','devil_laughing1.mp3'])
        endgame = eg.ccbox("""おお ようやく我のもとへたどりついたか・・\n
        きづかなかったのか?お前たちが戦っていたのはフラワー軍のパーティー....\n
        聞こえてはいないだろうが....お前たちは見境なく殺しすぎた\n
        これからはわしの忠実な下僕としてやつらを攻撃するのだ....\n
        ふはははは.......\n
        魔王は高らかに笑った\n
       \n
        ドラゴンじゃんけん part1 end by xtoran""",image="maou.png")
        if endgame == True:
            global end_count
            end_count += 2
            cpulife  = (cpulife+ int(100)* end_count)
            mylife = mylife +int(100)
            game()
        else:
            sys.exit()
        print(endgame)
    elif cpulife > mylife:
        Popen(['play','requiem2.mp3'])
        endgame2 = eg.ccbox("""あなたのパーティーは全滅した""")
        if endgame2 == True:
            sys.exit()
        else:
            sys.exit()
        print(endgame)
game()
if __name__ == '__main__':
    _main()

とりあえず....

png wav等はフォルダにはいっています

アタックパラメータはパーセントでダメージをあたえるようにしていますが
どうもゲームバランスが悪いようなきがします
そのままアタックパラメータでダメージを与えたほうが面白くなるかもしれません







おお けっこういいかも

申告の時期がやってまいりました

えくすとらんの収入は今の所申告をするほどありませんが(。>﹏<。)

万が一申告しなければならないほどになったときのことを考え....

会計ソフトを毎年考えてみています(なにか悲しい感じになっていますが...)

で....去年はエクセルの会計ソフトをlibreofficeでちょっと使ってみました

まあ なんとか使えたのですがやはりところどころ仕様が違うための不具合が

出ているようでしたので

今年はgnucash をインストールしてみました

最初とまどってしまいましたが

”勘定科目をつくって右クリック

資産移動をおしてあちらからこちらへ資産移動”

という流れがわかると何しているかが

徐々にわかって来たような気がしています(まだそれだけしかしていませんが...)

スマホとも連携できるのでしょうか?(すばらしいですね^^)

これ使おーっと思っている今日この頃です

それではまたノ







らんだむ様の言うとおり

ちょっと 例のあのくじを買ってみようとおもい
たったのですが肝心の数字が思い浮かばないので
1~43の異なる数字を6個選択するコードを書いてみました


#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
#1~43の異なる数字を6個選択
import random

c = []
for i in range(6):
    a = random.randint(1,43)
    b = ("0"+ str(a))
    if a < 10:
      c.append(b)
    else:
      c.append(a)
c = [int(x) for x in c]
print("1から43の6つのランダムに選ばれた数字は")
print(c)
print("です。")
input()

なんの制約もつけていないので
同じ数字が出てきたりもしますが出てきたグループから
気に入ったグループを選べばいいのでこれはこれでいいにしようかなとおもっています

はい 出てきた数字を選んでくじを買ってみましたが
今の所当たりはありません^^;
もちろんこのコードを使ってくじを引いても当たる確率が変わる訳でもなく...
....まあAIを組み込むなんてこともちらっと頭のスミによぎったりもしたわけですが
そこまでしなくても....当たらないからTT(なぜならくじに当たる確率は明日事故で死んでしまう確率より低いというのだから...)
そこでランダム様にランダムな時間と僕のランダムな心でお願いするという
選択により当選を引き出そうとしているのです

よってランダム様の言うとおりなのです

なんのこっちゃ それではまたノ




なんとなく...

ネットがつながってホッとしていますが

何かをブログに書いてみようというような事もとくにないため

とりあえずなんでもいいから綴っておこうと筆(キーボード)をとりました

突然ですが...

メールってヘッダーを解析するとどのサーバーを通ってきたか

わかるようですね

まぁ それだけです 話もつづきません

ああ あとpythonでインデックスHTMLを配置しない状態で

シンプルHTTPサーバーを立ち上げて(ポート開けました)

ローカルIPのブラウザから接続してみた

フォルダ階層丸見えでそこのファイルを右クリックで保存すると

ダウンロードできることに気づいたのでホストからちょっとしたファイルを

ダウンロードするにはちょうどいいかななんて思った

まあ 何サーバーでもいいんだろうけど...

シンプルHTTPサーバーは一行で起動できるから素敵かも....

今日はこのへんで...


ふふふ 復活!

何日ぶりでしょう!
ようやく回線が復活いたしました

いやぁ常時接続のない生活は非常にきびしいですね

ひかり回線の使用代金

あるいはスマホの使用代金が

生活に対して非常に高額であることから

時代を後退するようですが電話加入権復活して

ADSLにしてみようかななどと

思ってみていますが....

NTTもADSLのサービスを終了する予定にされているようですが

ISDNやADSLなどのサービスはなにかとまだ使いみちが

あるのではないかなどと思ってみています

もうなんなら電話加入権でインターネット使えるように

してください(おそくてもメールチエックくらいできるんで)

電話基本使用料 + 500円くらい(希望!)

なんて無理な願望をつらつらと書いてみられるのも

回線つながっているうちだけです

またいつつながらなくなるものなのか....

戦々恐々といった感じでございます

とりあえず今日はこのへんで....









 久しぶりの更新です 備忘録 使っているarchlinuxにnvidiaのドライバを入れたところドライバがあっていなかったのかxが起動せずこれをアンインストールしたがその後xf86-video-nouveauが入っているにもかかわらずxが起動しなくなったのでarchwikiにて調...