プログラミングを勉強してみてわかったこと
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()
アタックパラメータはパーセントでダメージをあたえるようにしていますが
どうもゲームバランスが悪いようなきがします
そのままアタックパラメータでダメージを与えたほうが面白くなるかもしれません
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等はフォルダにはいっています
png wav等はフォルダにはいっています
アタックパラメータはパーセントでダメージをあたえるようにしていますが
どうもゲームバランスが悪いようなきがします
そのままアタックパラメータでダメージを与えたほうが面白くなるかもしれません