えくすとらんのブログ: python3
ラベル python3 の投稿を表示しています。 すべての投稿を表示
ラベル python3 の投稿を表示しています。 すべての投稿を表示

python3で畑で使う施肥量計算機ちょっとつくってみた





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

#施肥量計算
class Sehi:
    def __init__(self,kg,N,P,K):
        self.kg = kg
        self.N = int(N)*10
        self.P = int(P)*10
        self.K = int(K)*10

    def seibunryou(self):
        seibunryou_N = int(self.kg) * int(self.N)
        seibunryou_P = int(self.kg) * int(self.P)
        seibunryou_K = int(self.kg) * int(self.K)
        print("一袋あたり"+ "(N)"+ str(seibunryou_N)+"g"+"(P)"+str(seibunryou_P)+"g"+"(K)"+str(seibunryou_K)+"g")

#施肥データ
class Yasai:
    def __init__(self,name,hasyu,uetsuke,sehin,sehip,sehik,oigoe):
        self.name = name
        self.hasyu = hasyu
        self.uetsuke = uetsuke
        self.sehin = sehin
        self.sehip = sehip
        self.sehik = sehik
        self.oigoe = oigoe

    def yasai_data_load(self):
        print("******************************************")
        print("品名: "+ self.name)
        print("播種時期: "+ self.hasyu)
        print("植え付け時期: "+ self.uetsuke)
        print("施肥量(N)(kg/10a): "+ str(self.sehin))
        print("施肥量(P)(kg/10a): "+ str(self.sehip))
        print("施肥量(K)(kg/10a): "+ str(self.sehik))
        print("追肥の目安(npk)(kg/10a): "+ self.oigoe)

    def m_change(self):
        mcn = int(self.sehin)/10
        mcp = int(self.sehip)/10
        mck = int(self.sehik)/10
        print("******************************************")
        print("1rあたりの施肥量は")
        print("N: "+ str(mcn)+ "kg")
        print("P: "+ str(mcp)+ "kg")
        print("K: "+ str(mck)+ "kg")

kabocya = Yasai("かぼちゃ","3月下旬","4月下旬",15,15,15,"20 10 15")
kyuri = Yasai("きゅうり","5月上旬","5月下旬",30,30,30,"20 0 10")
suika = Yasai("すいか","4月中旬","6月中旬",10,10,10,"10 5 5")
meron = Yasai("メロン","3月上旬","4月上旬",15,20,15,"- - -")
tomato = Yasai("トマト","3月中旬","5月中旬",15,25,10,"15 0 10")
piman = Yasai("ピーマン","2月上旬","4月中旬",25,25,20,"20 20 15")
ichigonae = Yasai("イチゴ苗床","7月上旬","-",1,3,2,"(kg/a)")
ichigo = Yasai("イチゴ","7月上旬","9月上旬",15,20,20,"10 5 5")
nasu = Yasai("なす","3月上旬","5月中旬",30,30,30,"15 10 15")
okura = Yasai("オクラ","2月上旬","3月下旬",30,30,30,"15 10 15")
nira = Yasai("にら","12月上旬","4月上旬",12,25,15,"30 0 19")
miendou = Yasai("実えんどう","9月下旬","-",5,20,10,"10 0 5")
sayaendou = Yasai("さやえんどう","8月上旬","-",6,25,10,"7 0 9")
ingen = Yasai("いんげん","8月中旬","-",14,20,20,"0 0 0")
toumorokoshi = Yasai("とうもろこし","3月下旬","-",30,30,25,"6 0 7")
gobou = Yasai("ごぼう","3月上旬","-",14,25,16,"8 0 6")
rakkyou = Yasai("らっきょう","9月上旬","-",8,20,10,"5 0 5")
rifuretasu = Yasai("リーフレタス","9月下旬","10月下旬",20,20,20,"-")
kekkyuretasu = Yasai("結球レタス","7月下旬","8月下旬",25,25,25,"-")
daikonn = Yasai("大根","9月上旬","-",15,20,12,"10 0 10")
bareisyo = Yasai("じゃがいも","1月下旬","-",17,20,18,"8 0 0")
satoimo = Yasai("さといも","4月上旬","-",14,23,12,"6 0 8")
kansyo = Yasai("かんしょ","3月上旬(種芋定植)","5月上旬",5,12,15,"-")
ninjin = Yasai("にんじん","8月上旬","-",15,20,15,"5 0 5")
syouga = Yasai("しょうが","4月中旬","-",20,20,20,"10 10 10")
shishitou = Yasai("ししとうがらし","1月上旬","3月下旬",20,20,20,"25 15 15")
nigauri = Yasai("にがうり","3月下旬","4月下旬",20,16,20,"13 8 11")
burokkuri = Yasai("ブロッコリー","8月中旬","9月下旬",15,20,15,"10 5 10")
soramame = Yasai("そらまめ","8月上旬","10月上旬",15,15,15,"5 5 5")
kyabetsu = Yasai("キャベツ","9月下旬","11月上旬",15,15,15,"10 5 10")
hakusai = Yasai("はくさい","9月下旬","11月上旬",15,15,15,"10 5 10")
hourensou = Yasai("ほうれん草","9月上旬","-",10,10,10,"5 0 5")
syungiku = Yasai("春菊","8月下旬","-",15,15,10,"10 0 10")
konegi = Yasai("小ねぎ","4月上旬","-",15,10,15,"25 15 20")
tamanegi_ikubyou = Yasai("玉ねぎ(育苗)","-","-",0.5,0.5,0.5,"(kg/50m2)")
tamanegi = Yasai("玉ねぎ","9月上旬","10月下旬",15,20,15,"10 5 5")

sehidetas=[kabocya,kyuri,suika,meron,tomato,piman,ichigonae,ichigo,
             nasu,okura,nira,miendou,sayaendou,ingen,toumorokoshi,gobou,
             rakkyou,rifuretasu,kekkyuretasu,daikonn,bareisyo,satoimo,
             kansyo,ninjin,syouga,shishitou,nigauri,burokkuri,soramame,
             kyabetsu,hakusai,hourensou,syungiku,konegi,tamanegi_ikubyou,
             tamanegi]

def yasainame():
    print("施肥量データが選ばれました。野菜を選んでください。")
    for i,v in enumerate(sehidetas):
        print(i,v.name)
def yasai_sentaku():
    print("**********************************************")
    yasainum = input("野菜の番号を入力してください: ")
    try:
        sehidetas[int(yasainum)].yasai_data_load()
        sehidetas[int(yasainum)].m_change()
        print("**********************************************")
        print("*元肥,追肥のデータだけです(堆きゅう肥,苦土石灰,よう燐は土壌状態に合わせ別途用意する必要があります)")
    except IndexError:
        print("選択範囲にない値です.")
        yasai_sentaku()
     




#袋の総量及び成分含有率入力 
def fukuro():
    print("袋の成分量を計算します")
    fukuro_kg = input("袋の総量を入力してください(kg): ")
    fukuro_N = input("窒素含有率を入力してください(N): ")
    fukuro_P = input("リン酸含有率を入力してください(P): ")
    fukuro_K = input("カリ含有率を入力してください(K): ")
    fukuro = Sehi(fukuro_kg,fukuro_N,fukuro_P,fukuro_K)
    fukuro.seibunryou()
 
#メイン処理

syori = input("処理を選んでください: 1: 施肥量計算 2: 施肥量データ: ")


def hatake():
    if syori == str(1):
        fukuro()
        input()

    elif syori == str(2):
        yasainame()
        yasai_sentaku()

     

hatake()
input()



 ソースに書いてあるとおり元肥,追肥のデータだけです(堆きゅう肥,苦土石灰,よう燐は土壌状態に合わせ別途用意する必要があります

あと播種期,定植期も一般的な露地物のものとしていますが(春夏二度のものもあります)
地域差.農業スタイルや気温によってもかわります
あくまで参考程度で...

自分の環境はlinuxです 
ソースをメモ帳にコピペで名前にnpk.pyをつけて
実行権限をつけて同じ階層でpython npk.pyしてやってください

もしかして....

ゲームなどでテキストを表示させるのにタイピング風に一つづつ

文字をアウトプットさせたいな、なんて考えていたのだけど

文字を出力することだけにとらわれてた

もしかしたら 全文いれておいてから最初の文字以後”空白"をreplace

次は最初と二番目の文字以後空白をreplaceなんて順番にやっていれば

できるのかな

やっぱり出力で考えたほうがいいのかな

どちらにせよ キャンバスつくるなら 文字サイズとの兼ね合いがありそうなんで

むずかしいな








ははは また復活!

よくとまりますねぇTT

そして 一度止まると2,3ヶ月こちらの世界へ

帰ってくることができません

しかし その間も回線利用料や基本料金といった形で

しっかりと請求がくるわけで.....

まぁなんとか生還することができたわけですが....

やはり情報の取得が制限されるというのはかなりのストレス

ですね。。。そしてその間なにをやっていたかというと....

古いノートパソコンにarchlinuxをarchisoから完全オフライン

でインストールしてみたり....

#! /usr/bin/python3.7
import time
import sys
#時間を取得
time = time.localtime()
print("今日は" + str(time[0]) + "年" + str(time[1]) + "月" + str(time[2]) + "日です")
#元号年の計算
meiji= int(time[0])- 1867
taisyou= int(time[0])- 1911
syouwa= int(time[0])- 1925
heisei = int(time[0])- 1988
reiwa = int(time[0])-2018
#元号年出力
print("令和"+ str(reiwa)+ "年です")
print("**********************************")
print("明治"+ str(meiji)+ "年です(元年1868年)")
print("大正"+ str(taisyou)+ "年です(元年1912年)")
print("昭和"+ str(syouwa)+ "年です(元年1926年)")
print("平成"+ str(heisei)+ "年です(元年1989年)")
print("**********************************")
#選択
def seireki_gengou():
    choice_seireki = input("西暦を入れてください : ")
    meiji_se_ge = int(choice_seireki) - int(1867)
    taisyou_se_ge = int(choice_seireki) - int(1911)
    syouwa_se_ge = int(choice_seireki) - int(1925)
    heisei_se_ge = int(choice_seireki) - int(1988)
    reiwa_se_ge = int(choice_seireki) - int(2018)

    if int(choice_seireki) > int(1867) and int(choice_seireki) <= int(1911):
        print("明治"+ str(meiji_se_ge)+ "年です")
        input()
        sentaku()
    elif int(choice_seireki) > int(1911) and int(choice_seireki) <= int(1925):
        print("大正"+ str(taisyou_se_ge)+ "年です")
        input()
        sentaku()
    elif int(choice_seireki) > int(1925) and int(choice_seireki) <= int(1988):
        print("昭和"+ str(syouwa_se_ge)+ "年です")
        input()
        sentaku()
    elif int(choice_seireki) > int(1988) and int(choice_seireki) <= int(2018):
        print("平成"+ str(heisei_se_ge)+ "年です")
        input()
        sentaku()
    elif int(choice_seireki) > int(2018) :
        print("令和"+ str(reiwa_se_ge)+ "年です")
        input()
        sentaku()
    else:
        sentaku()
def gengou_choice():
    gengou_choice= str(input("番号 1-5 で選んでください:"))
    if gengou_choice == "1":
        print("明治が選ばれました")
        meiji_year = input("明治何年を調べますか?(数字):")
        meiji_seireki = int(meiji_year)+ int(1867)
        print("明治"+ str(meiji_year) +"年は西暦"+ str(meiji_seireki )+ "年です")
        input()
        sentaku()
    elif gengou_choice == "2":
        print("大正が選ばれました")
        taisyou_year = input("大正何年を調べますか?(数字):")
        taisyou_seireki = int(taisyou_year)+ int(1911)
        print("大正"+ str(taisyou_year) +"年は西暦"+ str(taisyou_seireki )+ "年です")
        input()
        sentaku()
    elif gengou_choice == "3":
        print("昭和が選ばれました")
        syouwa_year = input("昭和何年を調べますか?(数字):")
        syouwa_seireki = int(syouwa_year)+ int(1925)
        print("昭和"+ str(syouwa_year) +"年は西暦"+ str(syouwa_seireki )+ "年です")
        input()
        sentaku()
    elif gengou_choice == "4":
        print("平成が選ばれました")
        heisei_year = input("平成何年を調べますか?(数字):")
        heisei_seireki = int(heisei_year)+ int(1988)
        print("平成"+ str(heisei_year) +"年は西暦"+ str(heisei_seireki )+ "年です")
        input()
        sentaku()
    elif gengou_choice == "5":
        print("令和が選ばれました")
        reiwa_year = input("令和何年を調べますか?(数字):")
        reiwa_seireki = int(reiwa_year)+ int(2017)
        print("令和"+ str(reiwa_year) +"年は西暦"+ str(reiwa_seireki )+ "年です")
        input()
        sentaku()
    else:
        sentaku()

def sentaku():
    print("何を調べますか?")
    print("1: 元号から西暦")
    print("2: 西暦から元号")
    print("3: メニュー")
    print("4: 終了")
    print("***********************************")
    menu = str(input("番号 1- 4 で選んでください :"))
    if menu == "1":
        print("元号から西暦を計算します")
        print("1: 明治")
        print("2: 大正")
        print("3: 昭和")
        print("4: 平成")
        print("5: 令和")
        gengou_choice()
    elif menu == "2":
        print("西暦から元号年を計算します")
        seireki_gengou()
    elif menu == "4":
        sys.exit()
    else:
        sentaku()
sentaku()
gengou_choice()
seireki_gengou()
input()


ちょっと書いてみたりして遊んでました
これもclass使うともう少し簡潔にかけそうですが....
なにぶんにも専業農家.....
計算式とか不等号とか違っていたら教えてください
それではまた しばらくはつながっていられそう。。。。

pythonでRssリーダーを作ってみました

easyguiでRssフィーダーを作ってみました

OSはarchlinuxです
ワンファイルで起動します
テキストにコピー&ペーストで.pyファイルを作って
権限与えて実行してください

RSSのURLをいれて選ぶとニュースヘッドラインがならびます
気に入ったニュースを選ぶと標準ブラウザを立ち上げ
詳細を知ることができます

初回起動時'/home/user/Desktop/feedurl.txt'を作ります
*userはusernameですのでパスは好きなところに変えてください
RssのURLはテキストとしてどんどん上書き保存されます
がテキストファイルですのでいらなくなったら消したり
編集したりできるかと思います
なんとなくICEFEEDと名付けてみました

自動更新をつけるためにtimeをimportしていますが未実装です
ゆえに手動更新です
作成途中ですので割当のないボタンが存在しているかもしれません
へたの横好きですのでこのプログラムによって起こったいかなる
問題にも対処できませんのでよろしくおねがいします


#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
#import pdb; pdb.set_trace()
import feedparser
import easygui as ez
import webbrowser
import time
def main():
#RSsurlinput
    feed = ez.enterbox("rss,rdfのURLを入れてください","rssfeed")
#Rssfeedsave
    f = open('/home/user/Desktop/feedurl.txt','a')
    f.write(feed+ "\n")
    f.close()
#Rssfeedload
    f = open('/home/user/Desktop/feedurl.txt')
    line = f.read()
    lines1 = line.split("\n")
    f.close()
#feedURLchoice
    msg ="What is your feedurl?"
    title = "Ice feed"
    choices = []
    for i in lines1:
        choices.append(i)
    choice = ez.choicebox(msg, title, choices)
    rss = choice
    dic = feedparser.parse(rss)
    news = []
    for entry in dic.entries:
        title = entry.title
        link = entry.link
        news.append([title,link])
#newschoice
    choice = ez.choicebox(dic.feed.title,"RSS",news)
    front_page = choice.split(",")[1]
    url = front_page.lstrip(" ").rstrip("]").lstrip("'").rstrip("'")
#browseropen
    webbrowser.open(url, new=2, autoraise=True)
if __name__ == "__main__":
    main()


こんな感じになりました
やっぱり自動更新いるかなぁ....^^;

いきなりソース〜農

必要にせまられ作ってみました

式自体が違うのかもしれませんので違っているようでしたら

ぜひ教えてくださいませ



#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
a = input("窒素,リン酸,カリ<%>を入れて下さい(インデントスペース):").split(" ")
b = list(a)
#print(int(b[0]),int(b[1]),int(b[2]))
chiso = int(b[0])/ 100
rinsan = int(b[1])/ 100
kari = int(b[2])/ 100
#print(chiso,rinsan,kari)
c = input("何キロの袋ですか?:")
c1 = int(c) * 1000
chiso_g = c1* chiso
rinsan_g = c1* rinsan
kari_g = c1* kari
chiso_1k = chiso_g / int(c)
rinsan_1k = rinsan_g / int(c)
kari_1k = kari_g /int(c)
#print(c1)
print("この袋の成分量は")
print("窒素" + str(chiso_g)+"g")
print("リン酸"+ str(rinsan_g)+ "g")
print("カリ"+ str(kari_g)+ "g")
print("1kg当たり")
print("窒素"+ str(chiso_1k)+"g")
print("リン酸"+ str(rinsan_1k)+"g")
print("カリ"+ str(kari_1k)+"g")
input()

小規模なので生産物の1rあるいは0.1rごとの施肥量が
でてくれるとありがたいなぁ
もう少し考えてみよ....


jigen2_4更新

  • コマンド実行日取得後の実行期間が30日はちょっとながいので7日くらいにしてみました(30日表示されると実行日が見えなかったので)
...このへんの設定はコンフィグファイルsave.txt作って直接編集にしたほうがよいのかもしれませんねぇ(編集可能な数値としてはsavetxtフォルダ階層情報・コマンド実行までの期間・実行日取得からの実行期間・起動してからのシャットダウンまでの時間.sudopass.シェルコマンド等...)

なんの計画もなしおもうがままにつくったので関数.classなども
使ってないですね(オブジェクト無思考・・・)
やはり関数など作っておくと後々”戻る”処理をするとき便利なのかもしれませんねぇ
次から考えてみよう...(直さないのか?)

今日はすずしくなったなぁ...






jigen2_3更新


とりあえず自分の環境ではうまく動作しているようですが

少し改良したほうが良さそうなところをみつけましたので

なおしてみました

  • saveファイルの場所をきちんと記述しました(どうやらちゃんとかかないと起動の仕方によってファイルの作成場所がかわってしまうようです(デフォルトはデスクトップにしてありますので任意の場所をopen関数各所フルパスで記述していただけるとよいかとおもいます
  • 初回起動時notuchだとセーブファイルがないのでエラーがでるようなので例外処理をいれてみました
起動のたびにコマンド実行日が近くなりますのでお気をつけください
倉庫に一応いれておきました



どうかな...





自分専用jigenpy

jigen2pyを

外付けデバイス削除専用で更新してみました

ddコマンドでゼロ埋め処理をする(のはず)ようにしたので

デバイス名や実行日の入力を間違えると非常に危険です

55行目のsudopassをいれてください

デフォルトでsdb1が削除対象です

*実はまだ試していないのでコマンドが正常動作するのかどうなのかわかっていません(試すと今つけている外付けデバイスの中身がすべて消えるので他デバイスを用意しないと
だめですね^^;)

一応倉庫にjigen2_1.pyでおいてあります

えくすとらんはこのスクリプトによって起こったいかなる
トラブルにも対処できませんのであしからず...












jigen2py 更新

パソコンを自動起動させたところ

スクリプトの立ち上がりがあまりにも早く

デスクトップの環境が揃うまでにスクリプトが終わってしまう

ことに気づきました

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import time
import sys, select
import subprocess as sp
print("しばらくおまちください")
#立ち上がりのウエイト設定
time.sleep(5)
#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or notuch is run):  ")
#インプット選択10秒間キー入力がなければマイナス一日
i, o, e = select.select( [sys.stdin], [], [], 10 )

if (i):
    print("input", sys.stdin.readline().strip())
    a = "y"
else:
    print("notuch key")
    a = "n"
if a == "y":
    global b
    global f
    b = input("何日後に設定しますか?:  ")
    print("実行日まであと{}日です".format(b))
    f = open('jigensave.txt','w')
    f.write(b)
    f.close()

elif a == "n":
    f = open('jigensave.txt','r')
    for b in f:
        b = int(b) - 1
        print("実行まであと{}日です".format(b))
        f = open('jigensave.txt','w')
        f.write(str(b))
        f.close()

#実行日を決定
future = today + datetime.timedelta(days=int(b))
#実行日から30日を取得(継続期間)

dur = future  +   datetime.timedelta(days=30)
#継続期間表示
for i in range((dur - future).days + 1):
    jikkou = future + datetime.timedelta(days = i)
    if today < jikkou:
        print(str(jikkou) + ":実行予定です")
    elif today > jikkou:
        print(str(jikkou) + ":過去へ戻ることはできません")
    elif today == jikkou:
        print("実行しました")
       #シェルコマンドを実行
        cmd = "ls "
        sp.call( cmd, shell=True  )
print("実行日でなければ5秒後にソフトをキルします")
#起動後5時間後にPCをシャットダウン
cmd2 = "shutdown -h +300"
sp.call( cmd2, shell=True  )
time.sleep(5)

たちあがりにウエイトをいれてみました
これでも早い場合は数字を変更してみてください
あと...savefileはpyfileと同じ階層にできるといっていたのですがどうやら/home/usrnameの下にできているようですので
一応訂正...ファイル名 .をつけて隠し属性にしたほうがいいのかなぁ?
まあ 必要なら...そのときに...




できた?!jigen2py

昨日の機能にシャットダウン機能を追加しました

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import time
import sys, select
import subprocess as sp

#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or notuch is run):  ")
#インプット選択10秒間キー入力がなければマイナス一日
i, o, e = select.select( [sys.stdin], [], [], 10 )

if (i):
    print("input", sys.stdin.readline().strip())
    a = "y"
else:
    print("notuch key")
    a = "n"
if a == "y":
    global b
    global f
    b = input("何日後に設定しますか?:  ")
    print("実行日まであと{}日です".format(b))
    f = open('jigensave.txt','w')
    f.write(b)
    f.close()

elif a == "n":
    f = open('jigensave.txt')
    for b in f:
        b = int(b) - 1
        print("実行まであと{}日です".format(b))
        f = open('jigensave.txt','w')
        f.write(str(b))
        f.close()

#実行日を決定
future = today + datetime.timedelta(days=int(b))
#実行日から30日を取得(継続期間)

dur = future  +   datetime.timedelta(days=30)
#継続期間表示
for i in range((dur - future).days + 1):
    jikkou = future + datetime.timedelta(days = i)
    if today < jikkou:
        print(str(jikkou) + ":実行予定です")
    elif today > jikkou:
        print(str(jikkou) + ":過去へ戻ることはできません")
    elif today == jikkou:
        print("実行しました")
       #シェルコマンドを実行
        cmd = "ls "
        sp.call( cmd, shell=True  )
print("実行日でなければ5秒後にソフトをキルします")
#起動後5時間後にPCをシャットダウン
cmd2 = "shutdown -h +300"
sp.call( cmd2, shell=True  )
time.sleep(5)



これを一応デスクトップに置いているので

デスクトップエントリーに記述

[Desktop Entry]
Name=jigen2py
Exec=lxterminal -e python3.7 /home/xtoran/Desktop/jigen2.py
Type=Application

を/home/ユーザー名/.config/autostart
にjigen2py.desktopで保存(権限注意)

この設定ではスクリプト起動後5時間後にパソコンがシャットダウンします

えくすとらんの場合はbiostimer設定によって朝5時15分に
ブートしスクリプト初回手動起動30日後にコマンド実行の設定、
キー入力がなければ5時間後にシャットダウン・次の朝
オートでブート。スクリプト起動でキー入力なければ
29日後にコマンド実行と、コマンド実行日をマイナスしていきます
一応これでできたかなぁ^^
倉庫にpyファイルと記述済みデスクトップエントリーをいれておきました

もうすこし...

この前のpythonスクリプトを起動後パソコンのシャットダウンの

方法を考えていたのですが調べてみるといろいろあるようです

cronやatコマンドで時刻を設定する方法などがでてきました

しかし折角なのでスタートアップ登録した自動実行pyに

シャットダウンコマンド(起動時プラス時間で設定しておけば

オッケーなのかもと考えました

まだ実装と実験をしていませんのでうまく行くかどうかわかりませんが

うまくいけば勝手に起動・勝手にシャットダウン・決まった日にコマンド実行となり当初の計画どうりの挙動になるかとおもっています

最近ちょっと気になっているのはクリップボードマネージャ

なのですがもっと簡単に定型文が使えるソフトがあればいいのになぁなんて思っています(スニペットっていうのかなぁ)

クリップボード登録した定型文を右クリックから頭文字で候補出力!(まあえくすとらんにはつくれないでしょうけど・・・)

そんなのあるよって方はぜひ教えてください^^

起動時自動実行py 更新。。

IDEを使っていたため気づかなかったのですが

昨日のスクリプト...実行すると一瞬で消えますね

せっかく実行日が見やすいように考えたのに台無しです

ですので更新です

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import time
import sys, select
import subprocess as sp

#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or no touch):  ")
i, o, e = select.select( [sys.stdin], [], [], 10 )

if (i):
    print("input", sys.stdin.readline().strip())
    a = "y"
else:
    print("no touch")
    a = "n"
if a == "y":
    global b
    global f
    b = input("何日後に設定しますか?:  ")
    print("実行日まであと{}日です".format(b))
    f = open('jigensave.txt','w')
    f.write(b)
    f.close()

elif a == "n":
    f = open('jigensave.txt')
    for b in f:
        b = int(b) - 1
        print("実行まであと{}日です".format(b))
        f = open('jigensave.txt','w')
        f.write(str(b))
        f.close()

#実行日を決定
future = today + datetime.timedelta(days=int(b))
#実行日から30日を取得(継続期間)

dur = future  +   datetime.timedelta(days=30)
#継続期間表示
for i in range((dur - future).days + 1):
    jikkou = future + datetime.timedelta(days = i)
    if today < jikkou:
        print(str(jikkou) + ":実行予定です")
    elif today > jikkou:
        print(str(jikkou) + ":過去へ戻ることはできません")
    elif today == jikkou:
        print("実行しました")
       #シェルコマンドを実行
        cmd = "ls "
        sp.call( cmd, shell=True  )
print("実行日でなければ5秒後にソフトを終了します")

time.sleep(5)

こんな感じ

今回は実行日にシェルコマンドlsが実行されます
実行日でなければ5秒後に自動的に終了します

使い方(例)
  • biosタイマーでpcの起動を設定
  • スクリプトのデスクトップエントリーを作りスタートアップに登録しておく
  • 初回起動は手動で実行し何日後にシェルコマンドを実行させるか入れておく
  • スタートアップから起動されるとオートで”コマンド実行日まであと何日”が減ってゆく(これはスクリプトが実行されるとセーブテキストの”あと何日”の数字が減っていくようになっています。*更新のために手動実行した場合も減ってしまいますので内部処理2日前までに更新しないと手動実行でコマンドが実行されることになります(危険!)
  • 実行日になるとコマンドを実行します

ツッコミどころ満載です(自動でパソコンの電源を切れるように設定しないと意味がないです^^)
まだまだ改良の余地があるのかどうなのかもわかりません
自分で使うだけなのならこれでいいようなきもしています

素人が趣味で作ったものですので使用の際は精査の上自己責任にてお使いください
このソフトを起動させておこったいかなるトラブルにも対処できませんのでよろしくおねがいします


更新がなくなったら○日後自動でコマンド実行  python3

この前のブログではpythonプログラムをスタートアップで

起動する方法を調べてメモさせてもらいました

それもこれも実はいわゆる遺言ソフトといわれるものを

作ってみたかったというのがあって自分にもしものことが

あったときに自動でコマンド..あるいはソフトを起動できたら

いいのになぁとおもっていました

で・・・一応それらしいのを書いてみました

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import sys, select
import subprocess as sp

#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or notuch is run):  ")
i, o, e = select.select( [sys.stdin], [], [], 10 )

if (i):
    print("input", sys.stdin.readline().strip())
    a = "y"
else:
    print("You said nothing!")
    a = "n"
if a == "y":
    global b
    global f
    b = input("何日後に設定しますか?:  ")
    print("実行日まであと{}日です".format(b))
    f = open('jigensave.txt','w')
    f.write(b)
    f.close()

elif a == "n":
    f = open('jigensave.txt')
    for b in f:
        b = int(b) - 1
        print("実行まであと{}日です".format(b))
        f = open('jigensave.txt','w')
        f.write(str(b))
        f.close()

#実行日を決定
future = today + datetime.timedelta(days=int(b))
#実行日から30日を取得(継続期間)

dur = future  +   datetime.timedelta(days=30)
#継続期間表示
for i in range((dur - future).days + 1):
    jikkou = future + datetime.timedelta(days = i)
    if today < jikkou:
        print(str(jikkou) + ":実行予定です")
    elif today > jikkou:
        print(str(jikkou) + ":過去へ戻ることはできません")
    elif today == jikkou:
        print("実行しました")
       #シェルコマンドを実行
        #cmd = "ls "
        #sp.call( cmd, shell=True  )

この設定では○日後から30日間プログロムの実行を試みます

シェルコマンド(subprocess call)
のところはコメントにしてあります
一応 lsなんて書いてみましたがrmやddなどのコマンドを
使うと更新がなくなってから○日後にファイルやフォルダを
消すなんて使い方ができることを想定して作っています
権限あり(shell実行):
sp.call('echo "pass" | sudo -S command',shell=True)

スタートアップで起動するたびに一日づつ実行日が減っていきます 
データセーブの為にテキストファイル(jigensave.txt)
をpyファイルと同じ階層に
吐き出します(中身は”何日後”が数字で入っています。作成のあとは起動のたびにマイナスされる数字を上書きしていきます)

素人がなにもわからずに作っているものですので使用の際は
精査の上お使いください 

またプログラムで起こったいかなるトラブルにも対応できませんのでよろしくおねがいします

自分用メモです

昨日の自動実行を更に自動実行

OS上でスタートアップ登録した自作pyスクリプト

は今の所起動時に問題なく動くことがわかりました

さらにブート自体を自動で行うことができれば

朝起きる→パソコン起動してる→パソコンのソフトも起動してる

→(^^)ニコニコ

ということに・・

調べてみるとbiosからの設定でタイマーブートできるようで

これを使ってみました

とりあえず次の朝に起動するように設定をすませ外出し

夕方帰ってくると....あれれ起動してるぞ

設定を見直してみるとどうやらbiosで動いている時計の時刻

(RTC)が違うようです

更に調べてみるとこの時刻はグリニッジ標準時刻をさして

いるようでしたOS内で使っている時刻はこの時刻に

ローカルタイム補正(Asia/Tokyo +9:00)がかかって

いて日本時間を表示しているようです

お察しのとおりえくすとらんがbiosに設定した時刻は

補正のかかったほうの時間ですので朝起動のはずが真っ昼間に

起動しちまったということのようです

気を取り直してグリニッジ時間で朝起動を設定

今日は朝からパソコンのまえで正座してまちかまえ

動くかどうか確かめてみました

結果は成功!ちゃんと動きました スタートアップも

成功しています

あとはシャットダウンも自動化できれば

電気が止められなければえくすとらんがいなくても

勝手に起動・勝手に

ソフトを起動し勝手に切れるを繰り返すロボットの完成ですね






起動時 python自動実行プログラムを自作

pythonでつくった自作プログラムを起動時走らせてみたい

ということでちょっと調べてみた

やり方は何種類もあったのだが今の環境(archlinux lxde)

でしっくりくるのは

作ったpythonスクリプトのデスクトップエントリーを作成して

/home/***/.config/autostartに放り込むというものでした

(***はusrname)

作ったpyfileは

#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
import  time
#時間を取得
time = time.localtime()
if __name__ == "__main__":
    print("今日は" + str(time[0]) + "年" + str(time[1]) + "月" + str(time[2]) + "日です")
input()

とりあえずこんな感じのものです ターミナルで月日がでます
いまはこれがデスクトップに置いてあります

そしてつくったdesktopentryは

[Desktop Entry]
Name=jigenpy

Exec=lxterminal -e python3.7/home/***/Desktop/jigen.py

Type=Application

こんな感じのものを ***.desktopの名前で保存

あとはできたファイルを/home/ユーザー/.config/autostartにいれました

ついでに/usr/share/applicationsに放り込むと

スタートメニューに自作プログラムが表示されますね


ログオフ・ログインしてみると



ちゃんと実行されたようです

とりあえずφ(..)


こ・・・こんにちは・・・

お・・おひさしぶ・・りです

しばらくブログを更新していませんでしたが

書き出そうと思うとなかなか億劫になってしまうものです

なにをしていたかというと...

特に何もしていません^^

新しいスマホゲームデビューを何個かいたしました

いまやってるのは

ALTOs(スノーボードのゲーム)

ブレイブリーデフォルト(フェアリーエフェクト)

などです

ALTOsは2Dながらキッカーのオーリーのタイミングや

ジャンプなどの浮遊感が実際の感覚に

似ているような気がして面白いです

作者の方はスノーボード好きなんでしょうねぇ^^

ブレーブリーデフォルトは

まだ始めたばかりですがわかりやすくやりこみ要素満載の

RPGだとおもいます MMOの王道的なジョブ構成で

ナイト

黒魔道士

白魔道師

シーフ

狩人

などがありPT組んで強い敵に立ち向かう系ゲームでしょうか?

えくすとらんはいつものようにヒーラー職(白魔道士)を選んで

プレイしています

そろそろソロプレイもきつくなってきた感もありますが

フィールドにいる人たちも多く

乱入などできる機能もあるようでストーリーを進めていけば

自然とお友達もできていくのではないかと思っています・・

ゲーム等もやっていますが趣味のpython勉強の方も

ぼちぼちやっています

paizaさんのほうで新しいpythonの勉強動画が無料アップ

されているようでわかりやすくてすごくためになります

感謝感謝^^

ギターの中古アンプも800円で買ってきたし...

やりたいことがありすぎる...

お金があったらワウペダルがほしいなぁ

ほしいものはパソコンの中に^^

見るのは自由だし...

それではまた・・・/






ひとりごと ぶつぶつ....SHA256

ブロックチェーンとやらが巷ではやっている?らしい

なんだかよくわからないがとりあえず初心者向けの

説明をみてみるとよくわからなかった...が

文字列をハッシュ化するらしい?...




import hashlib

hash=hashlib.sha256("xtoran".encode('utf8')).hexdigest()

print(hash)

私はハッシュ化された(確かに私の分身ではあるがその姿は私の面影すら残していないのである)

もう戻らない

暗号ならば復号できるのだろうがハッシュからは復号できない
(その分身が私のものであることを知るには私の名前を知っている必要があるのだ)

hash2=hashlib.sha256("xtoran".encode('utf8')).hexdigest()

>>> print(hash == hash2)#xtoranとxtoranは同一か?
True #そうです

hash3=hashlib.sha256("xtorao".encode('utf8')).hexdigest()

xtoraoの登場だ!一文字違う!


>>> print(hash == hash3)#xtoranとxtoraoは同一か?
False#ちがいます

なんてやってみた

これに時間をつけるのか?

同じ時刻のスタンプで整合すれば一致されたことの証明
がとれるってことなのかな...


しかしやりたいことはただファイルにパスワードを...

強固だが簡単に時間をかけず作りたいだけ...

何か作ってみよう...





cpuの温度

なんとなくarchlinuxでCPUの温度をとってくる

プログラムをpython3で書いてみた

温度は/sys/class/hwmon/hwmon2/temp4_inputからほぼ一秒ごと(sleep(1))でとってきています


#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import sys
import time
print("###cputemp###")
def timing():
    while True:
        with open('/sys/class/hwmon/hwmon2/temp4_input') as t:
            for temp_date in t:
                t = int(temp_date.strip()) / 1000
        sys.stdout.write("\r{}".format(t) + "C     ")
        sys.stdout.flush()
        time.sleep(1)

if __name__ == '__main__':
    timing()

ターミナルに出力しますが無限ループですのでctrl+cかターミナルを終了で終了です

えくすとらんは素人ですので実行によって起こったいかなるトラブルにも

対応できませんのであしからず

実行はプログラムをメモ帳にコピペ実行権を与えて端末で実行です

追記
CPUによって/sys/class/hwmon以下の構造がちがうようですのでtemp*_inputを
探してopen()に配置します
えくすとらんのcpuはcore2qとペンティアムDでしたので
ペンティアムDマシンのほうは/sys/class/hwmon/hwmon1/temp1_input
から取っています
ただhwmon以下のtempの値がたくさんありどれをとれば一般的なCPU温度
なのかがわからないため(調べてもいないです)
なんとなくこれくらいの温度であろう数値のあるファイルをえらんでいます
のであしからず


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()

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














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