読者です 読者をやめる 読者になる 読者になる

意表を突いても勝てない

サンムーンでたら頑張る

【Python】プロゲートとドットインストール(12回まで)で得た知識を使ってゲームを作った【まとめ】

夏休み明けて大学生活が始まり暇だったので、予てから興味のあったPythonの勉強を始めた。

【自己紹介】
・工学部3年
・基礎から勉強したのはCだけ
・オーバウォッチが好き

プロゲート

prog-8.com

での勉強は楽しく、分かりやすかったが無料でできる範囲は少なく

ドットインストールへ以降した
http:// http://dotinstall.com/


しかしこちらは演習形式ではなくただ文法について学ぶだけだったので

飽きてしまい、「簡単なゲームを考えてそれの実現に向けて勉強しよう!」と

考えた。

【簡単なゲーム】(単語作りゲーム,一人用)

1.プレイヤーは最初にひらがなの書かれたカードを5枚配られる。

2.プレイヤーはその中から1枚ずつ場に出して行き単語をつくる。

3.単語を作ったら判定してもらいコンピュータが知っている単語なら正解、なければ不正解とする

4.正解ならば場に出したカードは手札から捨てる、不正解ならば手札に戻しカードを一枚引く

5.手札を空にできたターンを競う

「補足」

・「ば」「ぁ」などは「は」「あ」とする
・カードの指定方法は要素番号の直接入力、確定・判定は100を入力

【必要(だと考えた)処理】

・特定の文字を除くひらがな全てをリストに入れる←できた

・リストからランダムに指定の数の要素を取り出す←いきなり指定の数取り出すとリストになるので1つずつ取り出した。

・無料の辞書データベースを使って単語の正誤判定←見つからなかったので自分で作った=単語数が少ない

・データベースの読み込み←txtファイルを使ったので使用してない

・単語の正誤判定←tango==listとすると上手くいかなかったので in を使ったところ部分一致でも正解となってしまう。←改行文字の扱いが問題かも

【とりあえず作ったコード】

import random
import codecs

def diff(a,b):#リストの差を出す関数 
    set_ab = set(a) - set(b)
    return list(set_ab)

hands=[]#手札用リスト 
turn=1 
#正誤判定用リスト読み込み
f=codecs.open('write.txt','r','utf-8')
lines = f.readlines() 
f.close()

#ひらがなをリストに挿入
hira=[unichr(i) for i in range(12354, 12435)]
#除去したいひらがなをリストに挿入       
out_hira=[unichr(j) for j in(12355,12357,12359,12361,12364,12366,12368,12370,12372,12374,
     12376,12378,12380,12382,12384,12386,12387,12389,12391,12393,
     12400,12401,12403,12404,12406,12407,12409,12410,12412,12413,
     12419,12421,12423,12430,12432,12433,12434)]      
#欲しいひらがなのみのリスト  
cards=diff(hira,out_hira)
#手札にカードを5枚配る 
for i in range(0,5):
    draw_card=random.choice(cards)
    hands.append(draw_card)



#手札が尽きるまで繰り返す
while 0<len(hands):
    print(str(turn)+"ターン目")
    turn=turn+1
    tango=u""#場に出したカードひらがなを繋いだもの
    ans_num=""#場に出したいカードの要素番号
    cho_hands=[]#場に出したカードのリスト
    
    #手札表示
    for i in range(0,len(hands)):
        print hands[i],
    
    while 1:
        ans_num=raw_input('please choice number: ')#要素番号なので0から
        if int(ans_num) >len(hands) and tango=="" :
            tango=u"無入力"
            break
        elif int(ans_num) >len(hands):
            break
        tango=tango+hands[int(ans_num)]
        cho_hands.append(hands[int(ans_num)])
        print (u"現在の単語:"+tango)
        
    for line in lines:#単語がリスト内に部分的にでもあれば
        if tango in line:
            print "正解"
            hands=diff(hands,cho_hands)#使ったカードを手札から減らす
            break
    else:
        draw_card=random.choice(cards)
        hands.append(draw_card)#カードをランダムに一枚引く
        print(u"吾輩の辞書に"+tango+u"という文字はない!")

【問題点】
・Python2.7で開発をしたためunicode関連で困りまくった、その場その場の処置なので理解していない
・手札より1枚多い数を指定するとエラーが出る
・無入力で決定すると文字列をintしてしまうことになりエラーが出る。
・正解時の比較にタプルを使用しているため重複文字が消える
・コードが汚い、もっと綺麗にできるはず
・辞書の単語数が少なくゲームが成り立たない

【今後】
なんだかんだ動くのでUIをつけたい(たくさんツールがあってどれがいいかわからない、VSみたいにデザインをGUIで作れると嬉しい)
辞書の単語数を増やす(なにか良い方法があれば教えてください)
単語の完全一致にする(これは多分できるかも)
コードをきれいにする(こんな書き方があるよってあれば教えてください)


【開発環境】
Win10 64bit
Anaconda
python 2.7

スーパーマリオメーカー 気をつけること

コースを作る上で気をつけること

•中継ポイントはないので長くしすぎない(長さと難易度を反比例に

•音譜ジャンプ、ばねジャンプが多いとストレスがたまる

•矢印やコインでの誘導を忘れない(製作者目線でやらない)

•難関ギミックは3つくらいまで

•全自動と激ムズは供給過多、爽快感があるステージ作りを目指す。

【シングル】ゲッコウガライコウボーマンダの補完案

考察兼構築案みたいなもの

ゲッコウガが毒びしを撒いて
ボーマンダで暴れて
ライコウで嵌めると言う並び

Adamsさんが結果を残した並びである

残りの三体に何を入れるかを考えた。
この3体だけで回してきつかったのは
うまい人が使うスカガブ、マンムーもきつい

そこで入れたポケモン

わざ どくどく/ちょうはつ/ブレイブバード/ステロ
もちもの イバンのみ

上であげた内
に(見た目は)強い

上で挙げたポケモンは対面でほとんど逃げてくれるので行動回数が稼げて良い。
イバンのみがあることで不利対面でもたいがい二回行動できる。
ライコウバシャ対面でまもる読み身代わりを外してもこいつを後出ししてブレバで勝てる。
なぜか居座ってくるジャローダも死んでく。
胞子を打ってくるキノコもちょうはつどくブレバでいい感じになる

と、使ってて面白かったが残り2枠が埋めれなかったのでこいつの採用は今回スルーした。

振り出しに戻って上の三体の並びの強いと思うところは環境にはびこるガルーラボルトロススイクンに強いところ、特にボルトロスライコウ後出しからの身代わりが強かった。

そこでガルーラボルトロススイクンがいなければ強い並びを考えた。

………
………
………
!!!!!!!!!
(露骨な宣伝)

というわけで裏の3匹をクレバシャガルーラにしたところ絶妙にかみ合いました。
メガゲンガーに弱めなのでバシャーモのほえるをフレアドライブに、それに伴い一加速でメガゲンガーを抜けるようにようき型に変更しました。
またフェアリーの通りが良いのでゲッコウガ
ダストシュートを入れた(刺さった)

相手のパーティをみてボルトロス スイクン どくまもっぽいヒードラン がいなければ クレバシャガルーラ

スカーフっぽいガブリアス、スカーフっぽいランドロス、ゴツメマンムー、などがいなくて毒の通りがいいときはゲッコウガライコウボーマンダを出しました。

【結果】
レートは1900までは1日で到達
showdownでは相当苦戦して1480到達

【反省点】
クレクチ、ポリクチ、に対する立ち回りがよくわからなかった→初手クチートや初手ポリ2を外した後がしんどかった。まもる持ちが多いのでなんとかなるはずなのに

カバルカイリュがしんどかったカバのステロあくびほえるがしんどい→ゲッコウガにちょうはつを入れたがなかなかうまくいかなかった

メガゲンガーが重かった。初手ジャローダやクレッフイで起点作り→身代わりさいみんじゅつたたりめがうざかった。

ゲッコウガの技構成に悩んだ。どくびしは確定で、冷凍ビーム、がんせきふうじ、けたぐり、ダストシュート、こごえるかぜ、ちょうはつ全て欲しかった。


【総括】
イージーウィンの塊みたいな構築なのでストレスなくレートをしたい人にはおすすめ。あと短い期間である程度のところまですぐに行きたい人にも。2000到達するには構築力も、元構築に対する理解も足りなかったと思う。
ゲッコウガライコウボーマンダボルトロスを誘って殺すのが楽しく、強い並びだと思うので残り三体をしっかり考えていきたい


【ORASシングル】 ノオースタン

注:個体が用意できずshowdownでしか潜ってませんご承知ください。

showdownの1500代をうろちょろしてた構築です(60位ぐらい)。

結構良い感触だったので誰かに開拓して欲しいなーと投稿。

f:id:kidd5566:20150318180306j:plain

[構築の動機]
蔓延しているボルトスイクンに強いポケモンを使いたいと思いノオーに目をつけたのがはじまり、またレートにてスカーフサンダーにボコされたことから興味を持ち、ノオーサンダーという並びから始まった。


以下採用順に個別解説

【個別詳細】
ユキノオー@メガストーン 性格:ゆうかん 特性:ぼうおん→ゆきふらし
実数値:197(252)-154(220)-95-117(36)-105-72
 
構築のスタート。ウルガモスエンテイ後出しが効くのでじしん採用。やどりぎのたねでもよかったかもしれない。
スイクンがいたら出す。カイリューがいたら出す。
つぶてとあられで仕事ができるので困ったら出してた。ぼうおんにフェアリーの後出しするためと、好きなタイミングであられをふらしたかったため(エンテイの食べ残しが削れる)。相手がメガユキノオーの耐久を舐めてることが多く、三タテもよくあった。
 
•サンダー@こだわりスカーフ 性格:ひかえめ 特性:プレッシャー
実数値:179(108)-*-108(20)-194(252)-110-135(124)
(めざ氷個体 31-*-31-31-31-30)
技:10まんボルト ボルトチェンジ めざめるパワー氷 ねっぷう
 
すごく強かった。この構築のMVP。努力値はCぶっぱSはメガゲンガー抜き抜き、後は適当というひどいものだが強かった。初手ゲッコウガを逃さずに狩れる、ゲンガー、ガルーラに弱くない(ボルチェンで逃げる)、ガブ、マンダ、ランドなどをを上から葬る、などなど思考停止で初手に出せるイケメン。サンダーの圏内に入れるように全てのポケモンが立ち回る。



エンテイ@食べ残し 

この構築のNo.2。本来のノオースタンなら鋼枠のところにエンテイを入れた。ドラゴンに薄くなるが、他のポケモンたちがわりと強いのでなんとかなった。
パーティが誘う、ニンフィアウルガモスハッサムギルガルドクレセリアポリゴン2ナットレイなどに鬼のように強い。ただやけどを引かなかったりして対耐久が怪しいので毒毒を入れたいが枠がない。相性有利な奴にはやけどを負わせるがガブやギャラには遠慮する小心者。後出しギャラから3タテを何回も食らったのでエンテイの自覚とともに構築を見直す必要があると思う。
 


ブルンゲル@ナモのみ 性格:ずぶとい
実数値:201(204)-*-134(252)-105-125-87(52)
技構成:おにび じこさいせい ねっとう ちょうはつ
H 4n+1 S 4振り65族抜き
 
物理受け枠としての採用。対ガルーラを考えたときにグロウパンチ+捨て身orなだれ に強いやつを考えたらこいつだった。
特性ワンチャンがあったりするのもいい。ナモのみを持たせることで後出しが安定し見れる範囲が広がる。ちょうはつはマリルリにはらだいこさせないために採用したが、受けループにも刺さってたように感じた。(対策として有効かは不明)
便利なポケモンだか役割が集中し過労死することが多々あったので改善したい
 
バシャーモ@いのちのたま 性格:やんちゃ
たまバシャーモをつかったことがなかったので
この育成論をパクった
基本選出は上の4体でなんとかなることが多いが、ガルーラいるけどブルン出せなかったりなど上4体の補完役。
本来の仕事は選出誘導。たまに3タテする。

ガブリアス@こだわりハチマキ 性格:ようき
特性:さめはだ
実数値:183-182(252)-115-*-106(4)-169(252)
技構成:げきりん じしん どくづき ストーンエッジ

 並びとして適当に採用した感があり、検討枠。ガルーラに弱くなく、ゲンガー、ランド、ボルトなどを選出誘導してくれる。相手にフェアリーがいなかったらげきりんで試合が終わるのが最高。エンテイが出せないときに相手の物理受けを倒してバシャやノオーの通りを良くする。

感想
showdownはレートと環境が同じではないのでそのまま通用するかは分からないがORASでもノオースタンは通用しそうだなと感じた。悪や竜の一貫がすごく、とくにサザンドラが重かった。
こだわりをふうじるナモブルンやゲッコウガに何もさせず倒すスカーフサンダーにはまったので来期も使いたい。
 
質問,意見,アドバイス←(切実)
があるかたはコメントか@poke_kidd
までお願いします。

ジャポ、イバンポケモン

五世代で使ってたのも含めて箇条書きで

•ジャポウルガ
 マンムー対面で蝶の舞積めるやつ
ガブカイリューの逆鱗たえるとかなんとか

•ジャポボルト
マンムー絶対殺すマン
たすきガブ、カイリューにも強くなる

•イバンナンス
 先制みちづれが強い

•イバンガルド
先制みちづれ
後攻攻撃できる

環境に刺さってそう

•イバンムドー
おいかぜしてステロ撒いて散る

•イバンオーロット
一生ゴーストダイブできる?

•がんじょうポケモンたち

また見つけたら追記します

バシャバンギ草案

メガライボルトを軸にレート潜ってたんですが割と受けるパーティなので有効急所負けが増え、萎えてきたので新パーティを考えます。

メガライボルト使ってて良かった点は、
環境に多いガブガルゲンガーボーマンダに強い(上から殴って落とせる)という点でした。
そこは継承しつつもっと殴り勝つパーティにしたいと思います。

上記のポケモンに上から殴れるポケモンバシャーモ
バシャーモの苦手なファイアローサンダーに強いバンギラス
ガブカバが重いのでトゲキッス
までは決まってますが、どちらをメガにするか、めざ氷を搭載するか否か、重いマリルリギルガルドをどうするか、などまだ検討中です。
裏軸をライボルトにするといいかも

こんな適当な記事をあげた理由は
広告対策でありそれ以上でもそれ以下でもないのです。




【ORAS】メガライボルトの調整メモ【シングル】

f:id:kidd5566:20150115102144j:plainf:id:kidd5566:20150115102134j:plain
メガライボルトの調整案が幾つかあったので整理する目的で記述

1.HSベース(A182地震耐え)
2.HSベース(A200地震耐え)
3.CSぶっぱ
4.ひかえめCSベース

技構成についてはあとで記述

1.HSベース(A182地震耐え)
テンプレ型とも言われている有名な調整です。

性格:おくびょう 持ち物:メガストーン
努力値:H108B24C140S236
実数値:159-*-83-143-80-170
メガ後実数値:159-*-103-173-100-203

•調整先
H16-1
無補正ガブリアス(182)の地震威嚇込み確定耐え
特化はちまきファイアローブレイブバードを威嚇込み30.1%~35.8%(69.3%で3耐え)
メガ前でガブリアス抜き
メガ後でオンバーン抜き(メガゲンガー抜き抜き抜き)

•ダメージ計算
H252振りマリルリ(207-100)に10まんボルトが85%~101.4%(6.3%)
D4振りメガリザードンY(153-136)に10まんボルトが86.2%~101.9%(6.3%)
H252振りスイクン(207-135)に10まんボルトが63.7%~75.3%
H252振りメガゲンガー(167-115)に10まんボルトが45.5%~54.4%(53.5%で確定2)
H252振りファイアロー(185-89)に10まんボルトで確定1
H252振りナットレイ(181-136)にかえんほうしゃが97.2%~114.9%(75%)
HD特化ナットレイ(181~184)にオーバーヒートて確定1
H252振りシールドギルガルド(167~170)にオーバーヒートが61%~71.8%(2発目は29.9%~35.9%)
D4振りガブリアス(183-106)にめざ氷が83%~98.3%
D4振りメガボーマンダ(170-111)にめざ氷が84.7%~101.1%(6.3%)


•メリット
ほどほどの火力、耐久、素早さの両立
特にかえんほうしゃナットレイをいい乱数で持っていけるのは強い
•デメリット
ガブリアスを意識しているのにもかかわらず1撃でもっていけず、いじガブだと落とされてしまう。(いじスカガブには無償突破されてしまう)
火力が微妙に足りていない(仮想敵を確定1では倒せない)

2.HSベース(A200地震耐え)
どうせ確定1にはできないので火力を抑えて耐久を増やしサイクル戦に備えた型


性格:おくびょう 持ち物:メガストーン
努力値:H236B4C4D12S252
実数値:175-*-81-126-82-172
メガ後実数値:175-*-101-156-102-205

•調整先
H16n-1
特化ガブリアス(200)のじしん威嚇込み高乱数耐え(93.7%)
特化はちまきファイアロー(146)のブレイブバードが威嚇込み28%~33.1%(確定3耐え)
H252振りのファイアロー10まんボルトが97.2%~114.5%(81.3%)
ダウンロード意識のD>B
最速

メリット
メガガブ以外のガブリアスに無償突破されない。
ガブ抜き調整やメガゲンガー抜き調整を抜く最速(進化前で準速メガボーマンダと同速)
多少の後出しがきく(被ダメは別記事に)
デメリット
圧倒的火力不足(与ダメは(ry

3. CSぶっぱ

性格:おくびょう 持ち物:メガストーン
努力値:C252D4S252
実数値:145-*-80-157-81-172
メガ後実数値:145-*-100-187-101-205

•調整先
最速
ダウンロード対策のD>B

•ダメージ計算
H252振りマリルリ(207-100)に10まんボルトが92.7%~110.1%(50%)
D4振りメガリザードンY(153-136)に10まんボルトが91.5%~109.8%(50%)
H252振りスイクン(207-135)に10まんボルトが67.6%~81.1%
H252振りメガゲンガー(167-115)に10まんボルトが50.2%~59.2%
H252振りファイアロー(185-89)に10まんボルトで確定1
H252振りナットレイ(181-136)にかえんほうしゃで確定1
HD特化ナットレイ(181~184)にオーバーヒートて確定1
H252振りシールドギルガルド(167~170)にオーバーヒートが64.6%~76.6%(2発目は33.5%~39.5%)
D4振りガブリアス(183-106)にめざ氷が87.4%~104.9%(31.3%)
D4振りメガボーマンダ(170-111)にめざ氷が91.7%~108.2%(43.8%)


メリット
メガゲンガーが確定2になる
乱数1の範囲が増える
4倍竜へのめざ氷の乱数が良い
かえんほうしゃでH252ナットレイを確定1にできる

デメリット
耐久が低いため後出ししづらい
乱数1のため結局他でのサポートや削りがいる。

4. ひかえめCSベース
こちらのブログを参照
【ORAS】環境意識控えめメガライボルトの調整 : ポケモンマスターに俺はなる!
•メリット
火力と耐久の両立
•デメリット
進化前はガブリアスより遅い




最後に
炎技(かえんほうしゃ)orまもるについて
ギャラボルトで他に炎ポケモンを採用しているとします。
かえんほうしゃのメリット
 ナットレイを見ても炎ポケモンの選出をしなくてもよい。
終盤の抜き性能の向上(電氷炎の受けづらさ)
環境にナットレイが増えている。

•まもるのメリット
サイクルを回す中で様子見ができる
威嚇だけ入れて引くことができる
106~134族を抜き返すことができる

今のところ僕はかえんほうしゃを採用しようと思うのですがまもるのメリットや具体例があればコメントやTwitter @poke_kidd などで教えていただけると嬉しいです。(パーティによるのはわかります)