質問: ゲーム製作をしたいなと思いC言語の勉強を始めたのですが、 やりたいことができず、挫折してしまいました。 **そこで、皆さんはどのようにしてプログラムの言語を勉強したのか、 自分が思う挫折しない方法などあれば教えていただきたいです。** --- 追記 作りたかったゲームは空から落ちてくるのをキャラクターを操作して避けていくゲームを作ろうとしました。 挫折したところはキャラクターをボタンを作って左右に動かすことができなかったです。 今はweb製作をしようと思いHTMLとCSSを勉強しています。
回答: ある程度書けるようになるまでに、何回も挫折しました。 12歳くらいのときにHPを作ろうと思ってHTMLを覚えようとして、けっきょくモノにならなかったり、 14歳くらいのときにゲームを作ろうと思って入門サイトとか読んだけど、けっきょく訳がわからなかったり、 16歳くらいのときに日本語で会話できるbotを作ろうと思ったけど、よくわからなくて諦めたり、 ...(まだまだあるけど省略) 一応プログラミングの基礎はわかるようになった、と言えるレベルに達したのは、卒研をやるためにpythonを覚えてからです。 > > どのようにしてプログラムの言語を勉強したのか > > > ググる。参考書を読む。書いてみる。人に聞く。教えてくれる人がいれば教えてもらう。 他にはあまり思いつきません。 > > 自分が思う挫折しない方法 > > > これは色々思うことがあります。あくまでも私の意見として読んでほしいのですが、 ###### 必要に迫られたときにやる 必要に迫られていないのに、新たなことを習得しようと思っても困難です。人間はそういう生き物なので。 強制的に必要に迫られるような環境に自分から飛び込んでいくのがベストでしょう。大学の工学部の情報系の学科に入るのがおすすめです(年齢と環境によっては困難かもしれませんが)。 それが難しいのなら、とにかく負担にならない程度の作業量で毎日少しずつやっていくしかありません。きつくて必要に迫られていないことは、すぐ放棄するのが人間です。 ###### 時間をかけて基本的なことからしっかりやる すぐには身につきませんし、基礎を理解しないといつまで経っても成長できません。急がば回れ。 ###### 「○○を作りたい!」というモチベーションは捨てる プログラミング初心者が思う「作りたいもの」は、たいてい作るのが大変です。 ユーザとして使っているときは簡単そうに見えても、背後では高度な技術が走っていたりするものです。だいたい、我々が普段使っているソフトウェアは、商業として成立する程度に水準の高いものです。 ということは、あなたが「作りたい!」と思うようなソフトは、あなたの(=「一般的なプログラミング初心者の」。質問者様個人をけなす意図はあまりありません。あしからず)レベルにはまず合っていないので、作ってはいけないのです。 * そもそもできなくて挫折する * なんとか動くようにはなっても、自分の作ったしょぼい「成果物」と「理想」との乖離に打ちのめされて絶望 こういう結果を招くだけなので、高い目標はさっさと放棄しましょう。その方が身のためです。 ・・・ここまで読んで「そしたら、やる意味ないじゃん」と思ったのなら、実際のところやる意味はないのでやめましょう。あなた(=そう思ってしまった自称「プログラミングを勉強したい人」)には向いていないのです。 どういう人に向いているかというと、C言語の入門書に載っているような、「printf・scanf」とか「ループでかけ算九九を計算する」とか「再帰呼び出し」とか「バブルソート」とか、そういうのをやって、 **「おお、こんなプログラムを書いてコンソールに文字を出したり読み込んだりすることができるんだ! 今まで使ってきた(CLIの)プログラムもみんなこれ使ってるのかぁ」** **「へぇ、ループはこうやって回していくんだ! これで色々できそうだなぁ」** **「再帰呼び出しカッコいい!」** **「ソートのアルゴリズムによって速度が全然違うの面白い!」** こういう風に面白がれる人に向いています。 はっきり言って変態ですが、そういう変態さんなら、入門書からやっていって少しずつレベルを上げていけば、数年後には簡単なゲームくらいは手間さえかければ思い通りに作れるようになります(たぶん)。そこから成長していくのは、それほど難しくはありません。 参考になりましたでしょうか。 ### 追記 とはいえprintfが面白い変態はさすがにそんなにいないと思う(でもこの回答読んでる人の中にはたぶんいる。変態さんこわい)。 ゲームを作るなら、「自機が動いた」とか「弾が出た」とか。それくらいで感動できれば見込みがあります。Webなら、「思い通りのレイアウトが作れた」「javascriptで動的なWebページを書いてみた」あたりでしょうか。 これくらいのものを自分で書いてみて「面白い!」と思えないなら、申し訳ないですが私の基準ではアウト。よくいる結果だけ欲しいワガママさん。心を入れ替えるか、やめちまえ、としかアドバイスできません。 質問者様がそっち側じゃないことを願います。 初心者はつまらなくなるとすぐモチベーションがなくなってやめちゃうので、できるだけ最短で目的にたどり着ける道をたどるのは一つの正しい選択肢です。 ゲームなら、RPGツクールでもHSPでもなんでも使って(どちらもプロのゲームプログラマの方はまず選ばない選択肢だと思いますが、初心者には適していると思います)さっさと成果物を作れば良いんだと思います。Webだったら、既存のブログサービスのカスタマイズとかから始めた方がたぶん良いんだと思う。 限界を感じるまでは簡単な方法でやって、感じたら次のステップに行けば良いのです。 ただし、それと併行でプログラミングの基礎的・一般的なスキルを上げていかないと、どこかで「やって得られる快感」と「やるのに要する手間・コスト、やることの面倒臭さ」が逆転して、行き詰まります。 退屈な入門書すら面白いと思って読む変態さんは、これがないので強いのです。どこまででも行ける(ただし細部フェチになって上の方に行かない人もたくさんいる。プログラミングに関してはそれはそれで価値のある技術なので、構わないんですが)。 普通の人は、面白いことは面白いことでやりつつ、多少退屈でも基礎も併行で積み上げ続けていくことで、逆転を防ぎながら続けていくことができます。 基礎と応用は車輪の両輪なので、頑張って両方回してください。