ゲームジャム(文化の日編)

はじめに

 こんにちは。まんじゅうです。秋大祭お疲れ様でした。秋大祭という一大イベントも終わったことで、ついにTNPにも代替わりの時期が訪れ、新会長になりました。改めて、これから一年よろしくお願いします。

 本題に入りますが、11月2日(土)にゲームジャムを行いました。今回は企画したのが前日だったため、あまり集まらないだろうと思いましたが、参加者は4人とそこそこ集まりました。今回は文化の日前日ということで、「食欲の秋」、「運動の秋」、「芸術の秋」にちなんだお題として、「目玉焼き」、「障害物競走」、「一筆書き」の3つを(単語ガチャで)設定しました。

 参加者から成果物の紹介とコメントを貰っているので、 そちらも見ていただけたらなと思います。

制作物一覧

1年次 ハイブリッジ

開発環境 DXライブラリ

 このゲームは、自機である白い丸を操作して赤い丸に見つからないようにゴールを目指すゲームです。今回は自機と敵、フィールドと敵の視界まで実装できました。今後は敵の行動とスタート、ゴールを実装して、ゲームとして遊べるように頑張りたいです。

2年次 まんじゅう

開発環境 Unity

 「障害物競走」というお題があったので、3Dのシンプルな障害物競走を作ってみました。Unity初日でどこまでできるかやってみようと思って始めましたが、ほぼコーディング無しでゲーム部分が作れたのでとても驚きました。今後はシーン遷移を実装してタイトル画面とクリア画面を作って遊べる形のゲームにできるよう頑張ります。

3年次 いっちー

開発環境 DXライブラリ

 お題のひとつ「目玉焼き」を飛ばすゲームです。マウスをドラッグすることで、目玉焼きの飛ばす方向と力を決定します。目玉焼きをお皿の上に乗せることができればゲームクリアとなりますが、床の上に落ちるともう一度となります。

 ゲームジャム終了後に思い付いた上に、開発期間として1週間ほどかかったので、限られた時間でゲームを作るゲームジャムの趣旨とは違うものになってしまいました。

 ゲームジャム当日は、目玉焼きを作るゲームを作ろうと思ったのですが、良い案が浮かばず、ただ卵を割るプログラムができました。

4年次 HIM

開発環境 Webアプリケーション

『お絵かきソフト』

お題: 一筆書き
という訳で、作りました。
一筆ではないですが(挫折しましたorz)、お絵かきできます。

Javascriptとcanvasで作りました。

マウスで描きます。色とペンの太さを選べます。

一筆書がどーしても動かなくて断念したのが悔しかったです。次こそは…

最後に

 やっぱりゲームジャムは良いですね(テンプレ)。やる気も出ますし、何か新しいことにチャレンジする機会にもなるので。冬休みとかにまた開催したいですね。

 それと、今回試験的に1日だけの超短期間ゲームジャムを開催しましたが、皆ある程度形になっていて良かったです。これの影響でジャムの参加ハードルが下がればいいなと思います。

 それでは今回はこのあたりで。最後まで読んでいただいてありがとうございました。また次回のゲームジャム記事(多分)で会いましょう。

【月一】C++っておいしいの?

はじめに

お待たせ。待った?どうもプログラミングサークルTNP所属の広報担当kurokuです。(キツ…

先日サークル内で役職の引継ぎがあり、見事、広報担当(ブログ・Twitter更新)になってしまいましたなりました。

引継ぎの際に反省会も行われ、更新頻度について触れました。いい機会なので僕の目標というか、目安として(最低でも)月一回はブログを更新していきたいと思います。

 

そうはいうものの、毎月更新するとなると話題がなくなります。ただでさえ僕はグラブル、YouTubeでしか時間をつぶしていない気がするので、こんなことなら別に書かなくてもいいよなぁとか思うわけです。(むしろ書かない方がいい

そこで、サークル室のホワイトボードにブログの題材として質問などを受け付けようと考えました。誰でもいいのでゲーム制作でわからないことやプログラミングについてなどどんなことでもいいので書いてみてください。(コメント等でも歓迎です!

それについて僕が少し勉強して、このブログでできるだけ簡潔に、情報共有ができればなと思います。

(ただ、あまりにおじさんを悩ませるような難しい質問をすると僕の独断でなかったことにしてしまうかもしれません…)

 

C++ってどうなの?

さて、いよいよ本題です!ホワイトボードに早速題材が書いてありました。

「C++について」

 

いやいや。。

(雑じゃない?)

 

まぁいいんです。書きます。こんな感じでどんどん題材ください!

(できればもうちょい具体的に!

C++とは、手続型プログラミング言語であったC言語にオブジェクト指向やジェネリックプログラミングの考えを取り込んだ言語です。それぞれわかりやすく言うと、

・手続型

 プログラムを順番に実行していく

・オブジェクト指向

 オブジェクト(データと処理内容)ごとに独立させる考え

・ジェネリックプログラミング

 型などを意識させないように抽象化して記述する

といった感じ。

一見してC言語をもりもりにパワーアップさせたのがC++といった感がしますが、それは間違いありません。

しかし、そんなC++にも弱点はあります。

それは文法が難しいこと。

 
(僕はC言語由来のプログラムしか書けないのでわかりませんが)多重継承というのを組み込んだせいでポリモーフィズムにも影響が出たりでなかったり(?)
 
 
 
 

よくわかんないですねーー。

 
 
 
ですがサークル内でゲームを作る分には使えて損はないです。ライブラリもリファレンスも結構多めですし、何よりC言語が書ければC++も書ける!

これで終わってもいいんですが、内容がなさすぎるのでどんなことができるのかについて軽く触れたいと思います。

#include<iostream>

#include<string>

int main(void) {

std::string s = “hello”;

std::cout << s << std::endl;  //hello

       return 0;

}

C言語だとchar型の配列で書く必要があった文字列もC++ではstring型(正確にはstringクラス)に格納することができます。それに加え、文字列同士の足し算や部分文字列(例えば”ell”)を取り出したりなんかもできます。

std::cout<<s+s<<std::endl;  //hellohello

std::cout<<s.substr(1,3)<<std::endl;  //ell

#include<iostream>
#include<vector>
int main(void) {
  std::vector<int> vec;
  vec.push_back(0);
  vec.push_back(1);
  vec.push_back(2);
  for (int i = 0; i < vec.size(); i++) {
    std::cout << vec[i] << std::endl;  //0,1,2
  }                   

      return 0;
}

vector型(クラス)は配列とほとんど同じ挙動をします。ただ、宣言の部分で要素数を書いていないにもかかわらず値を格納することができています。

vectorは可変長配列と言われ、要素数を自由に変化させることができます。上の例だと宣言時は要素数は0でしたがpush_back()するたびに自身で要素を増やし格納しています!(push_backは末尾に格納するメソッド(関数))

さらにvectorはジェネリックプログラミングの要素も持っています。宣言する際にvector<int>としていますが、これはint型を要素に持つvectorを宣言しています。たとえばintの部分をdoubleやboolあるいは、自作の型MyDataとしてもvector<int>と同じく扱うことができます!

最後に紹介するのは演算子のオーバーロードです。

関数やデータ構造をユーザ側で定義できるのは知っていると思いますが、演算子についてもユーザが定義することができます!

例えば、

#include
#include
std::vector<int> operator*(const std::vector<int>& vec, const int& t) {
  std::vector<int>v(vec.size());
  for (int i = 0; i < vec.size(); i++) {
    v[i] = vec[i] * t;
  }
  return v;
}
int main(void) {
  std::vector<int> v = { 0, 1, 2, 3, 4 };
  v = v * 5;
  for (int i = 0; i < v.size(); i++) {
    std::cout << v[i] << std::endl;  //0,5,10,15,20
  }
  return 0;
}

と書いてみます。本来vector<int>*intなんてできませんが自分で*を定義することでそれを実現できてしまいます!

しかし、演算子オーバーロードを闇雲に使うと演算子本来の挙動と整合性が取れなくなりとても危険です!詳しいことは各自で調べてもらうとして、できるだけあらかじめ実装されているものを使うようにしましょう。

まとめ

大したこと書いてないのでまとめもくそもないんですが、まぁC++はいろいろ楽だよってことが伝わればいいかなと思います。興味が出てきた人はC++について調べたり、聞いたりして闇をのぞき込んでみればいいと思います。

こんな感じの雑まとめをこれからも月一以上で出していくのでどうぞお楽しみに!kurokuでした~。

ゲームジャム(1年生向け編)

はじめに

こんにちは、3年生のいっちーです。9/27~9/28に1年生向けのゲームジャムを行いました。

今回は1年生向けということで、2年生以上とペアを組んでゲーム制作を行うペアプログラミングを行ってみました。

ただ、ゲームジャムは2日間を予定していましたが、2日目は日程が合わない方が多く、私を含め2名だけの参加でした。なので、1日目と2日目でテーマを変えた実質1日のゲームジャムになりました。


1日目

1日目のテーマは「」「消える」「疾走感」でした。参加者は1年生が3名、2年生以上が3名で丁度良くペアを組むことができました。

なりょー(1年) & まんじゅう(2年)

開発環境:DXライブラリ

落ちてくる雨粒や障害物を避けながらゴールを目指すアクションゲームです。

コードを書く前に、ステージの概略や当たり判定の計算方法などを紙にしっかり書いていたのが印象的で、丁寧にプログラミングをしていると思いました。私は行き当たりばったりで進めていくことが多く、それがバグの原因にもなっているので見習いたいと思います。

T.S.(1年) & ずっきー(2年)

開発環境:Unity

プレイヤーを操作して、落ちてくる雨粒を避けるゲームです。

プレイヤーは雨粒に当たると小さくなっていき、最後には消滅してしまいます。当たり判定はプレイヤーの大きさに依るようで、プレイヤーが大きいうちは避けるのが難しく、プレイヤーが小さくなり消滅寸前になると避け易くなるという、バランスの考えられたゲームだと思いました。

UMA(1年) & いっちー(3年)

開発環境:DXライブラリ

前回のゲームジャムで制作した、鳥を火炎弾で焼き鳥にするストレス解消ゲームの改良版です。

当たり判定や火炎弾の連射の修正、焼き鳥を画面上方向に移動させて昇天させるなど、システム面と演出面で改良を加え、より一層ストレス解消が見込めるゲームとなっていました。


2日目

2日目のテーマは「強靭」「丸い」「焦燥感」でした。

まんじゅう(2年)

開発環境:RPGツクール

ボールをぶつけあうスポーツのようなゲームだそうです。

今回はアニメーションにこだわったようで、ボールがプレイヤーと敵の間を動くようにアニメーションし、ボールを投げている様子が表現されていました。

また、ある条件を満たすとプレイヤーの覚醒イベントが発生し、ステータス向上に加え、強力な必殺技が使用可能になるなど、一方的な試合になっていました。

いっちー(3年)

開発環境:DXライブラリ

ボールを操作して、制限時間内にスタートからゴールまで移動するイライラ棒のようなゲームです。

ボールには慣性が働いており、床には傾斜がついているので、思いのほか操作の難しいゲームになりました。また、壁に当たると加速度が反転します。


おわりに

制作期間がほぼ1日と短い時間でしたが、1年生全員がゲームを完成させることができたので、ペアプログラミングは成功と言えるのではないでしょうか。TNPはほとんど個人制作で今回のように複数人でゲーム制作を行うことがないので、これをきっかけにチームでプログラミングする機会が増えればいいなと思います。

「#月間競技プログラミングは役に立たない」が変わってきたという話 と 俄然出ないやるきの話

こんばんえるえる〜

研究が一向に進まない四年生のガナリヤです。
本当に進まないです、どこから手を出していいかも分からず、そういう状況になるとさらに研究のやる気がアになります。

そいういう状況なのでTNPのブログに逃げています(おい)
久々のポエム枠です。


競技プログラミングとは

上記を参考にしてください。
日本でいちばん有名な競技プログラミングのサイトのAtCoderが去年書いたブログです。
競技プログラミングの説明や、最近の社会の変化に対する流れが出てきました。

https://atcoder.jp/contests/abc142/tasks/abc142_b

初めて競技プログラミングの問題を解くなら上の問題などがよいです。

– for
– scanf
– printf

が使えれば解ける問題ですね、意外と競技プログラミングは他のアプリ制作やウェブ制作に比べると簡単だったりします


月間競技プログラミングは役に立たない

このブログのタイトルは「月間競技プログラミングは役に立たない」に関するものです。

この#月間競技プログラミングは役に立たない とはなんでしょうか?

競技プログラミングは、いわゆる「アルゴリズム」や「計算量」を考えて、如何に素早くコーディングするか?を競うスポーツです。


例えば上記に上げた問題なら

– forを書ける
– ifを書ける
– scanfが使える

をどれぐらいのスピードで間違いをすることなく書けるか?
という力が身につきます。

また、競技プログラミングはいわゆる「プログラミング筋肉」が身につきます。
どういうことかというと
「ぷよぷよ作りたいんだけど、ぷよが繋がっている判定どう作ろう」
というのが、一瞬で書ける力です。

昔はさっぱり出来ませんでしたが、競プロを初めて一年半ほどたった今は、迷うことなく書けるようになっています(実際に書いていないのでおそらくですが(おい))

競プロの楽しさといえばやはり、土曜日の夜21:00~22:40のコンテストで、リアルタイムに順位が変化するところと、それの結果によって、レートがダイレクトに決まるという点だと思います。
出るだけだとレートは伸びないし、下がることのほうが多く、強くなるしかレートは伸びないです。
ただ、それだけレートが伸びると非常に嬉しい気持ちになれまs

そんなこんなで、ハマると楽しい競プロなのですが、10年ほどまえから「競技プログラミングは実務で役に立たない」という論争が毎月のようにTwitterで行われていました。

特に、このころはまだ競技プログラミングの名前が世間で非常に薄く、情報オリンピックもまだ影が薄かった時代です。

そのため、いわゆるアルゴリズムを得意としない(得意分野がアルゴリズムではなく、他の開発系に向いている人)としばしばTwitterで論争が起きていました。


役に立たない時代から(一部)必要とされる時代へ

そんな論争もこのまえもまたTwitterで起きてました。

「競技プログラマーのコードは簡潔で、計算量のためなら可読性を下げたコードを書く。実務にとって、邪魔だし読み辛い」

みたいな論争でした。

ここらへんが勘違いされやすいところですが
「競技プログラマーはできるだけ計算量を減らす人間」ではないです

どちらかというと「計算量考えなくていいなら、簡単な実装・読みやすい実装を選ぶ」人間に、強くなるほどなっていきます。

理由は単純で、計算量の制約ないなら別にどんな解法でも良いからで、楽に書いて早めに提出したほうがレートが上がるからですね。

そんなこんなで、競技プログラマーはたしかに「アプリ」や「システム」「ファイル構成」などは苦手ですが、「汚い」コードとは必ずしもは言えないかもしれないです。


話がそれてきたので戻します(何も考えないで書いているので)

最近(僕はまだ二年弱しかやっていないですが)、非常に競技プログラミングの幅が就活・社会で広がってきているなと感じています。

先週の日曜日、コンテストで東京に行ってきました。

スポンサーは軒並みに太いです(僕は頭わるいし開発がガバなので入れませんが・・・)

競技プログラミングのスポンサーは、ここ数年非常に強いところが揃っています。

  • Google
  • Yahoo Japan
  • KEYENCE
  • MUGEN(画像処理+ロボットアーム 三ヶ月で収入が倍になってるらしい、こわいね)
  • Sky(人工知能)
  • Free
  • KLab(ラブライブの開発とか)
  • Future(アルゴリズム、人工知能)

今回のコンテストのスポンサーもYahooと電通で太い感じでした。

どうしてコンテストのスポンサーが比較的強いのかというと、新しい企業ほど(成長率の高い企業ほど)、より強い改革・そして海外に勝つための新しい技術を必要としています。

特に、競技プログラマーの

  • アルゴリズム力
  • 考察力
  • 実装力

を必要としています。(これは罠で、別に競技プログラミングやってない天才のほうが多分多いのですが)

また、DeepLearning系の会社も競技プログラマーを非常に欲しています。

新しいDeepLearningの開発や実装をするとなると、論文の公式を読んでそれを再現すること、そしてさらに拡張することが必要になります。
そういう力が競技プログラマーはすでに持っているため、必要とされるわけです。

先週のコンテストでFutureの人も、競技プログラマーを取る率が高く、競技プログラマーは他のこともできると言ってました


海外だとHackerRankを筆頭に、既に競技プログラミングで就職・転職することが当たり前になってきています。
日本だと情報の流通と、そもそもやる気の差が激しいので広まりません。

ただ、競技プログラミングが求められている仕事があるので
全員がそれにつくべきでないし、ウェブもアプリもゲームもありとあらゆるジャンルが必要であるため、そういうことになってほしくはないのですが
やはりこれからのプログラミングの3大テーマ

  • 人工知能
  • ビックデータ
  • IoT

を考えると、さらに競技プログラミングをやっている人間ほど有利になっていくんじゃないかと思います。
月間競技プログラミングが役に立たない が 簡単には否定できない時代が来たように思えます。
僕は開発ができないのでアですが・・・


やる気の話

ポエム枠なので、あとまだ寝る時間にははやいのでやる気の話をします。

というのも現在研究室で新しく入るB3と勉強会を一緒にしたい、といろいろとねっているのですが、結局「やる気」の話に陥ってしまうからです。

大学生は結構プログラミングができる子・できない子が非常にはっきりします。
文法が分からず、アプリなど動くものを作ったことがない子も居て、いわゆる下から上まで幾度となく居ます。

ただ、僕が思っているのはみんなプログラミングができないということはなく、むしろ「そういうプログラミングができるようになる機会がなかった」
が正しい表現だと思っています。

僕は1,2年生のころ、文法を暗記することに必死で、無駄な努力をしていました。

当然楽しくありませんし、しょうもないこと(C#のIE系とか)で時間を無駄にしていました。(これは無駄)ラムダ

ただ、僕はゲーム制作、そしてなにより競技プログラミングに出会って、レートが伸びて、オンサイトにいって、ある程度の満足感を得ることが出来ました。

プログラミングができない、やる気のないという人はおそらく、この「成功体験」や「承認欲求」を満たしたことがないんだと考えています。

一度、レートが伸びる、ゲームをプレイしてもらう、アプリを作ってTwitterにあげてFavをもらう、Qiitaに投稿する

こういう成功体験 をしているかいないかで、プログラミングに対する目的意識などが変わるんだなぁって思っています。

話がまとまらないので、まとめるとB3との勉強会でどうやる気を引き出すか?や、そもそもやる必要がないんじゃないか、迷惑なんじゃないか

など色々考えて、僕は何が楽しいんだろうなぁって考えるようになったということです

僕はやる気が他の人よりも強い人間ではなく、趣味もなく、お金をかけたいと思うことがないので(にゃん)

僕はゲームジャムは非常に賛成で、きっかけさえあれば、プログラミングが嫌い・できないが少しずつ変わると思っています。(コンテストがあって出れませんでした、ごめんなさい(次は是非出たいです!))
ゲームジャム・アプリ制作・競技プログラミング・Qiita・ウェブ制作、など、何でもいいのでなにか作ると決めて、それを外部に公開して遊んでもらう、成功体験をするのが大事なのだなぁと(終りが見えなくて焦っています)


寝る時間になったのでにじさんじ見て寝るます

グダグダ書きましたが、研究が進んでいません。
こういうダメ人間にならないように、やる気がモテる人間になってください
僕はそういう人になれなかったので、きょうも進んでいません

なんかつまらない話・ポエムすぎるのと、暗いので次の記事では「本当の技術系(Neo4jらへん)」か「にじさんじの推しライバー」を書きます

見返してないので、結構変なこと書いてるかも

ゲームジャム(夏休み編)

はじめに

 こんにちは。2年次のまんじゅうです。
記事を書くのは初めてなので、変なところとかあるかもしれないですが、どうか温かい目で読んでくれればと思います。

 今回のゲームジャムは8月14日と15日に開催しました。お盆でしたがそこそこ参加者がいて嬉しかったです。
 また14日、15日のどちらも猛暑日だったので、誰も熱中症にならなくて良かったと思います。

 今回はお題に沿って何か作るのではなく、なるべく自分で考えて制作する、という方向で企画していました。
 そのため、お題ではなく、あくまで何を作るか思いつかない人への救済措置として「倉庫」、「火」、「駐車場」、「重力」、「落とす」という単語を提示しました。

作品紹介

1年次 UMA

開発環境 DXライブラリ

 初年次講義で扱った「フラッピーバード」のソースコードを元に作ったそうです。
飛んでくる敵を避けたり、うまく弾を当てたりしてスコアを稼ぐゲームとなっています。
 元にしたゲームがある、という点を加味しても、初めての制作物としては完成度が高いと思いました。

2年次 たか

開発環境 DXライブラリ

 卍型の自機が卍の先端から放つ攻撃を敵に当てる、というゲームのようです。
攻撃を放つと、次の攻撃が可能になるまでの待機時間が発生したり、敵がランダムで生成してされた瞬間に攻撃されないよう、
敵の攻撃不能時間を設定していたりと、細かいところまで作り込んでいると感じました。

2年次 まんじゅう

開発環境 Siv3D

 「街コロ」というボードゲームを作ってみようと頑張ってました。
ダイスを振る機能と、出た目による建物の効果の処理は実装できたのですが、
 時間が足りなかったために建物購入の処理が完成せず、ゲームとしてはまだ成り立っていない状態です‥。

2年次 ズッキー

開発環境 Unity

 今年の夏コミに出した迷路ゲームを改良したものだそうです。
ランダムで壁を生成するようにし、それによって起こりうる詰み状態を防止するために壁を壊す機能を追加したそうです。
 また、壊した壁の種類と枚数によってゲーム終了時のスコアが増減するようにして、高いスコアを出すにはしっかり迷路を歩かないといけないようになっていました。

3年次 いっちー

開発環境 Unity

 なんと時間内に2作品完成していました。
 1つが火事の建物から人を避難させるゲームで、円形の足場を操作して障害物を避けつつ、小島まで避難させる、というものでした。
足場で人がバウンドする上に、小島が小さいため、難易度は高そうに見えました。


 2つめが、人を前に飛ばして、乗るとジャンプするキノコを駆使して停止するまでの距離を競うゲームでした。
地面に人がぶつかって転がり、その先のキノコに当たってまたジャンプ、という動きをしていたので、見ていて面白かったです。

3年次 うおちー

開発環境 Unity

 下に重力がかかっている空間で、上下に移動して火の玉を避けるゲームです。
当たり判定が実装できていないとのことですが、ゲームとしてはほとんど完成しているように感じました。

最後に

 やっぱりゲームジャムは良いですね。
他の人のアイデアやコードの組み方などを見て学べる機会になりますし、自分の制作活動への意欲も高まります。
 夏休みは長いのでだらけてしまいがちですが、今回の会でのやる気を思い出して頑張って制作していこうと思います。

TNPBOX 2019 夏コミver.

こんにちは。

TNP会長のいっちーです。

C96に出品する「TNPBOX 2019 夏コミver.」が完成いたしました。

内容は以下の通りになります。

  • 【β版】「普通の」RPG
  • smartball
  • スネークゲーム
  • 森の魔法使い
  • 迷路ゲーム
  • TNP BOX (ゲームランチャー)

表紙絵

制作者 : ハイブリッジ(1年次)

作品名の「TNPBOX」をイラストに落とし込み、当サークルのイメージキャラクター、TNP子とマッチさせた素晴らしい作品です。

絵が描けない2、3年次に代わり、 1年次のハイブリッジ君が描いてくれました。


【β版】「普通の」RPG

制作者 : まんじゅう(2年次)

開発環境 : RPGツクールMV

タイトルに「普通の」とある意味深なRPGゲームです。

今回はβ版ということで、完成版は”RPGアツマール”に投稿する予定だそうです。

※ゲームの途中で、数秒毎にエラーメッセージが表示される不具合が確認されています。その場合はお手数ですが、一度ゲームを再起動してくださいますようお願いいたします。


smartball

制作者 : うおちー(3年次)

開発環境 : Siv3D

昔懐かしのスマートボールがパソコンで遊べます。

ボールの入る判定が絶妙で、ついつい熱中してしまうゲームです。


スネークゲーム

制作者 : Yuta(3年次)

開発環境 : Pyxel

レトロな雰囲気が素敵なスネークゲームです。

ヘビの通った道が軌跡として残る、一風変わった仕様となっています。


森の魔法使い

製作者 : いっちー(3年次)

開発環境 : DXライブラリ

敵を倒し、アイテムを集めてゴールを目指すアクションゲームです。

動くブロックや消えるブロックなどの様々な仕掛けを用意し、遊び応えのあるゲームに仕上げました。


迷路ゲーム

製作者 : ズッキー(2年次)

開発環境 : Unity

ユニティちゃんを操作してゴールを目指す、3D迷路ゲームです。

滑らかなアニメーションと快適な操作性が、飽きを感じさせません。

俯瞰視点を切り換えられる親切設計です。


TNP BOX (ゲームランチャー)

製作者 : でったー(2年次)

開発環境 : Siv3D

シンプルで洗練されたゲームランチャーです。

ゲーム起動時にはランチャーが自動的に隠れるようになっており、ゲームの邪魔にならないように工夫されています。

上記で紹介した5つのゲームをこれ一つで起動し、遊ぶことができます。


以上、6つの作品が入った「TNPBOX 2019 夏コミver.」を100円で頒布いたします。

月曜日 南地区 ”ユ” ブロック 36a 」でお待ちしておりますので、ぜひお越しください!!

ICPC2019国内参加記 team_YARUDAKE編

初めまして!二年生のkuroku(でんそん)です。サークルのブログをはじめて執筆するのでどんな雰囲気で書けばいいかいまいちわかりませんが、先日行われたICPC国内予選の感想などを伝えられたらなと思います!

我々の先輩方の参加記(Tech_ONS編)もあるのでそちらも合わせてご覧ください!

(ブログ慣れてないのでリンクとか参考とかはTech_ONS編から飛ぶか自分で調べて!)

チーム概要

そもそもチームについてなんですが、他の有名つよつよ大学に比べてうちの大学の競プロer人口が少ないです(それはそう

なので、チームを組むにあたってはサークル内のゲーム制作ニキ(AtCoderにはお触り済み)たちに声をかけて一緒に出てもらうことになりました。

いっちーさん、まんじゅうくんありがとうございました。

準備としては国内模擬の際の1完でやばいと感じつつ、全探索とグラフのおべんきょをがんばったつもりでした(つもりね

国内予選当日

1コマ目の授業が監督の先生の授業だったので終了後挨拶に行って、リハーサルを一通りやって昼食、一つ授業を挟んで14:30にガナリヤさんと同着で会場入り。

なんとなく早く来たものの、普段VisualStudioの設定はそのままでやっているので環境構築RTAの練習もせず、1完はやだなぁとか考えていました。

そんなこんなで16:30になり、コンテストが始まりました。ほとんどのチームはA、Bあたりは分担して解くと思いますが、自分たちのチームはとりあえず3人で1問解こうみたいな感じの方針でした。

A問題は苦戦することなくAC(列が生徒だったのが少し気持ち悪かったですが(転置とったらどーですか

B問題は現在の座標を持って二重ループを回し、始点と終点のマンハッタン距離を測っていきました。しかしサンプルケースの答えが合わずインデックスがずれたか見てると、決定ボタンを押した回数も答えに入れるよと教えてもらい提出。実行時に9sくらいかかってたけど無視して提出したらACでした。

C問題に取り掛かり、mの制約をみて全探索っぺぇ~と思いながら考察へ。見立て通り分銅は「左に乗せる」、「右に乗せる」、「乗せない」の3通りしかないのでO(3^m)だとわかったのですが実装ができん(あれ、全探索。。。

30分くらい詰まったのでいったんDを見に行って、「これ、AtC●derでやったとこだ!」と思いつつよくわかりませんでした。順位表を見てもCを飛ばしてDをACしているチームは少なかったのでまたCに戻って頭を悩ましていました。

長いようで長かった3時間が過ぎ、初めてのICPC国内予選は2完という結果でした。感想としては全探索がしっかりかければ3完できそうだなぁっていうのと、チームでコンテストに参加するのはたのしいってところでしょうか。

今回の後日談(まとめ)

最近競プロ以外のことに目移りしまくりでしたが、ICPCはモチベ上昇にもなってもっと精進したいと思いました。

コンテスト終了後にガナリヤさんにC問題を教えていただいて、そういう勉強会的なのも面白いと思います。(もっと競プロerが増えればやってもいいねっておっしゃっていたのでもっと増えてどうぞ

ぼく個人の目標は今年中にAtCoder水色になることで、来年のICPCでは4完したいですね。(なお今のratingは…

まんじゅうくんも前回のABCでC問題を解けていたので来年は水色行けるでしょ(鼻ほじ←C解けなかったやつ

後輩たちにもどんどん競プロでハラス布教して勉強会できるくらいの人を集めてみたいですね。

来年のICPCに向けていろんな希望をもったところでこの記事を締めたいと思います。

以上、kurokuでした~!(文字だらけでごめんね!

ICPC2019国内参加記 Tech_ONS編

最近,大学で何を学んだんだろう,何をしてきたんだろう,といろいろ複雑なお気持ちな,四年生の老害,ガナリヤです

今回は,07/12(金)に開催されたICPCプログラミングコンテストのインターネット予選の参加記を適当ながら書いていこうと思います

おそらく,あとでYARUDAKEチームからも参加記が上がると思います(上がるよね(老害))


開始前

午前中,授業だったり研究のお話だったり色々と辛いお気持ちになっていました(かなしいね

かなしくなったので,14:30に会場である部屋に先入りしました(今回,監督員の先生には,この時間帯に部屋を予約してもらうなど,多くのご協力をいただきました.頭が上がりません.あとで感謝の品を持っていこうと思います.)

部屋に入る途中,後輩のkurokuくんに出会いました
覚悟がちげえまろ

早く来すぎたかなと思いながら,持参したUSキーボードの準備やパソコンの立ち上げなどをしていました(大学のキーボードはJISなので)

その後,チームメンバーのsiiiecや三年生のいっちーなども来て,時間を無駄にしていました(集合早すぎた,ごめんなさい)

今回,Tech_ONSは全員が四年生で研究室や,自分の場合入試勉強など非常に忙しく,国内模擬予選しか通し練習が出来ていませんでした.
そのため,自作ライブラリはほとんど去年ので,おそらくバグだらけだったと思います(使わなかったので尚良)

今回持ってった本は

の三冊です(普通だな!)

あと,マスコットとして,ニコニコテレビちゃんと,プロ生ちゃんのアクリルスタンドを持っていきました,かわいいね(かわいいので

だらだらsiiiecと話していると,C_avaも来て,打ち合わせをしながら時間を潰しました
全員研究室が違うので,集まるのは大学でもそうそうないんですよね
四年生って研究するけど,研究できなくないか?

そんなこんなしていると,16:30になり,ICPCが始まりました


ICPCコンテスト

問題リンク

位表リンク

今回のICPCは,去年と同じく最初の方針は同じで

  • C_avaがVisual StudioRTAをする
  • siiiecがA問題を通す
  • ganariyaがB問題を通す
  • CはC_avaのC
  • Dを三人がかりでなんとかする

みたいな感じでした
あと,誰かが解法を書いている間に,エッチなテストケースを書いて嘘を落とす,みたいな方針でした

プリンターの前でganariyaとsiiiecが待機して,C_avaが印刷をしました

B問題を見ると,あ^〜ってなる感じの問題でした
簡単じゃ〜んって思いながら,平気でBFS書いていました(無駄)(戦犯)

コンテスト終了後,kuroku君の解法をきいて,マンハッタン距離でいいじゃんってなりました
今回,自分のミスが響いて結構無駄な計算量を書けてしまいました
次のAtCoderなどのコンテストからは,わかっても,一分追加で考察をしてからコーディングを行おうと思いました

B問題の嘘解法(重すぎ)が生えた時,siiiecがコーディングしてました,はやい

C_avaのエッチなテストケースも通ったので,Aを通すと,そりゃもうAcceptでした,嬉しい

(A問題結局どういう問題だったんだろ)

その後,自分がB問題を解いて,当然遅い実行時間でしたが,Acceptはできました
色々と反省が残るコンテストでした・・・

Bをお通ししたあとは,三人でCをいちゃこら考えていました

C問題は,$3^N$で全探索すればいいな〜ってなって,その後ganariyaとsiiiecで詰めながらコーディングしてました

いま思い返すと,このCも実装をミスっていて,実行時間が肥大化してました
本当に思い返すとなんでそんなコード書いてるんだ?ってぐらいしょうもない実装を書いてて悲しくなりました,ほんとだめだめです

C問題を実行しながら,まあ答えが出れば通るやろ〜〜って,言いながらD問題に移りました

D問題は,カウンタをえいえいする問題で,なんかいやらしい問題だなってなりました(ぱっと見簡単だけど,多分むずい)

三人で考察してると,C問題の出力が出たので,投げるとWA(は?

とりあえず紙出力して,自分がCのデバッグ,
siiiecとC_avaでD問題の考察をしていました

Cは結局,分銅を追加しなくてもよい薬は先に取り出す,という操作でうまく行きました
この処理は,最初に提出する前に一度書きかけて「いらないか!」となって消したのですごい悔しい
すべてが裏目に出ている

Cはその後足りない処理を書き足したら,結局通り,再びD問題で停滞しました

三人で色々と考察を行い,C_avaとsiiiecで実装を始め,サンプル地獄になっていました

その後も色々と考え,セグ木+DP?って思いながら考察してたら非情にも時間になりました

Tech_ONSは今年もまた,3完で幕を閉じたのです


振り返り+老害より

今年のICPCでは,Tech_ONSは
495チーム中,138位で終わりました

お気持ちとしては,悔しいというお気持ちと単純に力不足だったという感覚です

B, Cでガバ考察をしてしまったので,本当に申し訳ないし悔しいです

また,やはり三人がかりでも僕たちだとまだD問題は解けず,これが解けるようにならないと安定してアジアに行けないんだなと思いました(Dの解法は結局DPでした(DはDPのD))

嬉しい点としては,後輩チームが初参加で2完をしていて,頼もしいなと思いました
TNPの競技プログラミングを始めた二年生も合計4人?(自分のおそらくの観測上)になり(最近かなりTNPから増えていて嬉しい),秋田大学もどんどん競技プログラミングや,他のアプリ制作のコンテストに出て,どんどん秋大が強くなればいいなと思いました

このチームTech_ONSで出場するのはおそらく今年で最後なので,アジアに行きたいなぁと思っていました

結果としては駄目でしたが,非常に貴重な経験が出来たので,競技プログラミングを初めて本当に良かったと思います

来年以降もTech_ONSとして自分が出られるかは現状分かりませんが,来年以降も秋田大学で後輩チームがICPCに参加し,アジア大会への切符を掴んでほしいと思いました.


是非,このICPC・競技プログラミングの文化がTNPに続いて,来年以降の後輩チームが国内大会・アジア大会で活躍する姿を老害として見守りたいなと思います.

ガナリヤでした!


YARUDAKE編も見たいなぁ|・`ω・)