えくすとらんのブログ

いきあたりばったりでプログラミング 少しずつで章

そしてモンスターと遭遇(名前はまだない)

ようやく戦闘準備の準備ができようとしています

毎日ちょっとずつしかできませんが締切があるわけでもなし

まったりと楽しんで進めていきます

コードはツッコミどころ満載(自分ではツッコむところすらもわかりません><)

がひとまずはエラーがでなければいいなぁなんておもっているところです

ゲームは只今サイコロをふってイベント or mobを表示したところまで

やってきました

mobのところは歩数によって出現モンスターを振り分けたいななんておもっているので

moblistをLV別に分けていけばいいのかなぁと考えているところです

密かにmob出現のイラストカットインや音とか出来たら.....

いいのにな......とか....

これはもう少しあとで考えることにします

今日はベタ貼り自分用ウエイト無しバージョンです



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

import random
from time import sleep
class Syokki:

    def __init__(self,name,num,val,hp,maxdam,mindam,gold):
        self.name = name
        self.num = num
        self.val = val
        self.hp = hp
        self.maxdam = maxdam
        self.mindam = mindam
        self.gold = gold

##################################################################################################
#name=mobname num=mobnumber val=討伐経験値 hp=moblifepoint maxdam=mobmaxdamage mindam=mobmindamage #
#gold=会得ゴールド        name num val hp max min gold                                                                          #
##################################################################################################

ryoutenabe = Syokki("両手ナベンナー",1,3,5,1,3,3)
denkinabe = Syokki("エレキプレードン",2,3,7,1,3,4)
furaipandai = Syokki("フライパンタロン",3,6,6,2,5,2)
furaipancyu = Syokki("フライパンダ",4,7,8,3,7,3)
furaipansyo = Syokki("フライパンツァー",5,12,11,4,8,10)
furaipanfuta = Syokki("フライトン",6,14,14,8,12,7)
nabefuta = Syokki("ナベトン",7,20,16,4,14,18)
katatenabedai =Syokki("片手ナベンナー",8,20,18,10,15,18)
katatenabecyu = Syokki("片手ナベンナー哀",9,25,24,8,16,1)
katatenabesyo = Syokki("片手ナベンナー喜",10,20,26,8,16,50)
donburicyu = Syokki("ドンブリャー青",11,30,22,10,13,15)
donburisyo = Syokki("ドンブリャー赤",12,30,22,11,14,16)
ball = Syokki("タマボール",13,200,200,1,200,200)
zaru = Syokki("サルザルモンキー",14,38,40,25,30,37)
saradai = Syokki("ソーサラ魔",15,36,50,30,35,30)
saracyu = Syokki("ソーサラ天",16,36,60,30,38,32)
sarasyo = Syokki("ソーサラ破",17,36,65,28,40,35)
houcyou = Syokki ("ホー蝶",18,40,47,40,45,32)
manaita = Syokki("マナボード",19,50,52,30,50,32)
hashietc = Syokki("スプーン",20,50,65,45,55,30)
syamoji = Syokki("シャモ人",21,120,200,100,150,30)
pira = Syokki("ピーラーヒーラー",22,150,300,100,300,100)
shinktarai = Syokki("シンクタライオン",23,180,400,300,500,100)
akikan = Syokki("秋カンナ",24,190,600,500,800,150)
pura = Syokki("プラゴミン",25,50,120,200,300,100)
mu = Syokki("エクストラン",0,2000,2000,1000,5000,5000000)


syokkilist = [ "終了",ryoutenabe.name,denkinabe.name,furaipandai.name,
    furaipancyu.name,furaipansyo.name,furaipanfuta.name,nabefuta.name,
    katatenabedai.name,katatenabecyu.name,katatenabesyo.name,donburicyu.name,
    donburisyo.name,ball.name,zaru.name,saradai.name,saracyu.name,
    sarasyo.name,houcyou.name,manaita.name,hashietc.name,syamoji.name,
    pira.name,shinktarai.name,akikan.name,pura.name,mu.name]

syokkivallist= ["no",ryoutenabe.val,denkinabe.val,furaipandai.val,
    furaipancyu.val,furaipansyo.val,furaipanfuta.val,nabefuta.val,
    katatenabedai.val,katatenabecyu.val,katatenabesyo.val,donburicyu.val,
    donburisyo.val,ball.val,zaru.val,saradai.val,saracyu.val,
    sarasyo.val,houcyou.val,manaita.val,hashietc.val,syamoji.val,
    pira.val,shinktarai.val,akikan.val,pura.val,mu.val]

print("もう何日ここをさまよっただろう....")
#sleep(2)
print("・・・・・")
#sleep(2)
for i in range(3):
    print("えええ.....まわりを見渡すとそこはただ広い平原だった........")
    #sleep(2)
print(" ")
print(" ")
print("勇者の名前を入れてください")
yusya_name = input()
print(" ")
#sleep(2)
print("私の名前は "+ yusya_name+ " 。")
#sleep(2)
print("しかしまわりの状況がわからないのは不安である....")
#sleep(2)
print("....しばらく歩く事にしよう")
for i in range(3):
    print(" ")
#sleep(3)
print("******************************")
print("******キッチンクエスト(仮)******     by xtoran")
print("******************************")
for i in range(3):
    print(" ")
#sleep(2)

print(yusya_name+ "のステータスを抽選中............")
#sleep(3)
class yusya_fastste:

    def __init__(self,num,val,hp,gold,mindam,maxdam):

        self.num = num
        self.val = val
        self.hp = hp
        self.gold = gold
        self.mindam = mindam
        self.maxdam = maxdam

yusya1 = yusya_fastste(1,0,5,200,1,10)
yusya2 = yusya_fastste(2,0,6,180,1,9)
yusya3 = yusya_fastste(3,0,7,150,1,8)
yusya4 = yusya_fastste(4,0,8,80,1,7)
yusya5 = yusya_fastste(5,0,9,70,1,6)
yusya6 = yusya_fastste(6,0,10,60,1,5)
yusya7 = yusya_fastste(7,0,11,50,1,4)
yusya8 =yusya_fastste(8,0,12,40,1,3)
yusya9 =yusya_fastste(9,0,13,30,1,2)
yusya10 = yusya_fastste(10,0,14,20,1,1)

yusya_hplist = [yusya1.hp,yusya2.hp,yusya3.hp,yusya4.hp,yusya5.hp,
yusya6.hp,yusya7.hp,yusya8.hp,yusya9.hp,yusya10.hp]

yusya_goldlist = [yusya1.gold,yusya2.gold,yusya3.gold,yusya4.gold,
yusya5.gold,yusya6.gold,yusya7.gold,yusya8.gold,yusya9.gold,yusya10.gold]

yusya_maxdamlist = [yusya1.maxdam,yusya2.maxdam,yusya3.maxdam,yusya4.maxdam,
yusya5.maxdam,yusya6.maxdam,yusya7.maxdam,yusya8.maxdam,
yusya9.maxdam,yusya10.maxdam]

yusya_mindamlist = [yusya1.mindam,yusya2.mindam,yusya3.mindam,yusya4.mindam,
yusya5.mindam,yusya6.mindam,yusya7.mindam,yusya8.mindam,
yusya9.mindam,yusya10.mindam]

nameval = len(yusya_name)
for i in range(nameval):
    steval = random.randint(1,10)

my_hp = yusya_hplist[steval-1]
my_gold = yusya_goldlist[steval-1]
my_mindam = yusya_mindamlist[steval-1]
my_maxdam = yusya_maxdamlist[steval-1]
my_lv = 1
my_val =0

print(" ")
print(yusya_name+"のステータスは")
print("(LV):"+str(my_lv)+ "(経験値):"+str(my_val)+ " "+
"(HP):" + str(my_hp) + " "+ "(gold):"+ str(my_gold) +" "+  "(mindam):"
+str(my_mindam)+" "+  "(maxdam):"+ str(my_maxdam)+"になりました。")

saikorolist = ["足が痛い","歌をうたってみた","道草を食べた..すぐにはきだした。",
"何も考えられないので空をみあげた。","川をみつけた","石をなげてみた","険しい山だ",
"屈伸運動をした","傾いた像がある","火をおこしたい","花のようなものが咲いている",
"コンビニないかな...","遠くでガンッとゆう音がした","大木がある","苦笑してみた",
"なにか獣臭い","遠くで何かが光った","大声を出してみた","ちかくでガサガサ音がする",
"ちょっと寒い","背中がかゆい","知らない間に足のツメが剥がれている","ガスの元栓占めたかなぁ",
"涙がでてきた",]
#print(len(saikorolist))
#sleep(1)
def startchoice():
    print("なにをしますか?")
    print("1:ゲームを始める")
    start_sentaku = input(":")
    if start_sentaku == 1:
        print("ゲームを初めます")
        sugoroku()
startchoice()

def sugoroku():
    print("サイコロを振りますか?")
    sai = input("y or n :")
    if sai == "y":
        global saikoro
        global yusya_hosu
        yusya_hosu = int(0)
        saikoro = random.randint(1,6)
        a = yusya_hosu+int(saikoro)
        print("サイコロの目は"+ str(saikoro)+ "です")
        print("歩数は"+str(a) +"です")
    elif sai == "n":
        startchoice()
        sugoroku()

    else:
        print("y or nだよ")
        sugoroku()
sugoroku()





def eventlot():
    global evelot
    for i in range(saikoro):
        evelot = random.randint(1,1000)
    if evelot <= 400:
        print("mob"+"があらわれた")
    else:
        print(random.choice(saikorolist))
eventlot()


input()

どっか散歩にいってこよ....


いきあたりばったりでプログラミング 混沌de章

こんなはずでは...

当初 考えていたのは自分でつけた名前の敵が出る。倒す。

ぐらいの数行で終わる感じにしたかったのですが...

こんなのあったらちょっとおもしろいかも.....

なんてことをちょこちょこ考えていたら

170行を超えてきてしまっていました^^;

自分的にはこれからが面白いところです(しかし難しいのでできるかどうかは....)

当初 エリア別で選択してMOBの強さを分けようとおもっていたのですが

サイコロを振って歩数にプラスしてゆく方法になった(した)ので

歩数がすすめば進むほど強い敵になるように設定してゆけばよいのかな

なんておもっています

ターミナルで進む物語ですが一生懸命に打ち込んだテキストの表示が早すぎで

趣に欠けるという事もあり調べてみると

from time import sleep

timeモジュールの中にsleepというのがありこれでウエイトを

付けることにしました

なんかいい感じになってきたんじゃないか....

今の所サイコロの目を出す所までできているのでこれを

なんとかしてコメント or 戦闘 に振り分けたいなぁ

なんておもっています あとはメインストーリーを考えて....

ってどうやってだすんだろ....




できるかなぁ....

いきあたりばったりでプログラミング 勇者ノ章

勇者降臨

今日はとりあえず勇者のステータスを作ってみました

名前によって変化するようにしてみました

簡単なRPG ですのでHP.マックスダメージ.マインダメージ

位でいこうとおもいます

ああ

いま 重大な事に気づきました   orz

このゲームHPを戻すすべを考えていません

.....むむむ ヒールか薬草を実装しなければならないかもしれません

いや もしくは戦いが起こるたびに....
いや やはり自分で戻したい

今の所ゴールドは飾りです

ゴールドなど持っていても役に立たない世界なのです

捨てることもできませんのでどんどん貯まっていくのです

とりあえずステータス表示までを.....



こんな感じになってます ちょっと出てきますノノ

キッチンクエスト(仮)できるかなぁ

mobのパラメータをいれてみた

仕事が終わったので...

パラメーターをそそくさとつくってみました

えいっ

class Syokki:

    def __init__(self,name,num,val,hp,maxdam,mindam,gold):
        self.name = name
        self.num = num
        self.val = val
        self.hp = hp
        self.maxdam = maxdam
        self.mindam = mindam
        self.gold = gold

##################################################################################################
#name=mobname num=mobnumber val=討伐経験値 hp=moblifepoint maxdam=mobmaxdamage mindam=mobmindamage #
#gold=会得ゴールド        name num val hp max min gold                                                                          #
##################################################################################################

ryoutenabe = Syokki("両手ナベンナー",1,3,5,1,1,3)
denkinabe = Syokki("エレキプレードン",2,3,7,1,3,4)
furaipandai = Syokki("フライパンタロン",3,6,6,2,5,2)
furaipancyu = Syokki("フライパンダ",4,7,8,3,7,3)
furaipansyo = Syokki("フライパンツァー",5,12,11,4,8,10)
furaipanfuta = Syokki("フライトン",6,14,14,8,12,7)
nabefuta = Syokki("ナベトン",7,20,16,4,14,18)
katatenabedai =Syokki("片手ナベンナー",8,20,18,10,15,18)
katatenabecyu = Syokki("片手ナベンナー哀",9,25,24,8,16,1)
katatenabesyo = Syokki("片手ナベンナー喜",10,20,26,8,16,50)
donburicyu = Syokki("ドンブリャー青",11,30,22,10,13,15)
donburisyo = Syokki("ドンブリャー赤",12,30,22,11,14,16)
ball = Syokki("タマボール",13,200,200,1,200,200)
zaru = Syokki("サルザルモンキー",14,38,40,25,30,37)
saradai = Syokki("ソーサラ魔",15,36,50,30,35,30)
saracyu = Syokki("ソーサラ天",16,36,60,30,38,32)
sarasyo = Syokki("ソーサラ破",17,36,65,28,40,35)
houcyou = Syokki ("ホー蝶",18,40,47,40,45,32)
manaita = Syokki("マナボード",19,50,52,30,50,32)
hashietc = Syokki("スプーン",20,50,65,45,55,30)
syamoji = Syokki("シャモ人",21,120,200,100,150,30)
pira = Syokki("ピーラーヒーラー",22,150,300,100,300,100)
shinktarai = Syokki("シンクタライオン",23,180,400,300,500,100)
akikan = Syokki("秋カンナ",24,190,600,500,800,150)
pura = Syokki("プラゴミン",25,50,120,200,300,100)
mu = Syokki("エクストラン",0,2000,2000,1000,5000,5000000)

このしたは食器をあらうプログラムと同じものですので

いま時点で使うと経験値順になって出力します^^

コメントは自分で見ながら入れるために書いたものですのでいらなくなったら

けそうかなぁ

上から弱い順になってます

タマボールを某メ◯ルスライムのようなレアmobに位置づけています

遭遇確率は設定しないつもり?ですので

LVが低いうちに出会ったら生きるか死ぬかの攻撃力を設定してみました^^

最低攻撃力1 最高攻撃力200と幅を持たせてあります

こちらのHPが200より低い場合ランダムな攻撃力でスリリングな戦闘を

楽しめるのではないかななんて思っています

自分のキャラもこっそりいれてしまっています

経験値2000 HP2000 最大攻撃力5000 討伐時ドロップゴールド5000000

という値を設定しました(自分大好きか?)

名前だけ見ると空き缶の秋カンナさんがマスコットガールに抜擢されそうです

ゴホン....妄想はこのへんにしてと...

まあ できるかどうか謎ですけどもう少し作っていきます




またまた構想

またまた構想

主人公と作ったmobをたたかわせるため少しパラメータ

をふやすことにしてみました

class Syokki:

    def __init__(self,name,num,val,hp,maxdam,mindam,gold):
        self.name = name
        self.num = num
        self.val = val
        self.hp = hp
        self.maxdam = maxdam
        self.mindam = mindam   
        self.gold = gold

##################################################################################################
#name=mobname num=mobnumber val=討伐経験値 hp=moblifepoint maxdam=mobmaxdamage mindam=mobmindamage #
 #gold=会得ゴールド        name num val hp max min gold                                                                          #
##################################################################################################

普段遊んでいるRPGの敵のパラメータを見るともっといろいろな値があるようですが


とりあえず敵のHPから此方が与えたLVに応じたランダムなダメージを引いて0にする

もしくは敵のランダムな(min~max)攻撃力で此方がやられる

ようにしてみてはどうだろうかと考えています

ゲームの流れも考えてみています

1 フィールド選択(戦闘レベル選択)→mobnumでグループ分け
2 サイコロですすむ
3 テキスト(暑い,寒い,オアシスを見つけた,転んだ,歌をうたってみた,...etc)
 or 敵と遭遇(画像,音が出たら面白いだろうなぁ)
4 戦闘 勝利 or 敗北 経験値,gold会得LVUP
5 主人公ステータス表示
6 フィールド選択 or サイコロ

こんな感じのものが出来たらいいのになぁ

まぁいきあたりばったりですので技術的に難しいようならやめちゃいます

とりあえずmobのパラメータを考えてみよ〜っと





いきあたりばったりでプログラム作成 命名の章

名前を思うままに変えてみた


両手鍋 → 両手ナベンナー
電気プレート鍋 → エレキプレードン
フライパン(大) → フライパンタロン
フライパン(中) → フライパンダ
フライパン(小) → フライパンツァー
フライパン蓋 → フライトン
鍋蓋 → ナベトン
片手鍋(大) → 片手ナベンナー
片手鍋(中) → 片手ナベンナー哀
片手鍋(小) → 片手ナベンナー喜
どんぶり(中) → ドンブリャー青
どんぶり(小) → ドンブリャー赤
ボール → タマボール
ざる → サルザルモンキー
皿(大) → ソーサラ魔
皿(中) → ソーサラ天
皿(小) → ソーサラ破
包丁 → ホー蝶
まな板 → マナボード
スプーン等 → スプーン
しゃもじ → シャモ人
ピーラー → ピーラーヒーラー
シンクたらい → シンクタライオン
空き缶 → 秋カンナ
プラゴミ → プラゴミン

なまえを変えただけでゲームの雰囲気になってきました

名前をつけながらMOBの姿やプロフィールを考えると面白いですねぇ

とりあえず簡単なテキストゲームができたらいいかなぁ



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