初めてです。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
klang

初めてです。

#1

投稿記事 by klang » 10年前

初めて質問します。

ようやく、C言語の終盤まできました。
残るはポインタ、構造体です。
どのように勉強したらよいのでしょうか。

これまでは、本などを読み、コードを書き、実行。
実行結果を見てどのようなことが起こったかわかりやすかったのですが、
ポインタ、構造体は違って、イマイチのままです。

どう勉強したらよいのでしょうか。ポインタ、構造体とは何なんですか。

アバター
雨ガエル
記事: 34
登録日時: 11年前
住所: 新潟
連絡を取る:

Re: 初めてです。

#2

投稿記事 by 雨ガエル » 10年前

ポインタは、"変数へのショートカット"と考えていいかもしれません。
ポインタ変数はメモリのアドレスなどを格納するものです。
このアドレスをもとに変数の値を書き換えることができます。

構造体は、複数のデータを1つの変数のようにまとめることができます。

詳しくは、こちらのページを読んでみてはいかがでしょうか。わかりやすいと思いますよ。
苦しんで覚えるC言語 http://9cguide.appspot.com/

このサイトの16と17にポインタと構造体について書かれています。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: 初めてです。

#3

投稿記事 by softya(ソフト屋) » 10年前

>ようやく、C言語の終盤まできました。
>残るはポインタ、構造体です。
>どのように勉強したらよいのでしょうか。

そこまでの間で本などのコードはアレンジしたり、機能を拡張したり色々遊んでみましたか?
printfの書式をいろいろ試したりとか、関数を色々作ってみたりとか本の枠を超えてことをしたりすると、ポインタや構造体に対する別のアプローチ方法も思いつくはずです。

あと絵や図を書いてみるのも良い勉強方法です。
変数はよく箱に例えられますが、ポインタや構造体は絵にするとどんな形になるのでしょうか?
試してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

klang

#4

投稿記事 by klang » 10年前

返信ありがとうございます。

また質問なのですが、
「この先、何を勉強すべきなのでしょうか。」

自分は工業高校に通う1年生です。
C言語は中学時代からかじっていて、いまは前にもいったように入門書の8割?ぐらい終えています。
自分の選択肢としては、
・Cでゲームをつくる。
・C++やjavaを勉強する。
・objective-cを勉強してアプリをつくる。
といった感じです。

ゲームを作るのに関してはどこから勉強していいのかわからなくて困っています。
アプリについては父がすすめてきていて、本気でやるならアプリの塾?みたいなところへ連れて行ってくれると言っています。
自分でもアプリを作れたらいいなとは思うのですが、ゲームの1つも作れない(じゃんけん、オセロぐらいなら作れます)
ようではいけないのではないかと思いました。

どうするのが一番だと思いますか。
また、プログラマの皆さんはどのようにして勉強してゲームを作れるようになりましたか。

回答よろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: 初めてです。

#5

投稿記事 by softya(ソフト屋) » 10年前

>どうするのが一番だと思いますか。
>また、プログラマの皆さんはどのようにして勉強してゲームを作れるようになりましたか。

ここの回答者だと大抵の人は興味の赴くままに行動していたら出来るようになったとか、ゲームが作りたくてとりあえず闇雲に始めたと言った感じだと思います。
なので2点だけ間違わなければ何をやっても正解だと思います。

その1は、プログラミング言語の勉強はプログラムを作るという勉強に対して大きなウェイトを占めてはならないって事です。
本来ならプログラムを作ることが目的であって、次々とプログラミング言語を覚えるのは蛇足以外の何物もでも無い無駄な行為なのです。
知っている必要があるから、知っていると便利だからプログラミング言語を仕方なく覚えるのです。
次から次へとプログラミング言語を覚えるだけ、ゲームもアプリも作っていないというのが本末転倒で一番やってはいけない行為です。
ただ、必要であれば覚えなければいけません。

その2は、競技プログラミングばっかりやる事は危険です。
確かに力がつきますが、一部のアルゴリズムばかりでアプリケーションやゲームを作る力が伸び悩みます。
持論ですが、プログラミングにおいては、プログラミング言語1割、アルゴリズム1から2割、それ以外の知識・技術が7から8割を占めると思います。
つまり、残り7から8割の方をやらないと何もできないよです。

>・Cでゲームをつくる。
>・C++やjavaを勉強する。
>・objective-cを勉強してアプリをつくる。

どれでも良いと思います。必要だと思うことをしてください。
ただ、「objective-cを勉強して」だけはMacが必須です。
それと言語やプログラムを組むことに熟達してくると、自分のやりたい事のために言語を覚える必要が有るか、何を勉強するべきなのかは自然とある程度分かるし調べられるようになるはずです。

>じゃんけん、オセロぐらいなら作れます

オセロは実際難しいところもあるのですが、サンプル無しで簡易AIが作れるぐらいの実力まで達されていますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
asd
記事: 319
登録日時: 13年前

Re: 初めてです。

#6

投稿記事 by asd » 10年前

klang さんが書きました: どうするのが一番だと思いますか。
また、プログラマの皆さんはどのようにして勉強してゲームを作れるようになりましたか。

回答よろしくお願いします。
人それぞれ進め方はいろいろだと思うので、いろいろ試してみるのがいいのかなと思います。
あくまで私の例ですが、基本的な部分(ポインタ、構造体以外)は抑えられているようなので、
漠然とポインタと構造体を学ぶよりは、ゲームなりなんなりのアプリを作られてはいかがでしょうか。

作るゲームを決めると、それに必要な処理が洗いだせます。
その処理を細かく分けてプログラムに落とし込むときに、必要になったら構造体なりポインタなりを勉強すればいいと思います。

同じような処理を関数としてまとめるときに引数を参照渡しにしてポインタを使うことになるかもですし、
ゲームのハイスコアデータなどを扱う際には名前とスコア、登録日をまとめた構造体を使うと便利になるかもしれません。

こんな感じでまずは一つソフトを作る目標を決め、それに必要な処理を洗い出し、必要に応じて不足している知識を補いながら
進めていけばいいのではないでしょうか。

無理にすべての項目を覚える必要はなく、使う時期が来たらその都度学習する方法もありだと思います。
参考になれば(*´ヮ`)
Advanced Supporting Developer
無理やりこじつけ(ぉ

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: 初めてです。

#7

投稿記事 by Dixq (管理人) » 10年前

好きこそものの上手なれという言葉があるように、好きでプログラムを勉強していればそれ以上に良いことはありません。
プログラムを勉強しているということは何かしら作りたいアプリケーションやゲームがあるのではないでしょうか。
今はとにかくそれを作ることを目標に取り組んでみてはいかがでしょう?

> プログラマの皆さんはどのようにして勉強してゲームを作れるようになりましたか。

それこそ我武者羅に作りました。
まだ構造体やポインタどころか配列も知らない頃からRPGを作り始めました。
ゲーム作りが大好きだったので、とにかく知識もないまま我武者羅にコーディングしました。
効率や正しいコード等無視してとにかく動けばいいという感じで・・。
作っていく過程で勉強しないといけないこともありましたが、目標があったので勉強は苦になりませんでした。
結果酷いコードが出来上がりましたが、良い勉強になりました。
それから数えきれない位の数のゲームを作っていき、その過程で作り方が自分でわかってきました。

まずゲームを作ってみたいならうちのゲームプログラミングの館などを見ていただいてはいかがでしょうか?

klang

Re: 初めてです。

#8

投稿記事 by klang » 10年前

本当にみなさん、回答ありがとうございます。
独学でやってきた高校一年生にとってはどれもがとても深いです。

ただ、どこから作ったらよいのかわかりません。
ゲームプログラミングの館で勉強してこいって話ですよね。すみません^_^;

ゲームプログラミングの館でシューティングをはじめに学ぶとして、
勉強したらいい順番ってありますか。

画像なんかはどうしていますか。フリーのところから自分で選んでいますか。

Yahoo!知恵袋を使っていた自分がアホらしいくらいです。
これからはこちらで質問することにします。
こんな小さな質問に答えていただきありがとうございます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: 初めてです。

#9

投稿記事 by softya(ソフト屋) » 10年前

ゲームプログラミングの館はシューティングは無いんです。もっと基礎の部分です。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/
どんなゲームでも使うと思う基礎の基礎の部分です。

> ただ、どこから作ったらよいのかわかりません。
そういえば、 じゃんけんゲームを作れる書いてありますよね。
DXライブラリで演出を入れてじゃんけんゲームを作れますか? 
※ この演出はじつは奥深いのです。かつ、その人の技量がよく現れます。
ぐう、ちょき、ぱーの絵は落書きでも自分手を写真にとって加工しても良いですが、ぜひチャレンジしてみてください。

これらはFlash のゲームですが、じゃんけんゲームでいろいろな演出の幅がありますね。
「Flash ゲーム : じゃんけん」
http://senrioka-info.net/0_rhouse2/jyanken/jyanken.php
「クラウディアさんとじゃんけんしましょ」
http://yuukiandyuu.web.fc2.com/claudia_janken/

こういうジャンケンバトルにするのも手ですよ。
「早おし!じゃんけんバトル:ゲームランド:キッズ@nifty」
http://kids.nifty.com/cs/game/detail/91125000218/1.htm

あと作るゲームのアイデアは、子供の遊びをゲーム化とかTVゲームの歴史をなぞるとか色々と手がありますね。
なんか作りたいものがあれば、それを優先するのが一番ですけどね。

>画像なんかはどうしていますか。フリーのところから自分で選んでいますか。

写真を加工しても良いですし、それこそ子供の落書きみたいなのでも構わないと思います。棒人間とかね。
フリーの素材は思った以上に欲しいものがないものです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
へにっくす
記事: 634
登録日時: 11年前
住所: 東京都

Re: 初めてです。

#10

投稿記事 by へにっくす » 10年前

人に聞くより、作りたいと思ったら即実行!
一通りC言語の教材を見たのなら、あとは実践ですよ!

ゲームをつくりたい、そのきっかけとなったものは何でしょう?
まずはそのゲームの真似からとっかかってみるとかね。
オフトピック
小説家になりたい人が自分で作成した小説を持たずにプロに尋ねるようなものですね。
情熱があるなら自然と自分なりの小説を作成し、プロからみてどうなのか聞くために持っていくはずです。
それさえもしないでプロのところに行くと、「貴方には向いてませんよ」とはじかれるだけです。
written by へにっくす

アバター
usao
記事: 1887
登録日時: 11年前

Re: 初めてです。

#11

投稿記事 by usao » 10年前

とりあえず現状自分が持っている材料だけでなんか作ってみる→すこしずつ新しいこと(構造体だの)を取り入れる
という感じで,
作成と勉強を平行していけば良いのではないでしょうか.
作るものは最初はなんでも良い(ゲームとして面白くなくても)と思います.
よく,ゲーム作成初めてな相手にSTGを勧めるようですが,
私は個人的には,リアルタイム性の無い&画面スクロールを要しない ようなものが簡単で良いのではないかと思います.
パズルとか,疑似3D表示のダンジョンRPGみたいなの(とりあえず歩き回れる程度)とか.


↓あと,あんま関係ないような話↓
ゲーム作成にはプログラミング以外の知識も必要.特に数学とか.
プログラムやってても(驚いたことに)三角関数とかベクトルとかいう話が全く通じない人がいたりするんですが
そういう人はたぶんゲーム作れない あるいは 同じものを作るにも ものすごい遠回りした実装を要することになるかもしれない.
高1だと,数学部分がこれからというか現状やや不足している状態かと思いますが,
多くの人間にとって,数学とか「こんなこと勉強して何になるの?最悪!」という感じなのに
あなたにとっては「何になる」の部分が「ゲームに使える」という明確さを持っているという幸せな状態かも?

klang

Re: 初めてです。

#12

投稿記事 by klang » 10年前

たくさんの回答ありがとうございます。

みなさんのいうとおり、構造体やポインタの話はプログラムを組んでいく上で学びたいと思います。
数学に関しては授業のスピードに合わせていると「三角関数」や「ベクトル」は遥か先になってしまいがちなので
できるかぎり、自力で勉強してしまおうと思います。

(ところで、一つの中にいろいろ質問してもいいんですか。もしかしてダメなんじゃ。話ズレすぎなんじゃ)

一つのゲーム?を作ってみようと思います。
何をつくろう可迷ってます。みなさんのおすすめを教えてください。(あくまでおすすめ)
一番作りたいのは「タワーディフェンス」なんですが・・・ハイレベルすぎるような・・・
こんな僕でも作れるタワーディフェンス・・・さすがにないですよね・・・笑

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: 初めてです。

#13

投稿記事 by softya(ソフト屋) » 10年前

そうですね。作れるかを自分で確認することはできます。
箇条書きで仕様を書きだして、それぞれの機能にどんな関数群が必要になるかイメージ出来るかどうかです。
頭のなかで半分プログラムを構築するわけですが、それが出来るなら作れる可能性があります。

あと難しいと感じるなら「タワーディフェンス」のエッセンスを取り出して部分的に組んで見ることです。
別トピックにしたほうが良いと思いますが、簡単な「タワーディフェンス」の仕様から書いてみたらどうでしょうか。※ 始めてですので出来るだけ削ってください。
そこに書き出せば、みなさんが過不足や削れる所を添削してくれると思います。
まとまったら技術的な課題毎に分解して、それぞれテストプログラムを組み始めるでどうでしょう?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
usao
記事: 1887
登録日時: 11年前

Re: 初めてです。

#14

投稿記事 by usao » 10年前

ルールが明確で,基本一画面で,プレイヤーの操作できる事柄も限られている ので
タワーディフェンス(の極単純なもの)は割といい題材かもですね.

とりあえず各要素を超超単純化orばっさり削減して,
・起動するといきなりゲームはじまる
・まだ一切操作できない(見てるだけ)
・ゲームクリアかゲームオーバーの条件を満たしたら唐突にプログラムが終了する
ような状態でいいので,「開始~終了まで何かが動くもの」を作ってしまうことを最初の目標にすると良いかと思います.

#この手のディフェンスゲームは,
・固定通路(敵が通る通路が決まっていて,その脇にタワーを配置する)なタイプ
・自由配置(自由な位置にタワーを配置,敵はタワーが無い個所を通る)なタイプ
がありますが,後者は経路探索とか難しそうなので前者でしょうかね.

klang

Re: 初めてです。

#15

投稿記事 by klang » 10年前

皆様たくさんの回答ありがとうございます。

こんな初心者のでるところではないと思っていたのですが、
いざ質問してみると、僕の想像とは裏腹に優しく教えていただけました。
本当にありがとうございます。

ちょっと自信とやる気が出てきました笑
これからもこの質問掲示板を利用していきたいと思います。
(さっそく、次のトピックを立ててしまってますが・・・笑)

大好きなタワーディフェンスを作り上げれるようたくさん質問していきたいと思います。
中には「回答者の困る質問」に当てはまってしまうかもしれませんが、
極力当てはまらいような質問へと心がけ、この場を借りてプログラミングの勉強に努めたいと思います。

本当にたくさんの回答ありがとうございました。これからもよろしくお願いします。

閉鎖

“C言語何でも質問掲示板” へ戻る