えくすとらんのブログ: 3月 2018

scratchですごろくつくってみた

このまえサイコロをつくることができたので

それをそのまま使ってすごろくゲームを作ってみました

すごろくゲーム(猫と魔法学校)

UIがかなり適当で非常にはずかしい感じですが

とりあえずスタートとゴールを設定してみました

スクラッチの猫さんと魔法使いをそのままつかいましたので

それに応じたストーリーを勝手に妄想してみました

魔法のある世界のお話....

ねこさんは魔法学校の生徒で魔道士先生に修行をしてくるように

言われました

魔道士先生は百戦錬磨の魔法使いで猫さんの魔法レベルをひと目で

見抜くことができます

さて 猫さんは無事に修行を終わらせられることができるでしょうか?

....なんてね^^

ハマったところはマスの進み方でランダムな数をもとに

目的地までの各ポイントに数秒ずつ

停止させたあとで目的地にとまるということでしたが

リストの登録とリストの削除を使うことで思っていた挙動になったかな

とおもっています(6マス目にワープの道を書いていますが今の所ワープしません)

リストは最初にx,yの座標をポイントごとに登録しておき通ったところを

上から消します その後はリストの長さ分の座標を上から回していくようにして

サイコロのあとポイントに直接飛んでしまうことをおさえました

とりあえず今の所これで完了ということにしていますが

マジックポイントの会得に歩数でイベント発生→戦闘→ポイント会得なんて感じに

したらもっと面白くなるかも...レベルもフィボナッチでレベルアップ...

アイテムでポイントアップなんかにしたら

....

もう普通にゲームっぽいものになるかもしれませんね...







scratchでさいころつくってみた

なんとなく....

それとなく....作ってみたくなった



SCRATCHでさいころ(音量注意)

さいころの目が歪んでいるのはご愛嬌^^;

なにかの占いやゲームに使えるかもしれません

さいころができたので...これをつかって簡単なすごろくゲームとか

作ることができるかもしれません

SCRATCHはイメージの扱いが簡単でいいなぁ

pythonにもあんなフレームワーク?があればいいのになぁ

2Dキャンバス専用で使い方はscratch.言語はpython3なんてできないかなぁ

まぁ SCRATCHで作ればいいことなんですが...

つぎはなにしてみようかなぁ...





ブログでつぶやく

さっき...チョコレートをたくさんいちどに食べたら....

鼻血でてきた...TT

さて...今日は特に変わったことをしていません

これからギターをひきます

ギターは昔から持っているグレコのクリスタルギター

ピグノーズ TOKAIストラト クレイマーリッチーサンボラモデル

です コードを見ながらポロロンと弾きます

このギターのうち一番 生音の良いのはリッチーサンボラモデルだったりしますが

3ハムという少し特殊なギターでえくすとらんの趣味ではありません

ピグノーズが一番使い勝手もよくシングルピックアップでお好みです

クリスタルギターは重すぎます^^ハムバッカーは基本的に音が太いので

あまり好きになれないところがあります

最近探しているのはワンシングルのみ..音はシャラシャラと

チープな感じの音がほしいです

まさにピグノーズのような

ギターなのですが...探してみると結構ないもののようです

テレキャスターがいいかななどとも思っていますが弾いたことがないので

どのような感じなのかちょっとわかりません

自分の探しているようなギターに出会うことがあるのかなぁ...


蛇のゲームにはまっった件

ほぼ毎日のように遊んでいますが...

本当に楽しいゲームですね

ハンドルネームはそのまま(..)-xtoranとかを使っています

なれてくると結構横暴な手段でまわりの方たちにアタックします...スミマセン

が...まぁそんな横暴な手段に出たときは大概自爆してしまいます^^

遅かれ早かれ必ず死ぬゲームです

10年前くらいのマシーンとグラボを使っているもので...

大きな方が近づくとカクカクになってしまいます

ですのである程度まで大きくなると過疎地へ向かうようにしています

これはネタバレになるかもしれませんが...

どうも当たり判定は頭の一点のような気がしています

ですので過密地帯で細い道に大きな体で入っていってもカーソルの

矢印の頂点が通れば体はついてくるという感じかとおもいます

ただ技術的な面よりメンタルな部分や将棋やチェスにもにた

策略や先を読む力などが総合的に必要になってくるのかなとも思っています

あと気になっているのはbotの存在ですが

明らかにロボットっぽい動きをするものはわかりますが

どうもほかにもたくさんのbotがこの世界に紛れ込んでいるような気がしています

あくまで推測ではありますが...このボットたちは賢くなっているのではないか...

いわゆるAIが組み込まれて学習しどんどん強くなり自分たちの仲間(bot)を守る

われわれの行動パターンから喜怒哀楽を抽出し

それに応じた行動を選択しているのではないか

などと勝手な妄想を膨らませてしまっています

行動パターンは

ロボットは人間に危害を加えてはならない。また、その危険を看過することによって、人間に危害を及ぼしてはならない
 ロボットは人間にあたえられた命令に服従しなければならない。ただし、あたえられた命令が、第一条に反する場合は、この限りでない
ロボットは、前掲第一条および第二条に反するおそれのないかぎり、自己をまもらなければならない。
引用 われはロボットより

にあてはまるものなのでしょう...

技術者さまGMさまこれからも頑張ってくださいませ

いつも楽しいゲームをありがとうございます







pygletで使ってみるドット絵を書いてみた

gimpを使ってとりあえずそれっぽいものを書いてみました
見ての通り素人作です^^



















64*64のビット絵ですので写真は2倍位になっています

おはずかしながら倉庫に置いておきましたのでこんなので

よろしければどちらでもお使いくださいませ

考えているのは右と左にだけ動くような簡単なアクションゲーム

なのですがどんな感じにしたらいいのかなぁ

とりあえず絵に剣と盾を持たせたので剣ダッシュ時は攻撃で

盾を構えたときは防御 通常、剣持歩き時はダメージあり..位で

始められたらいいのにな...

難しいかなぁ....




pygletさわってみた9

とりあえず....


#!/usr/bin/python
# -*- coding: utf-8 -*-
import pyglet
from easygui import*

from pyglet.window import mouse
from pyglet.window import key

window = pyglet.window.Window(width=600, height=600, caption='Sprite animation')

usa_image = pyglet.resource.image('usa.png')
usa_image.anchor_x = usa_image.width / 2
usa_image.anchor_y = usa_image.height / 2
name = enterbox("name:")

batch = pyglet.graphics.Batch()
usa_sprite = pyglet.sprite.Sprite(img=usa_image, x=30, y=30,batch=batch)
label = pyglet.text.Label('{0}'.format(name),
              font_name='Times New Roman',
              font_size=13,
              x=usa_sprite.x-10, y=usa_sprite.y+25,batch=batch)

@window.event
def on_draw():
    window.clear()
    batch.draw()

@window.event
def on_key_press(symbol, modifiers):
    if symbol == key.RIGHT:
        usa_sprite.x += 20
        label.x += 20
    elif symbol == key.LEFT:
        usa_sprite.x -= 20
        label.x -= 20
    elif symbol == key.UP:
        usa_sprite.y += 20
        label.y += 20
    elif symbol == key.DOWN:
        usa_sprite.y -= 20
        label.y -= 20

    elif symbol == key.C:
        usa_sprite.visible = 0
        label.font_size = -1

    elif symbol == key.V:
        usa_sprite.visible = 1
        label.font_size =13

    print(usa_sprite.x,usa_sprite.y)
@window.event
def on_mouse_press(x, y, button, modifiers):
    print(x)
    if int(x) <= usa_sprite.x + 10 and int(x) >= usa_sprite.x - 10 and int(y) <= usa_sprite.y + 10 and int(y) >= usa_sprite.y -10:
        msgbox("data:name/xtoran, age/00")


pyglet.app.run()


if __name__ == '__main__':
    _main()

スプライトのかんたんな消し方がなかなかみつからず
最初はscaleを使って小さくしていましたが
visibleの値が0と1で出現と隠蔽を設定できるようです
(英語読めないのであっているかどうかはわかりません)
labelの方はscaleを使って出現と隠蔽を制御してみています
難しい方の消し方(スプライトの使っているメモリまで消す方法とかあるようですが
残念ながらえくすとらんには今の所解読不能です)

あとどうやらspriteの座標の設定方法を非推奨なやりかたでやっているようですが
まぁ素人趣味でやっていることなので...

2Dゲームに使われている多くの動作ができるようになった?かなぁ
ミサイルを出して敵にぶつける...衝突判定でぶつかったあとスプライトを消し
同じ座標に爆発のスプライトアニメーションを表示するとか
キャラをジャンプさせるとか...クリックでアイテムの表示とか...
いろいろできそう
いままでに作った

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

import random
import sys
from time import sleep

class Syokki:
    def __init__(self,name,num,val,hp,mindam,maxdam,gold):
        self.name = name
        self.num = num
        self.val = val
        self.hp = hp
        self.mindam = mindam
        self.maxdam = maxdam
        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,3,2)
furaipancyu = Syokki("フライパンダ",4,7,8,3,5,3)
furaipansyo = Syokki("フライパンツァー",5,12,11,2,5,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)

nameliststage1 = [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]

valliststage1= [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]

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

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

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

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

print("瞼の裏に届く柔らかな光とわずかな草の香りで少しずつ覚醒してゆく"
"気だるさを感じながら""ああそろそろ時間か...と体をおこした")
#sleep(1)
print("・・・・・")
#sleep(1)
for i in range(3):
    print("えええ.....まわりを見渡すとそこはただ広い平原だった........")
    #sleep(1)

print(" ")
print(" ")
print("勇者の名前を入れてください")
yusya_name = input()
print(" ")
#sleep(1)
print("私の名前は "+ yusya_name+ " 。")
#sleep(1)
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(2)
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,20)
yusya2 = yusya_fastste(2,0,6,180,1,18)
yusya3 = yusya_fastste(3,0,7,150,1,16)
yusya4 = yusya_fastste(4,0,8,80,1,14)
yusya5 = yusya_fastste(5,0,9,70,1,12)
yusya6 = yusya_fastste(6,0,10,60,1,10)
yusya7 = yusya_fastste(7,0,11,50,1,8)
yusya8 =yusya_fastste(8,0,12,40,1,6)
yusya9 =yusya_fastste(9,0,13,30,1,8)
yusya10 = yusya_fastste(10,0,14,20,1,22)

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+"のステータスは")
sleep(1)
print(" ")
print("***********************************")
print("(LV):"+str(my_lv)+ "(経験値):"+str(my_val)+ " "+
"(HP):" + str(my_hp) + " "+ "(gold):"+ str(my_gold) +" "+  "(mindam):"
+str(my_mindam)+" "+  "(maxdam):"+ str(my_maxdam)+"になりました。")
print(" ")

saikorolist = ["足が痛い","歌をうたってみた","道草を食べた..すぐにはきだした。",
"何も考えられないので空をみあげた。","川をみつけた","石をなげてみた","険しい山だ",
"屈伸運動をした","傾いた像がある","火をおこしたい","花のようなものが咲いている",
"コンビニないかな...","遠くでガンッとゆう音がした","大木がある","苦笑してみた",
"なにか獣臭い","遠くで何かが光った","大声を出してみた","ちかくでガサガサ音がする",
"ちょっと寒い","背中がかゆい","知らない間に足のツメが剥がれている",
"ガスの元栓占めたかなぁ","涙がでてきた",]
#print(len(saikorolist))
def three():
    global story
    while yusya_hosu > 130 and yusya_hosu < 140 and story == 2:
        story = story+ 1
        print(story)
        #sleep(1)
        print("フゥフゥあぶないあぶない....やっと宿についたか?...."
        "(バタン)魔物をよせつけないためか魔法陣らしきものが描かれた"
        "ドアを締めるとフロントにカンナが立っていた")
        print("カンナはストラップのついた鍵を指でくるくると回している")
        print("知り合いに出会ったような気がした勇者は少しだけうれしかった")
        print("この宿屋は結界によって守られていますので安心しておやすみください")
        print("カンナはそうゆうと部屋の鍵を勇者に渡した")
        print("部屋の窓から見える山の頂上に私達の城があります")
        print("未だ囚われその身を操られている王をなにとぞおすくいください")
        print("おそらくここからの城への道中の敵は一筋縄では倒せない相手ばかり...")
        print("残念ながら今の貴方の力では城につく前に力尽きてしまうでしょう")
        print("ここから100歩ほどいったところにマナボードと言われる石があります"
        "その石には不思議な言い伝えがあり,その昔国が暗黒に包まれた時,ひとり"
        "の勇者がその石にふれ力を授かりその力を光の剣へ変え国を闇から救った"
        "ということです")
        print("流れ的にいくしかないな...今日はもう寝よう....")
        print("........")
        print("さて 出発するとしよう......")
sleep(1)
def two():
    global story
    while yusya_hosu > 70 and yusya_hosu < 80 and story == 1:
        story = story+ 1
#        print(story)
        sleep(1)
        print("街だ!...小高い丘を登りきると一気に視界がひらけた")
        sleep(1)
        print("ああ....やっとついた〜")
        sleep(1)
        print("........")
        sleep(1)
        print("おつかれさまです 早速休んでいただきたいのですが")
        print("ここから宿までの町の敵は少し手強そうです")
        print("勝てないようなら草原で野宿するのも賢い選択"
        "かもしれません,本当なら私もいっしょに戦いたいのですが")
        print("なぜだか私は魔物に近づくことができないのです")
        print("先にいって宿屋の準備をしておきますので,お気をつけておこしください")
        print("カンナはそういって宿屋の場所をわかりやすく記した地図を勇者に渡した")
        print("よしあそこだな...丘から見える宿屋を確認しまた歩き出した")
sleep(1)
def one():
    global story
    while yusya_hosu > 20 and yusya_hosu < 30 and story == 0:
        story = story+ 1
#        print(story)
        sleep(1)
        print(".....少し お休みになってはどうですか?....")
        sleep(1)
        print("ん だれだ?")
        sleep(1)
        print("まわりを見渡すと自分が今通ってきたばかりの場所に")
        sleep(1)
        print("真っ黒な服を着た少女が立っていた")
        sleep(1)
        print("あれ...さっきまで.....そうおもったがなにより人と出会えたことがうれしい")
        sleep(1)
        print("こんにちは...焦りをさとられないよう 紳士的にあいさつをかわすことにした")
        sleep(1)
        print("こんにちは...少女は少し照れながらあいさつをかわした")
        sleep(1)
        print("しばらく沈黙が続いたあとオウム返しのように")
        sleep(1)
        print("この辺に少し落ち着ける場所はないですか?と口をひらいた")
        sleep(1)
        print("少女は私がこの世界のことを何も知らないことをみすかしているかのように")
        sleep(1)
        print("少し説明的な口調で喋り初めた")
        sleep(1)
        print("さて...いきなりですがあなたはこの世界で勇者となってふえつづける食器MOB")
        print("と戦っていただきます")
        sleep(1)
        print("なぜ?")
        sleep(1)
        print("なぜ?...と考えましたね...")
        sleep(1)
        print("うっ見透かされているどころではない...これはまずいな...")
        sleep(2)
        print(" ")
        print("その昔,ここキッチン王国は国王シンクタライオンの強大な"
        "魔力に守られ平和な国でした。")
        sleep(1)
        print("しかしそこへ突然プラゴミンという悪魔がやってきて")
        print("国王シンクタライオンに傀儡魔法をかけたのです")
        print("傀儡化した国王はその強大な魔力によって魔族のモンスターを召喚"
        "し続けているようです")
        sleep(1)
        print("あ....はぁ...")
        sleep(1)
        print("私は国王側近の秋カンナ..")
        print("プラゴミンがやってきた時,私はちょうどこの国にいなかったのです")
        print("母国へ帰った時あまりの国の腐敗の様に驚き絶望した私は禁忌である")
        print("召喚魔法に身体を捧げ勇者..つまりあなたを召喚したのです")
        sleep(1)
        print("ひとまずここから50ほど歩いたところに町があるのでそこへ向かって下さい")
        print("そこでまたあいましょう")
        sleep(1)
        print("そうゆうと煙とともに消えてしまった...")
        sleep(1)
        print("ああ...消えちゃうんだ まぁ驚かない.... この世界はそんなもの..と")
        print("考えることにした。")
        sleep(1)
        print("少し疲れた..はやく町にたどり着いて休むことにしよう...")
        eventlot()

#print(one.story)
def fib(n):
    result = []
    a, b = 0, 1
    while b < n:
        result.append(b)
        a, b = b, a+b
    return result
lvtable = (fib(999999900000000))
del lvtable[0:5]
#print(len(lvtable))
table = lvtable[my_lv]

def fight():
#print(choiceno1)
    global hp
    global zanhp
    global hit
    global my_hp
    global now_myhp
    global val
    global my_val
    global table
    global my_lv
    global my_gold
    global now_gold
    global my_mindam
    global my_maxdam
    val = valliststage1[choiceno1]
    now_myhp = int(my_hp)
    hp = hpliststage1[choiceno1]
    now_gold = goldstage1[choiceno1]
    while int(hp) or now_myhp> 0:
        hit = random.randint(my_mindam,my_maxdam)
        print(str(yusya_name)+ "の攻撃")
        #sleep(1)
        hp -= int(hit)
        print(choicemob1+"に"+str(hit) + "のダメージをあたえた")
        #sleep(1)
        if int(hp)<= 0:
            my_val = my_val + val
            my_gold = int(my_gold)+ int(now_gold)
            #print(str(val)+"の経験値"+ " "+ str(now_gold)+ "のゴールドを手に入れた")
            break
        print(choicemob1+"の残りHPは"+ str(hp))
        #sleep(1)
        print(str(choicemob1)+"の攻撃")
        #print(mobmin,mobmax)
        mobhit = random.randint(mobmin,mobmax)
        #sleep(1)
        print(str(yusya_name)+ "は"+ str(mobhit)+ "のダメージを受けた")
        now_myhp-= int(mobhit)
        if now_myhp <=0:
            print("あなたは死んだ sayonara")
            #sleep(3)
            sys.exit(0)
        print("あなたのHPは"+ str(now_myhp))
    #sleep(1)
    print(choicemob1+"に勝利した")
    print(str(val)+"の経験値"+ " "+ str(now_gold)+ "のゴールドを手に入れた")
    print("経験値:"+ str(my_val)+ "ゴールド:"+ str(my_gold))
    if my_val > int(table):
        my_lv = my_lv + 1
        print("LVアップだ"," LV",str(my_lv))
        table = lvtable[my_lv]
        #print(table)
        my_hp = int(my_hp)+ (round(int(my_hp)/2))+ int(my_lv)
        my_mindam = int(my_mindam)+(round(my_mindam/2))+int(my_mindam)
        my_maxdam= int(my_maxdam)+(round(my_maxdam/2))+int(my_maxdam)
        print("(LV):"+str(my_lv)+ "(HP):" + str(my_hp) + " "+ "(gold):"
        + str(my_gold) +" "+  "(mindam):"
        + str(my_mindam)+" "+  "(maxdam):"+ str(my_maxdam)+"になりました。")
    sugoroku()

def eventlot():
    global evelot
    for i in range(saikoro):
        evelot = random.randint(1,1000)
    if evelot <= 400 and yusya_hosu <= 70:
        global choicemob1
        global fight_choice
        global hp
        global choiceno1
        global mobmin
        global mobmax
        choiceno1 = random.randint(0,4)
        choicemob1 = nameliststage1[int(choiceno1)]
        mobmin = mindamstage1[int(choiceno1)]
        mobmax = maxdamstage1[int(choiceno1)]
        hp = hpliststage1[int(choiceno1)]
        print(choicemob1+"があらわれた")
        fight_choice = input("たたかいますか?  y or n:")
        if fight_choice == "y":
            fight()
    elif evelot <= 400 and yusya_hosu >= 70 and yusya_hosu <= 120:
        choiceno1 = random.randint(5,10)
        choicemob1 = nameliststage1[int(choiceno1)]
        mobmin = mindamstage1[int(choiceno1)]
        mobmax = maxdamstage1[int(choiceno1)]
        hp = hpliststage1[int(choiceno1)]
        print(choicemob1+"があらわれた")
        fight_choice = input("たたかいますか?  y or n:")
        if fight_choice == "y":
            fight()
    elif evelot <= 500 and yusya_hosu >= 120 and yusya_hosu <= 300:
        choiceno1 = random.randint(11,17)
        choicemob1 = nameliststage1[int(choiceno1)]
        mobmin = mindamstage1[int(choiceno1)]
        mobmax = maxdamstage1[int(choiceno1)]
        hp = hpliststage1[int(choiceno1)]
        print(choicemob1+"があらわれた")
        fight_choice = input("たたかいますか?  y or n:")
        if fight_choice == "y":
            fight()
    else:
        print(random.choice(saikorolist))
        sugoroku()
def starthosu():
        sugoroku()
story = 0
def sugoroku():
    print("サイコロを振りますか?")
    sai = input("y or n :")
    if sai == "y":
        global saikoro
        global yusya_hosu
        global story
        saikoro = random.randint(1,6)
        yusya_hosu = yusya_hosu+int(saikoro)
        print("サイコロの目は"+ str(saikoro)+ "です")
        #sleep(1)
        print("歩数は"+str(yusya_hosu) +"です")
        one()
        two()
        three()
        eventlot()
    elif sai == "n":
        startchoice()
    else:
        print("y or nだよ")
        sugoroku()
def startchoice():
    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
    global yusya_hosu
    print("なにをしますか?")
    print(" ")
    print("1:ゲームを始める 2:歩数を決める")
    print(" ")
    start_sentaku = input(":")
    if start_sentaku == "1":
        print("ゲームを初めます")
        yusya_hosu = 0
        sugoroku()
    elif start_sentaku == "2":
        yusya_hosu = int(input("歩数を入れてください:"))+0
        starthosu()
    else:
        print("no")
        startchoice()

startchoice()



input()

こんなようなテキストベースのプログラムと組み合わせると
面白いゲームができてくるかもしれないなぁ
等とおもう今日この頃です














マスク

花粉症がひどくてマスクをしていたいのだが

耳掛け式のマスクはどんなに優しい生地でも耳の裏が痛くなる

そこで朝から悩んだ結果ある一つの結論が思い浮かんだ

そうだ!メガネに装着するマスクってのはどうだろう?

これだ!っとおもったが

普通にオーバーヘッド型マスク(耳にかけないタイプで頭で止めるタイプのマスク)

が安価で売ってあったのでそれを購入することにしたorz

マスクの上からつけるマスクのようなものも探せばあるかもしれない

あとはこの眼鏡が曇らないようになればいいのだが....

メガネが曇りにくいマスクはよく店頭にならんでいるがあまり効果が期待できない

いっそのことデフロスターかデフォッガーのついたメガネをつくる?

風をだして曇りをとるのは少しむずかしい気がするので

実用的にならデフォッガーのように伝熱線をガラスに入れるもしくは

ガラス側面フレームに熱伝導させるか...ドライアイになるのか?

そんなことをぼーっと考えてみる....


pygletさわってみた8

当初の計画?の通りスプライトに名前をつけ配置しクリックでデータを
見ることのできるプログラムを考えています

今日はスプライトに名前をつけてみました

ウインドウへのテキスト表示は
pyglet.text.Label()でできるようです

ドキュメントを見るとhtml表示にもできるようですねぇ
今回は入力した名前をスプライト上に表示してusaを動かすといっしょに名前が
動くよう考えてみました

#!/usr/bin/python
# -*- coding: utf-8 -*-
import pyglet
from easygui import*

from pyglet.window import mouse
from pyglet.window import key

window = pyglet.window.Window(width=600, height=600, caption='Sprite animation')

usa_image = pyglet.resource.image('usa.png')
usa_image.anchor_x = usa_image.width / 2
usa_image.anchor_y = usa_image.height / 2
a = input("spritename: ")
usa_sprite = pyglet.sprite.Sprite(img=usa_image, x=30, y=30)
label = pyglet.text.Label('{0}'.format(a),
              font_name='Times New Roman',
              font_size=13,
              x=usa_sprite.x-10, y=usa_sprite.y+25)

@window.event
def on_draw():
    window.clear()
    usa_sprite.draw()
    label.draw()

@window.event
def on_key_press(symbol, modifiers):
    if symbol == key.RIGHT:
        usa_sprite.x += 20
        label.x += 20
    elif symbol == key.LEFT:
        usa_sprite.x -= 20
        label.x -= 20
    elif symbol == key.UP:
        usa_sprite.y += 20
        label.y += 20
    elif symbol == key.DOWN:
        usa_sprite.y -= 20
        label.y -= 20
    print(usa_sprite.x,usa_sprite.y)

@window.event
def on_mouse_press(x, y, button, modifiers):
    print(x)
    if int(x) <= usa_sprite.x + 10 and int(x) >= usa_sprite.x - 10 and int(y) <= usa_sprite.y + 10 and int(y) >= usa_sprite.y -10:
        msgbox("data:name/xtoran, age/00")

pyglet.app.run()

これを動作させると....



こんな感じになりました
あとはこれをクリックで量産できる方法があればいいんだけどなぁ
勉強不足でわからないなぁTT
セーブはテキストに座標を書き出して保存
ロードはそれを読み込むとかでできるのかな....



pygletさわってみた7

今回はマウスイベントでイメージをクリックできるようにしたいとおもい

つついてみました

#!/usr/bin/python
# -*- coding: utf-8 -*-
import pyglet
from easygui import*

from pyglet.window import mouse
from pyglet.window import key

window = pyglet.window.Window(width=600, height=240, caption='Sprite animation')

usa_image = pyglet.resource.image('usa.png')
usa_image.anchor_x = usa_image.width / 2
usa_image.anchor_y = usa_image.height / 2

usa_sprite = pyglet.sprite.Sprite(img=usa_image, x=20, y=30)

@window.event
def on_draw():
    window.clear()
    usa_sprite.draw()

@window.event
def on_key_press(symbol, modifiers):
    if symbol == key.RIGHT:
        usa_sprite.x += 20
    elif symbol == key.LEFT:
        usa_sprite.x -= 20
    elif symbol == key.UP:
        usa_sprite.y += 20
    elif symbol == key.DOWN:
        usa_sprite.y -= 20
    print(usa_sprite.x,usa_sprite.y)
@window.event
def on_mouse_press(x, y, button, modifiers):
    print(x)
    if int(x) <= usa_sprite.x + 10 and int(x) >= usa_sprite.x - 10 and int(y) <= usa_sprite.y + 10 and int(y) >= usa_sprite.y -10:
        msgbox("usadate:name usa")
 
pyglet.app.run()

矢印keyでusa_spriteを動かしそれをクリックするとデータが表示されるというような
ものです

実行してみると



スプライトをクリックするときアンカー一点だとクリック判定がシビアすぎるので
X.Y座標とも+ー10の遊びをもたせてみました
クリックでeasyguiのmsgboxをたちあげてみました
やりたいことはほぼこんな感じのことなのですがデータの入力やスプライトのクローン
、はたまたスプライトの名前を常に表示しておきたい....セーブ機能もつけたい....
etc....とてもできそうにありませんね^^


ボタンがないと.....

scratchではあらかじめ”旗を押すと”というコマンドが

用意されていたのでこれを起点にゲームを始めることができた...

なのでなにか同じような最初のイベントを作るためにと

考え"click!"というイメージをつくってみた



















これを起点に もし”click!(座標?sprite?)”が押されたら

というプログラムをつくれたらいいなぁなんておもっている



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