俺的アイドルマスター

女の子をアイドルとして成長させるゲームだと認識してます。
しかしかわいい&歌うまいだけじゃやっていけないこのご時勢。
何が必要か。そう、腕っ節です。
というわけで、こんなアイドルマスターがあったら買うと思ったことをずらずらと。

  • 基本的には女の子をかわいいアイドルとして育てる
  • 稼いだお金で衣装やグッズを購入する
  • スタイルを良くするまたは維持するために筋トレする
  • 他のアイドルを蹴落とすためにバトルする(スト4的)
  • 負けたアイドルは負傷してペナルティ負う(衣装がボロクソになるとか顔に傷が出来て7日間活動できないとか)

こんなの。

なんというか、筋トレばっかりやってファイターみたいになったムキムキアイドルがセパレートの衣装着たら8つに割れた腹筋が見えてしまって相当ニッチな需要にしか応えられないし老いれば速攻消えてしまうんじゃないかイヤそれはそれでいいんじゃないか。
だからって歌とダンスばっかりやってたらちょっと人気出てきたときに他のアイドルにボコボコにされて表に出れずAVでも拒否されるレベルになってしまうから有る程度格闘もさせないとね。そしてバトルではくにおくんよろしく武器OKで。とかね。

裏でも表でも1位をキープするのは難しいと思うんですよね。そんなゲームないですか?

文字列置換

知らなかった事を恥じたので書く。

a = 'strA'
b = 'strB'
c = 'strC'

text = '1st : %s, 2nd : %s, 3rd : %s'
print text % (a, b, c)
#=> 1st : strA, 2nd : strB, 3rd : strC

tpl = (a, b, c)
text = '1st : %s'
print text % tpl
#=> 1st : strA, 2nd : strB, 3rd : strC

text = '1st : %s'
print text % (a,)
#=> 1st : strA

tpl = (a,)
text = '1st : %s'
print text % tpl
#=> 1st : strA

text = '1st : %s'
print text % a
#=> 1st : strA

text = '1st : %s'
print text % (a)
#=> 1st : strA

データの有効期限をdatetime使ってチェックする

よくある、サービスに登録すると登録確認用URLが記載されたメールが送信されて、そのURLへアクセスすると登録完了となるようなもの。で、有効期限を定める部分と有効期間内かどうかをチェックする部分。

from google.appengine.ext import db
import datetime

class SaveData(db.Model):

    time_limit = db.DateTimeProperty()
    auth_element = db.StringProperty()

    def set_data(self, time_limit, auth_element):
        if not isinstance(time_limit, datetime.datetime) :
            return False
        if not isnstance(auth_element, unicode) :
            return False
        self.time_limit = time_limit
        self.auth_element = auth_element
        try:
            self.put()
            return self.key()
        except:
            return False

    def get_data(self, key):
        if not isinstance(key, unicode) :
            return False
        try:
            return self.get(key)
        except:
            return False


class Action :

    TIME_LIMIT_HOUR = 24    # 有効期限24時間

    # 確認URL取得
    def get_confirm_url(self):
        key = self._get_confirm_key()
        return = self._confirm_url() % key

    def _confirm_url(self):
        return 'http://hogehage.com/?key=%s'

    def _get_confirm_key(self):
        time_limit = self._create_time_limit(self.TIME_LIMIT_HOUR)
        auth_element = self._create_auth_element()
        sd = SaveData()
        confirm_key = sd.set_data(time_limit, auth_element)
        return str(confirm_key)

    def _create_time_limit(self, hour):
        second_span = 60 * hour   # 有効期間(秒)
        return datetime.datetime.now() + datetime.timedelta(0, second_span)

    def _create_auth_element(self):
        # 必要な情報をごにょごにょ
        return u''

    # 有効かの確認
    def is_effective(self, requested_key):
        confirm_data = self._confirm_data(requested_key)
        if not confirm_data :
            return False
        if not self._is_effective_timespan(confirm_data.time_limit) :
            return False
        return True

    def _get_confirm_data(self, requested_key) :
        sd = SaveData()
        return sd.get_data()

    def _is_effective_timespan(self, time_limit) :
        now = datetime.datetime.now()
        time_diff = now - time_limit
        if time_diff > datetime.timedelta(0) :
            return False
        else :
            return True

メモレベル。色々肉付けしなきゃー
ネーミングセンスってどうやって鍛えればいいのかな。

NHK教育の数学番組でやってたカードマジックの答えだけ返すコード書いた

秋山仁さんが好きだ(`・ω・´)
それはおいておいて。答えだけ求めるコード書いた。

def nhalf(dlist, st=0):
    rlist = dlist[st::2]
    if len(rlist) == 1 :
        print rlist[0]
    else :
        if dlist[-1] == rlist[-1] :
            last = 1
        else :
            last = 0
        nhalf(rlist, last)

def last_one(num):
    data = range(num+1)
    data.pop(0)
    nhalf(data)

# 実行
last_one(6)    #=> 5
last_one(7)    #=> 7
last_one(8)    #=> 1

でーきたっ

Djangoのテンプレートエンジン使ってhtmlファイル内でif記述した時に詰まった事

例えばこう

from django.http import HttpResponse
from django.template import Context
from django.template import loader

def index(request):
    data = [
        {'name' : 'David', 'age' : '15', 'alive' : 'true'},
        {'namd' : 'Beyonetta', 'age' : '2025', 'alive' : 'false'},
        {'name' : 'Mizuki', 'age' : '0x1B', 'alive' :'true'},
    ]
    t = loadeer.get_template('index.html')
    return HttpResponse(t.render({'data':data}))

テンプレートでは「alive」の値が「true」なら「生きてる」、そうでなければ「生きてるとはいえない」と表示したい

{# ループ開始タグ #}
{% for val in data %}

{# name 要素の表示 #}
Name : {{ val.name }}<br>

{# age 要素の表示 #}
Age : {{ val.age }}<br>

{# 要素判定 #}
{% ifequal val.alive 'true' %}
生きてる
{% else %}
生きてるとはいえない
{% endifequal %}
<br>

{# ループ終了タグ #}
{% endfor %}

ノリで「{% if val.alive == 'true' %}生きてる{% endif %}」って書いたらエラーが出たのでマニュアル見た。

Django テンプレート言語 ― Django v1.0 documentation