ゲーム初心者がJavaでゲームを作った話。

TwitterのTLでたまたまゲームを作った時の話になったので、今回はその話についてまとめてみようかなと思います。

 

私は生まれてからこれまで、あまりゲームを与えられずに生きてきました。

それに加えて3D酔いするのがあり、今もFPSなどは殆どプレイをすることができません。

マイクラなどはできたら楽しそうだなーとか思いつつ眺めてるんですが、ソシャゲは1日で飽きるので殆どしません。

過去に割とやりこんだゲームといえばポケモンモンハンぐらいでしょうか。

 

そんな私がゲームを作ることになったのは昨年の夏休みの後半ぐらいだったと思います。

他の部が文化祭に向けて準備する中、自分たち(情報研究部)も何か作ろうじゃないか、という誰かの提案で始まりました。

正直、検定も近かったですし、全く乗り気では無かったのですが、話し合った結果、チャリ走のような横スクロールゲームを作ろうということになりました。

開発チームは7人でしたが、当時の1年生(つまり今の2年生)2人と当時の2年生(今の3年生)3人は、できるだけ装飾や素材作りに回ってもらいました。

残った私ともう一人(@s39_02)で機能の大半は作り上げました(私も時々検定の勉強で抜けていましたが)。

 

そのゲームがこちらです↓

f:id:Q_tyokinuhata:20160613063314p:plain

f:id:Q_tyokinuhata:20160614173928p:plain

漂うクソゲー臭。

ですが、初めて作ったにしては中々の上出来ではないでしょうか。

まともに使える言語がJavaしかなかった為、迷わずJava(主にSwing)で作りました。

タイトルの「RunningMan4J」という名前は、当時流行っていた三代目 J Soul Brothersの例の振り付けと、私がお世話になった山本裕介さん作のTwitter4Jから取っていたりします。

登場キャラクターにも割とこだわりがあって、主人公の棒人間を除いた敵キャラは全て友だち(や私の彼女)をモチーフにしていたりします(私は原画を書いただけで、ドット絵は後輩に投げましたが)。

 

文化祭当日

メモリが解放されないという重大なバグを抱えていましたが時間が足らず、そのバグを抱えたまま走らせました(幸いマシンのスペックはそこそこあったのでなんとか耐えました)。

意外と盛況で、おそらく100人以上の方にプレイしていただけました。

ですが難易度が高すぎたあまり、クリア人数はたったの1人という結果に終わりました。

開発メンバーも誰一人としてクリアできなかったので少し予想はしていましたが…。

しかし、難易度が高すぎるというのも決して悪いことではなく、そのおかげで何度もプレイしていただけました。

 

二回目の挑戦

文化祭の出展だけではもったいないということで、クラスメートにこのゲームを触ってもらう時間を先生にいただきました。

これを機会に、メモリが解放されないバグを中心にできるだけデバッグし、難易度もできるだけ変えないようにしてリファクタリングしました。

情報処理科ということで、実際にプログラムを触ってもらい、ジャンプの速度や敵の人数を変えて遊んでもらったりもしました。

私自身に授業を回す能力がなく、若干グダったのが心残りですが…。

 

まとめ

開発時間に余裕が無かったあまり、諦めた機能がいくつもあります。

例をあげると、得点機能やランキング、ログなどです。

かといって今から追加で作るモチベーションなど無く、現在は放置している状態です。

また余裕ができたらぼちぼち開発して、ネット上で公開でもしてみようかと思います。

情報処理競技大会に出場しました。

本日、情報処理競技大会兵庫県大会に出場しました。

昨日の晩から焦りながら割とマジで勉強して、今朝もマックでゴリゴリ過去問を解いていたのですが、結果は団体3位個人15位と、全国大会には一歩届かずという結果でした。

 

焦り始めるのが遅すぎなんですよね、あほです。

 

II部アルゴリズム競プロのおかげなのか、思ったより調子が良かったです(ただ表計算が駄目でした)。

I部は問題傾向が若干変わったようで、思うように点数を取れなかったのが今回の敗因かなと思います。

 

来月はおそらくIT選手権があるので、今回の失敗を踏まえて全国大会に出場できるようにがんばります。

 

どうでもいいかもしれませんが、今日は人生で一番トイレに行った日かもしれません。

トイレに行った回数で競技の順位が決まるのなら、私はおそらく1位でした。

 

以上。

CSSのuser agent stylesheetとは。

最近は学校の授業の関係上、HTML / CSS / JavaScript / PHP あたりをよく使うのですが、その中のCSSで新しい発見があったのでここに記録しておきたいと思います。

 

ブラウザ毎に定義されているデフォルトCSSuser agent stylesheetというものがあるのですが、これが今回の記事での敵です。

GoogleChromeに搭載されているデベロッパーツールを使うことでその存在を確認できるかと思います。

f:id:Q_tyokinuhata:20160527003907p:plain

画像を見ると分かるように、HTMLbody要素に対応するセレクタの中に、勝手に余白を挿入しています。

しかし、私は全称セレクタですでにmarginpaddingの初期化を行っていました。

それなのに何故適用されなかったのでしょうか。

それは、CSS詳細度という概念によって、セレクタ強さが定められているからでした。

全称セレクタ

タイプセレクタ

クラスセレクタ

属性セレクタ

擬似クラス

IDセレクタ

インラインスタイル

セレクタは主にこのように分類されるのですが、下にいくほど力が強くなります。

つまり、全称セレクタで書いたmarginやpaddingの初期化がタイプセレクタ(この場合はbody)によって上書きされていたのです。

なのでbodyでmarginを初期化してやると、user agent stylesheetが入れたmarginに打ち消し線が引かれるかと思います。

f:id:Q_tyokinuhata:20160527010222p:plain

 

user agent stylesheet詳細度など、本当にめんどくさい概念でてんこ盛りですが、CSSを設計するときは気をつけないと駄目だということを知り、とても勉強になりました。

Yahoo! User Interface Library(YUI3)のreset.cssなど、便利なものもあるらしいのでそちらもチェックしてみると良いかもしれません。

CSS Reset - YUI Library

 

詳細度の詳細については、以下のリンクを参照してみてください。

developer.mozilla.org

 

何か誤りがあればご指摘お願いします。

それでは。

『プログラムはなぜ動くのか』を読んだ感想。

前々回の記事に続き、今回も日経BPの本の紹介をしてみようと思います。

ちなみに前々回の記事↓

kazukichi.hatenadiary.com

 

今回は『プログラムはなぜ動くのか』です。

 

f:id:Q_tyokinuhata:20160510031126j:plain

 

ですが、一つ注意があります。

私が読んだのは初版で、現在は二版が出版されています。

ブックオフで安く売っていたから購入したという経緯があります。

なので、今後買う人は2版を買った方が良いと思います。

ですが、このシリーズのモットーは『10年後も通用する"基本"を身につけよう』なので、さほど内容に問題はないような気がします(二版を読んでいないので分かりませんが)。

 

この本ですが、タイトルの通り『プログラムはなぜ動くのか』を様々な視点から説明してくれています。

大きく分けるとソフトウェアの視点ハードウェアの視点といったところでしょうか。

ソフトウェア視点だとコンパイラアセンブリ言語ハードウェア視点だとCPUメモリレジスタの話が印象的です。

とはいえ、プログラムが動く過程を説明しているだけなので、そこまで専門的な内容ではなく、ある程度勉強をしたことがある方であれば、殆どが一度は聞いたことがあるワードだと思います。

 

私はこの本を読んでアセンブリ言語がちょっと(ほんのちょっと)分かったのが嬉しかったです。

興味も湧いたので勉強してみようかなーとか思っていたりもします。

 

きっと役に立ちます。

それでは。

プログラムはなぜ動くのか ― 知っておきたいプログラミングの基礎知識

プログラムはなぜ動くのか ― 知っておきたいプログラミングの基礎知識

 

 

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

 

 

高専カンファレンスlolに参加した。

f:id:Q_tyokinuhata:20160430225657j:plain

kosenconf.me

 

 

ブログを書くまでが高専カンファレンスなので、眠いですが書きます。

 

 

4月30日。天気は晴れ。

明石高専で行われた高専カンファレンスlolに参加させていただきました。

参加したとはいいつつも、自分から何かプレゼンしたり、ブースを用意したりというのではなく、ふらっと遊びに行くような感覚で参加しました。

ちなみに私は高専ではないです。高校生です。

たつお(@s39_02)と一緒に行きました。

 

 

さて、今日1日にあったことをだらだらと綴っていきます。

朝起きました。

準備をしました。

家を出ました。

電車を乗り継ぎ、明石高専の最寄り駅である魚住に到着しました。

 

明石高専についたのはいいのですが、さっそく迷いました。

高専カンファレンスをしていそうな気配が全くしないのです。

結局、数十分迷い、プレゼンを途中から見る形となりました(どうやら正門ではないところから入ってしまったらしく、それが迷った原因でした)。

悲しい。

 

プレゼンは人それぞれ色んな分野について発表していたのですが、どれも面白かったです。

というか全員話すのが上手すぎる。

心を鷲掴みにされました。

リスペクトしました。

私が特に面白いと感じたのはじゅりあん(@MITLicense)さんの「ラブライブ!で学ぶドメイン駆動設計入門」でした。

※私はラブライブ!を存じ上げませんが、それでも楽しめました。すごい。

 

プレゼン発表が終わると次はブース発表でした。

いくつかの企業さんが色々展示していました。

そこでGithubのステッカーをいただきました。

かわいい。

f:id:Q_tyokinuhata:20160430230035j:plain

説明が適当になってきました。ごめんなさい。

 

ブース発表が終わると最後は懇親会です。

らりょす(@raryosu)さん、いるやん先生(@Iruyan_Zak)、ふるつき(@theoldmoon0602)さん、hum(@hum_op)さん、なまちゃん(@namachan10777)など、そうそうたるメンバーに挨拶しました。

名刺、手書きで本当にごめんなさい(間に合いませんでした)。

 

各位に挨拶を終えた私は、眠かったので足早に帰りました。完。

 

おまけ

いるやん先生にずっと言いたかったことも言えて良かったです。

本人も満更ではないらしいので積極的に使っていきましょう。

あと、声が可愛かったです。

 

さて、最後は身長が低くて上手く肩を組めなかったかずきちでお別れしましょう。

f:id:Q_tyokinuhata:20160430232100j:plain

 

また次の機会があれば是非とも参加したいです。

おやすみなさい。

『世界でもっとも強力な9つのアルゴリズム』を読んだ感想。

以前、たまたま立ち寄った書店でタイトルと表紙に一目惚れして、内容もロクに見ずに購入しました。

それをようやく読破したので紹介したいと思います。

 

f:id:Q_tyokinuhata:20160427024127j:plain

 

この本はJohn MacCormick(ジョン・マコーミック)という英ディッキソン大学コンピュータ・サイエンス教授の著書を日本語に翻訳したものです。

ページ数は、あとがきを入れて300ページちょっとなので、400ページを超える超大作・不朽の迷作『関数型プログラミングに目覚めた!(以下略)』よりはライトですね。

↓ちなみにそのときの記事です↓

kazukichi.hatenadiary.com

 

初版が2012年なのでレビューするのも微妙な時期ですが、面白かったので良しとしましょう。

 

まず、タイトルには『世界でもっとも強力な9つのアルゴリズム』と書いてありますが、ソートアルゴリズム探索アルゴリズムのような汎用的アルゴリズムではありません。

 

例をあげると、公開鍵暗号誤り訂正符号データ圧縮データベースデジタル署名など、情報処理技術者試験でおなじみのワードに加え、検索エンジンインデクシングページランクパターン認識決定不能性などの技術が説明されています。

 

とはいえ、そこまで難しい説明や専門用語は出てこないのである程度の知識があれば容易に理解できる内容なのではないでしょうか。

 

個人的には、自分の好きな分野を見つけるのに最適な技術書だと感じました。

この本を読んで、自分の興味ある分野を見つけて、さらに一歩上の専門書や論文に入っていける入門書のような立ち位置な気がします。

 (ちなみに私はパターン認識に興味が湧きました)

 

技術書では割とはずれを引くことが多い私ですが、この本はとても良書だったかと思います。

技術書なので、値段は2000円と少々高めですが、気になった方は是非とも読んでみてください。

 

世界でもっとも強力な9のアルゴリズム

世界でもっとも強力な9のアルゴリズム

 

 

ITパスポート合格体験記。

先日、情報処理技術者試験がありましたね。

私は基本情報技術者試験の(午前免除試験に合格している為)、午後試験だけ受けてきました。

合格しているような気がします(多分)。

 

本題に入ります。

2月の中旬ぐらいに受けたITパスポート合格証書がやっと届きました。

f:id:Q_tyokinuhata:20160418213519j:plain

 

なので、勉強方法合格体験談などを語っていこうと思います。

とはいえ、この試験はレベル1なので、ほとんどの方は普通に勉強してると合格するとはずです。

 

ちなみに情報処理技術者試験の各試験のレベルについては以下を参照してください。

情報処理技術者試験 - Wikipedia

 

肝心の勉強方法ですが、最初は教本を読みました。

技術評論社の合格教本シリーズです。

 私が使ったのは平成27年度版ですが、どうやら平成28年度版も出ているみたいです。

平成28年度 ITパスポート合格教本 (情報処理技術者試験)

平成28年度 ITパスポート合格教本 (情報処理技術者試験)

 

 他にも栢木先生シリーズやよくわかるマスターなど、各出版会社から色々出ているので自分に合った本を買うと良いと思います。

 

教本を一通り読み終えた後は、問題集を解きました。

大原の問題集です。

はじめてのITパスポートトレーニング問題集〈2015年度版〉

はじめてのITパスポートトレーニング問題集〈2015年度版〉

 

 ITパスポート公開問題はネット上にも転がっているのですが、せっかくなので買いました(というか学校で買わされました)。

けっこう古い問題や、FEAPなどの問題もちょいちょい入ってるので個人的には解いて良かったと思えました。

 

その後はIPAで公開されている公開問題や、CBT形式の問題を解いていました。

【ITパスポート試験】過去問題(問題冊子・解答例)

【ITパスポート試験】CBT疑似体験ソフトウェア

 

そして試験当日。

公開問題はある程度パターン化されていたので正答率は8~9割だったのですが、本番の試験は割と初見の問題が多く、あまり良い点数が取れませんでした(教本の内容をしっかり理解していたら大丈夫だと思います)。

 

700点すら超えていないという残念な結果です。

こうならないようにしっかり勉強しましょう。

でも資格試験は基準点さえ超えてたら合格だから…(という言い訳)。

f:id:Q_tyokinuhata:20160418222105j:plain

 

受験方法配点基準などについては各自で調べてみてください。

 

さいごに

ITパスポートは他の資格とは違い、基本的にいつでも受けられるので、自分の受けたいタイミングで受けられます(多分)。

そして、CBT形式の受験で、人によって問題も変わるのが怖いところです(得意なところが出ればラッキー)。

次はセキュマネ(か応用情報)でも受けてみようかな…という感じです。

まあ、その前に大学受験があるんですけどね。

 

それでは本日はこの辺で。