えくすとらんのブログ: ゲームを作ってみた(ドラゴンじゃんけん)

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

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

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等はフォルダにはいっています

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







0 件のコメント:

コメントを投稿

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