ゲーム製作をしたいなと思いC言語の勉強を始めたのですが、
やりたいことができず、挫折してしまいました。
そこで、皆さんはどのようにしてプログラムの言語を勉強したのか、
自分が思う挫折しない方法などあれば教えていただきたいです。
追記
作りたかったゲームは空から落ちてくるのをキャラクターを操作して避けていくゲームを作ろうとしました。
挫折したところはキャラクターをボタンを作って左右に動かすことができなかったです。
今はweb製作をしようと思いHTMLとCSSを勉強しています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答11件
0
ベストアンサー
ある程度書けるようになるまでに、何回も挫折しました。
12歳くらいのときにHPを作ろうと思ってHTMLを覚えようとして、けっきょくモノにならなかったり、
14歳くらいのときにゲームを作ろうと思って入門サイトとか読んだけど、けっきょく訳がわからなかったり、
16歳くらいのときに日本語で会話できるbotを作ろうと思ったけど、よくわからなくて諦めたり、
...(まだまだあるけど省略)
一応プログラミングの基礎はわかるようになった、と言えるレベルに達したのは、卒研をやるためにpythonを覚えてからです。
どのようにしてプログラムの言語を勉強したのか
ググる。参考書を読む。書いてみる。人に聞く。教えてくれる人がいれば教えてもらう。
他にはあまり思いつきません。
自分が思う挫折しない方法
これは色々思うことがあります。あくまでも私の意見として読んでほしいのですが、
必要に迫られたときにやる
必要に迫られていないのに、新たなことを習得しようと思っても困難です。人間はそういう生き物なので。
強制的に必要に迫られるような環境に自分から飛び込んでいくのがベストでしょう。大学の工学部の情報系の学科に入るのがおすすめです(年齢と環境によっては困難かもしれませんが)。
それが難しいのなら、とにかく負担にならない程度の作業量で毎日少しずつやっていくしかありません。きつくて必要に迫られていないことは、すぐ放棄するのが人間です。
時間をかけて基本的なことからしっかりやる
すぐには身につきませんし、基礎を理解しないといつまで経っても成長できません。急がば回れ。
「○○を作りたい!」というモチベーションは捨てる
プログラミング初心者が思う「作りたいもの」は、たいてい作るのが大変です。
ユーザとして使っているときは簡単そうに見えても、背後では高度な技術が走っていたりするものです。だいたい、我々が普段使っているソフトウェアは、商業として成立する程度に水準の高いものです。
ということは、あなたが「作りたい!」と思うようなソフトは、あなたの(=「一般的なプログラミング初心者の」。質問者様個人をけなす意図はあまりありません。あしからず)レベルにはまず合っていないので、作ってはいけないのです。
- そもそもできなくて挫折する
- なんとか動くようにはなっても、自分の作ったしょぼい「成果物」と「理想」との乖離に打ちのめされて絶望
こういう結果を招くだけなので、高い目標はさっさと放棄しましょう。その方が身のためです。
・・・ここまで読んで「そしたら、やる意味ないじゃん」と思ったのなら、実際のところやる意味はないのでやめましょう。あなた(=そう思ってしまった自称「プログラミングを勉強したい人」)には向いていないのです。
どういう人に向いているかというと、C言語の入門書に載っているような、「printf・scanf」とか「ループでかけ算九九を計算する」とか「再帰呼び出し」とか「バブルソート」とか、そういうのをやって、
「おお、こんなプログラムを書いてコンソールに文字を出したり読み込んだりすることができるんだ! 今まで使ってきた(CLIの)プログラムもみんなこれ使ってるのかぁ」
「へぇ、ループはこうやって回していくんだ! これで色々できそうだなぁ」
「再帰呼び出しカッコいい!」
「ソートのアルゴリズムによって速度が全然違うの面白い!」
こういう風に面白がれる人に向いています。
はっきり言って変態ですが、そういう変態さんなら、入門書からやっていって少しずつレベルを上げていけば、数年後には簡単なゲームくらいは手間さえかければ思い通りに作れるようになります(たぶん)。そこから成長していくのは、それほど難しくはありません。
参考になりましたでしょうか。
追記
とはいえprintfが面白い変態はさすがにそんなにいないと思う(でもこの回答読んでる人の中にはたぶんいる。変態さんこわい)。
ゲームを作るなら、「自機が動いた」とか「弾が出た」とか。それくらいで感動できれば見込みがあります。Webなら、「思い通りのレイアウトが作れた」「javascriptで動的なWebページを書いてみた」あたりでしょうか。
これくらいのものを自分で書いてみて「面白い!」と思えないなら、申し訳ないですが私の基準ではアウト。よくいる結果だけ欲しいワガママさん。心を入れ替えるか、やめちまえ、としかアドバイスできません。
質問者様がそっち側じゃないことを願います。
初心者はつまらなくなるとすぐモチベーションがなくなってやめちゃうので、できるだけ最短で目的にたどり着ける道をたどるのは一つの正しい選択肢です。
ゲームなら、RPGツクールでもHSPでもなんでも使って(どちらもプロのゲームプログラマの方はまず選ばない選択肢だと思いますが、初心者には適していると思います)さっさと成果物を作れば良いんだと思います。Webだったら、既存のブログサービスのカスタマイズとかから始めた方がたぶん良いんだと思う。
限界を感じるまでは簡単な方法でやって、感じたら次のステップに行けば良いのです。
ただし、それと併行でプログラミングの基礎的・一般的なスキルを上げていかないと、どこかで「やって得られる快感」と「やるのに要する手間・コスト、やることの面倒臭さ」が逆転して、行き詰まります。
退屈な入門書すら面白いと思って読む変態さんは、これがないので強いのです。どこまででも行ける(ただし細部フェチになって上の方に行かない人もたくさんいる。プログラミングに関してはそれはそれで価値のある技術なので、構わないんですが)。
普通の人は、面白いことは面白いことでやりつつ、多少退屈でも基礎も併行で積み上げ続けていくことで、逆転を防ぎながら続けていくことができます。
基礎と応用は車輪の両輪なので、頑張って両方回してください。
投稿2018/06/26 16:37
編集2018/06/26 22:03総合スコア30937
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/30 07:28
2018/06/30 07:33
0
まず、初めからすごい作品を作ろうなどと欲張らないこと。英語だってThis is a pen.から始めるわけで、最初はうんとくだらないプログラムから始めましょう。
大事なのは、下らなくてもとにかく「完成させる」ことです。そのうえで改めて機能拡張を考えてみるといいのです。
それから、C言語は決して初心者に優しい言語とは思えません。こんなことを言うとその道のプロの方には「けっ」と言われるかもしれませんが、ポインタを使った文字列処理なんておよそ堅気の人間が手を出すべき作業ではない気がしますよ。基礎力をつけるにはCがいいんだという考え方もあるでしょうし、目的によってはC一択ということもあるでしょうが、それでも最初はもう少し敷居が低くて結果がすぐに見えるスクリプト言語から始めるといいんじゃないでしょうか。javascriptとか。
投稿2018/06/26 16:29
総合スコア13694
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/26 16:35
2018/06/26 17:51
0
普通のゲームはゲームエンジンの上で走っていて、多層に抽象化されています。
なので、一人で作るにはハードルが高いのが一般的です。
問題はゲームを作りたいのか、ゲームをきっかけにプログラミングができるようになりたいのか、です。
前者ならhayataka2094さんがおっしゃるようにRPGツクールのような簡易的なゲームエンジンでゲームを作るとよいと思います。
後者でプログラミングをやるのなら五目並べなどから始めるとよいです。
まずは、制御文からなれていく必要があります。
それから、画面表示と、操作へ移っていきます。
画面は最初は派手な表示が必要のないものにすべきです。
いちいち表示のグラフィックにこだわっていたら先に進みません。
操作はターン性がよいでしょう。
リアルタイム性が必要となると、割り込み処理とかマルチプロセス化が必要になってくるので。
ゲームAIもそれなりに大変です。
ミニマックス法など探索アルゴリズムにある程度なれなければなりません。
ある程度複雑になってくると、少し頭を使わないと処理が詰まって重たくなってきます。
入力出力でブロックしてバグも増えてきます。
どのようなことが実現できる必要があるのかを意識して、できることを増やしていくとよいかと思われます。
ゲームは動くので、完成した際の喜びは大きいかもしれませんが、初心者にできるようなものは、この程度のことをやるのにめっちゃ大変だったなあ、という感想の方が多いかもしれません。
できることからやっていくのが大事です。
プログラミングができる知り合いに、やろうとすることの難易度についてアドバイスを貰うとよいかもしれません。
投稿2018/06/26 21:57
総合スコア8562
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
挫折しない方法は楽しく遊ぶ事です。
自分がどうやっても楽しいと思えない事柄については苦行でしかないので、あとは挫折しようがどうしようが修行あるのみです。
一方でやりようによって楽しく遊べる事柄については、遊んでれば自然と継続できるので比較的に楽な修行になります。
「できないことができるようになる」プロセスは楽器でも学問でも言語でもゲームでも何でも一緒だと思います。「好きこそ物の上手なれ」とも言いますし、私の経験からも全ての物事は基本的にこの法則に沿う気がします。
なんか啓発系の本みたいな事を書いてますが、これはまぁ真理です。いろんな分野の上手な人に質問して見て下さい、「それで遊んでますか?それは好きですか?」と。答えはほぼ2通りで「もちろん」or「いいえ、ですが仕事(苦行)ですから」のいずれかです。
私にとってプログラミングは前者、英語は後者その後前者、楽器は過去形で前者、スプラトゥーンは進行形で前者です。が、覚悟の低いスプラトゥーンは上手止まりで頭一つ抜けることはありません。楽器もそうでした。上手の中にもレベルがあってただ遊んでるだけでは到達できない領域が存在するんですが、それはまた別の話なので以下省略。
投稿2018/06/29 16:43
総合スコア6142
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/29 16:57
2018/06/29 21:07 編集
0
そこで、皆さんはどのようにしてプログラムの言語を勉強したのか、 自分が思う挫折しない方法などあれば教えていただきたいです。
興味があるのに分からないのを覚えるのは大変ですよね。
自分の場合は覚えたのは写経なので参考にはならないかもですが・・・。PC買ったけどゲームが無いのでゲームのプログラムをひたすら打ち込んでいたら覚えた口で、必要性があったからなんでしょうね。
そのうち自分でも何か作ってみたいなという欲が沸き、小さなゲームにもなってないけど動くものが出来上がり友達に見せたってのがはじめでしょうか。とてもオレスゲー!って喜んだのを覚えています。
単に写経するだけではなくて、写経中や終わった後はこれどういう意味なんだろうと調べたり、こう変更してみたいんだけど?って試行錯誤したりしたのはありますが、、、
今は効率よく覚えるために勉強しますが、小さな部分では今でも写経がベースですね。サンプルプログラムがあったら、
1.(分からないまでも)読み、実行結果を想像する
2.写経(必ず手で打ちコピペはしない)
3.実行し結果を確認
4.サンプルを興味本位でいじってみる → 3の繰り返し
上記は小さなイディオムなどを覚えるときに使っている方法です。自分にとっては写経が一番合うなと感じているのですが、写経を選んでいる理由は、写経によりイディオムを手が覚えてしまいます。アウトプットの速さは思考をする時間につながりますし、なにより早くうまく書けるという事は楽しいですよね。速くうまく書けるので次も書いてみたいとなります。
挫折しない方法については、人それぞれなのですが、初めは自分にご褒美を与えるぐらいですかね。これやったらビール飲むとか・・・サンプル出来たら俺スゲェ!って心の中で思うなども意外といいですよ。でもそれだとすぐに飽きるので、一番のインセンティブは自分が誇れると思う状況を作るでしょうか。
HTMLとCSSを勉強されていると書かれていますが、自分だったら好きな興味のページを作って公開するとかですかね。出来た事をブログなりキータなりにまとめてみるとか、友達に見せるとか何かしらの反応はあり、それがインセンティブになり次を考える契機になります。
投稿2018/06/27 03:43
総合スコア94
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
世の中には46歳の方がC言語の勉強がてら、ダライアス(知ってる?)を勝手にメガドライブに移植した人もいます。
https://ameblo.jp/arcade-cabinet/entry-12381068306.html
上記は余談ですが、素のC言語でグラフィックを使った動きのあるゲームを作るのは厳しいかもしれません。
C言語から始めるにしてもまずは敷居を一番低いところに設定してからはじめたほうが良いでしょう。
定番のHello World!
から始めて、徐々にステップアップしていくことをお勧めします。
余談に挙げたメガドライブなんかはおそらくメガドライブ用のSDKを使用していると思うので、グラフィック周りの扱いは楽になっていると思われますが、そのSDKを使うには基礎知識が必要です。
C言語に限らず基礎が大事です。
あせらずじっくりやりましょう。
それでも上達しない場合、適正もあります。
特にゲームは向いている人とそうでない人がいると思います。
投稿2018/06/27 01:18
総合スコア17000
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
挫折しない方法などあれば
ありません。
スキー、スケート こけて上手くなります。
野球 空振りして上手くなります。
サッカー、バスケ シュートを外して上手くなります。
プログラミング 不具合を起こして対応して技術力が身につきます。
いずれも失敗することで成長への糧となるものです。
挫折を挫折と思わないこと、チャンスと思うことが大事です。
考え方をかえてみてください。
あなたがやろうとしていることは、この広い世界中で誰もやったこともない画期的なことをやろうとしているのでしょうか?
つまり、「どうにかすればできる」のが分かっているはずです。
「誰かが必ずできてるんだから、自分にもできる」と思えたら、
挫折が挫折でなくなります。
厳しいこと言うと、それくらいで挫折と思ってたら何も成せません。
挫折を怖がっているあなた自身の心をかえるべきです。
「絶対に失敗しない方法」は存在しませんよ。(「絶対に成功する方法」もありません)
投稿2018/06/27 00:50
総合スコア80879
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
みなさんがとても良い回答をしているので、少しゲテモノな意見をば…
やっぱり、やりたいと思う見栄えの良い事はやるべきことが思った以上に多岐にわたるものだと思います
まずできるだけシンプルに、華美な部分を削ぎ落して…という前段階が必要です
そこができてから肉づけをしていけば、少しずつ理想に近づいていけます
まずプロトタイプ、そしてバージョンアップ。最終的には構造を見直して量産体制に
挫折については少し脱線してこんなお話を
最初から高機能なソフトを使う事から入った方々は「PCってすごい」って思うでしょうが
コンピュータってバカです。
言われたことを言われた通りにしかできません。指示が間違っていれば必ず間違えます
(間違いが複合的に絡まって奇跡的にうまく行くときはうれしいではなく気持ち悪くなります)
ソコを気づかずにプログラミングに手を付けると
「何で思った通りに動かない!」「こんなはずじゃなかった」
とぼやきたくなります
物わかりの悪い人に頼みごとをする以上に説明(プログラミング)が必要になるので、説明不足なのかな…言い方悪いのかな…やって欲しい事に無理有るのかな…と考えればトライ&エラーになり前に進めるんだと思います
あーもういいわ、お前話通じないから頼まないわ!
と言い切ってしまうのが挫折ですかね
諦めなければナレッジとして経験が積み重なると思いましょう
そして、そんなおバカなPCにこちらの「やって欲しい事をさせる事が出来た」に快感、征服感を覚えたら
あなたも立派な変態プログラマになっていると思います
追記
そういいつつ、私も最近挫折した事あります。
ググりながら独学して、フレームワークに手を染めようとしたんですけども…
情報が雑多(正誤よりも新旧が混在し過ぎていた)で、生PHPで出来ている事をリファクタリングしたいのにいつまでたっても基礎的な構造設計レベルから抜け出せず、質問しても「使うにはまだ早いおじさん」が湧いてきてコストが成果に見合わない状態に陥りました
投稿2018/06/30 03:18
編集2018/06/30 03:38総合スコア66
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
自分は高校時代にゲームを作りたかったのでプログラミングはじめました。最初はVBでしたが、あまりにもバージョンアップが激しく、互換性関係のトラブルに悩まされてC/C++に移行していました。
一方、高校上級生になるにつれてゲームを卒業してきたのでUIに拘りがなくなりました。この辺りでjavaにも興味が出てきました。大学時はとにかくC/C++、javaをやりこみました。特に題材はなかったので、大学の適当な課題を対象に、拘ったプログラミングし始めました。
大学上級生になってスマホが出回ると、このプログラミングにも興味を持ちました。が、システムの相違のためにプログラムの互換性にまたも悩まされました。このため、VM上で動作するjavaやブラウザ上で動作するスクリプトを再度勉強し始めました。
就職してからは事務処理の簡略化マクロ(Excelとか)ばかりです。物足りなさを感じはしますが、それなりに楽しいです。
挫折というとVB関係とかMVCですかね。バージョンアップばかりで互換性も優れず、そこまで勉強する気になれなかったです。
投稿2018/07/01 10:40
総合スコア4838
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。