C言語の勉強法を・・・

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

C言語の勉強法を・・・

#1

投稿記事 by TAG » 10年前

こんにちは。

早速ですがすいませんm(__)m
ほぼ雑談状態になってしまうことかと思います。
遅れながら、本題に入らせて頂かせてもらいますがC言語なるものにまったく知識がありません。。。
でも、学びたいのです。だったら自分で調べて基本的なことを覚えろよ・・・と思った方
おらっしゃるのは承知の上で、ちくちくと調べながら拝見させてもらう事となります。
みなさんのお時間を勝手ながら奪ってしまわれることとなりますが、ご認証よろしくお願いします。

シューティングゲーム等の説明を読ませていただきましたが、まず引っかかったのはサンプルのファイルが
開けないことです。ツールみたいなものがあるのでしょうか?あそこに書かれていたものを調べましたが
有料なそうなので・・・

こんな質問が殺到すると思いますがどうぞよろしくお願いします。

TAG

Re:C言語の勉強法を・・・

#2

投稿記事 by TAG » 10年前

早速、書き忘れていました。
本題はシューティングを作ることです。
友達が東方なるものをやっていて(ここの規約のところにもかいてありましたがびっくりです!
お前にはできないだろ?とか何とか抜かしているので、技術を学び、友達を見返してやりたいという
我侭な私です。こんな自分に協力してくださる方がおられればいいのですが。
それに、別にできなくても価値感が変わるとか関係ないよね?と尋ねると
関係があるとこたえました・・・キャラ萌えのくせにいってくれるじゃないのと
別の対抗心が沸いてきました。
そんなほんとにどうでもいいことです。
こんな0からやってもそんな高クオリティなものはできないのはわかってますが
努力はしたいです。1つできれば次につながると思いますので・・・

やそ

Re:C言語の勉強法を・・・

#3

投稿記事 by やそ » 10年前

うーん、どちらかというと、C言語の勉強と言うよりゲームを作って見返したいという動機のほうが勝っているみたいですね。

既成のツクール製品を利用するのも手ですよ?
C言語(C++)は自由度が高い反面プログラミングは初心者には非常に大変な言語じゃないでしょうか?

まあ、コレを機に覚えたい。絶対完成させて見返すんだというモチベーションがあれば頑張れると思いますけど。

と、シューティングゲームでしたね。
まずはゲームの仕様をお決めになることです。
縦スクロール?横スクロール?
何面まで?
自機の弾の種類は?(通常弾、ミサイル、レーザー、ホーミングミサイル、オプション、ボムなど)
背景、自機、敵、ボス、弾(敵の弾も何種類かあると思います)、爆風などの画
タイトル画面やメニュー選択用のTIPS
音楽、SE(効果音)
ハイスコア、ランキングを保存するか?

など、決めるべきことがたくさんあります。

ドンドン決めてしまってください^^

管理人

Re:C言語の勉強法を・・・

#4

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

とりあえず、C言語をコンパイルする環境が無く、まだC言語を一度もコンパイルしたりされたことが無いということですね?

コンパイルというのは、C言語のプログラムコードを機械が実行できる形に変換することです。

例えばコンピュータって0と1の信号で動いているので、そういう形で命令してやらないと、動きません。
でも、人間が見たとき

001010100010110111010110000101010

とか書いてあっても、何がかいてあるのかわけがわかりません。
なので、今仮に「001」という機械語の信号が「弾よ、発射しろ!」という意味だとすると、

弾よ、発射しろ!

とかいてコンパイル作業をすると

001

に変換してくれたら、わかりやすいですよね。
このように、C言語で書いたプログラムを機械語で受け付けられる形に変換する必要があります。
これがコンパイルです。
そのコンパイルをしてくれるものをコンパイラといいますが、まず、これを入手しないといけません。

VisualStudio2008というマイクロソフトから無料提供されているとても高機能なコンパイラがあります。
これをお使いになるといいでしょう。

http://www.microsoft.com/japan/msdn/vstudio/express/
(VC++)

プロジェクトの作り方や実行の方法は他のサイトにゆだねるとします。

まず、ゲームを作るには、C言語の知識が必要です。
最低限のCのプログラムの決まりや使い方を覚えないといけません。
ですから、
例えばC言語の入門サイト
http://www5c.biglobe.ne.jp/~ecb/c/c00.html

こんなところでまず、勉強してください。
最低でも、ゲームを作るには7章までの知識はいると思います。
ifとforさえ知っていたら作れるとはいうものの、きっと、それではすぐに躓いてしまうと思います。

とりあえず
・コンパイルできる環境を用意する
・C言語の基本的な勉強をする

が第一に始めることでしょう。

>(ここの規約のところにもかいてありましたがびっくりです!

規約に何かかいてありました??

C言語に加えてゲームを作るにはDirectXなどの、
画像や音声をあやつることの出来るライブラリの知識が必要になります。
これがまた難しくて・・、ほとんどの人は挫折していきます・・。
そんななか、簡略化された2D限定ライブラリであるDXライブラリがあります。

私はまだ、プログラミング初心者なので、DXライブラリを使って色々ゲームを作りました。
DXライブラリでどんなことができるのかな?ともしお感じになりましたら、参考にしていただければと思います。

http://dixq.net/sakuhin.html

恐らく全くプログラミング経験の無い状態からですと、ゲームが一つ出来るようになるには少々時間がかかると思います。
友達を見返そうと思う気持ちはよくわかりますが、きっと「プログラムを作ること自体が好きじゃないと」続けられないと思います。
なので、是非、プログラムの勉強を楽しく続けてもらえたらと願います。

TAG

Re:C言語の勉強法を・・・

#5

投稿記事 by TAG » 10年前

お答えいただき感謝です。ありがとうございます

まずはまとめろということですね?

自分的にはやっぱりC言語で作りたいです。覚えておけば色々役に立つと思うからです
厳しくとも毎日少しずつ、1つずつ覚えればいいと思っていますが、やはり多少の心配はあります

何はともあれ ご回答ありがとうございます

TAG

Re:C言語の勉強法を・・・

#6

投稿記事 by TAG » 10年前

ご回答ありがとうございます
早速学んできます。
>(ここの規約のところにもかいてありましたがびっくりです!
これは東方というジャンルに対してでした。わかりにくい発言ですいません。
別にゲームを作って見返すというのはあくまで最終段階なので、おそらく心配は無いはず・・・?です

ご回答ありがとうございました

TAG

Re:C言語の勉強法を・・・

#7

投稿記事 by TAG » 10年前

お久しぶりです。

教えてくださったURLより読んでおりましたが早速つまずきました。
キーボードから月(1~12)を入力し、その月の日数を表示するプログラムを作れ。

このような練習問題があったのですが、解答を見てもまったく原理がわかりません。
やはり参考書とかないと厳しいのでしょうか?ご返答お待ちしてます

kazuoni

Re:C言語の勉強法を・・・

#8

投稿記事 by kazuoni » 10年前

自分はまだまだたくさん分からないところがありながらも、ゲーム制作を進めています。

自分の経験上、ちょっと長いプログラムだとパーっと見た感じで「え、何これ?」ってなり、ごちゃごちゃになり、友達に聞くけど、「あぁ~」なんていいながらあんまり理解できてない・・・なんて事がちょくちょくありました。まぁ予断なんですが^^;

自分が今までやってきて言えることは、確かに参考書はあると便利だと思います。ただ、今の段階では、ググっても参考書を見ても、さほど変わりはないと思います。逆に、参考書より親切に書いてあるほうが多いんじゃないかって思います(あくまで自分の主観ですが^^;)

TAG

Re:C言語の勉強法を・・・

#9

投稿記事 by TAG » 10年前

なるほど、ご回答ありがとうございます

やはり買うならもうちょっと理解したりした時や、ある程度の知識を得てから
復習するみたいな感じにしてみたいと思えました。

管理人

Re:C言語の勉強法を・・・

#10

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

Cの入門サイトは沢山あるので、ウェブ上でも十分勉強できると思いますよ。

http://www.google.co.jp/search?hl=ja&q= ... %96%80&lr=

TAG

Re:C言語の勉強法を・・・

#11

投稿記事 by TAG » 10年前

ご回答ありがとうございます。


新たな質問をしますがよろしいでしょうか?

4. 透過処理をした画像を表示する。
の項目で、画像が表示されません。

3. 画像を表示する。
この項目でも、画像が表示されなくなっています。
そして
ちゃんと表示できなかった人はこちらで、問題を解消してください。
の場所で、起動するとファイルの場所が違いますと出て、同じファイルに入れたところ
ちゃんと表示されました。(4項目目の時には表示できませんでした)
DxLib.slnというファイルが無かったので、もう一度マイクロソフトからDLしなおそうと思いましたが、
DLページがなくなっています。このときどういう対応をしたほうがいいでしょうか?

TAG

Re:C言語の勉強法を・・・

#12

投稿記事 by TAG » 10年前

こんばんは。

何回も試行錯誤するうちに、キャラのpngは表示されるようになったのですが
背景の画像が表示されませんでした。
そのまま、章を進めていたところ動いたり、点滅したり(透明)はできました。

そして、いよいよシューティングに挑戦してみたのですが、ほとんど管理人さんのを
お借りさせていただいています(ほとんどパクっておりますが ーー;
一からやるというと、流石にまだまだ初心者なので、限界があるようで・・・
それでも全然、理解しているという事はいえませんが、少しずつ理解しているつもりでございます。

ところで、レーザーなどはどういった仕組みなのでしょうか?私が思うに、10フレームごととかに
当たり判定をつけて、打っているように思うのですが・・・
もし、レーザーを出す場合、軌道が変わりますよね?例えばくねくね曲がってきたり・・・
その場合はレーザーの絵?グラフィック?がくねくねできるのかな?と思いました。

いまさら何ですが四聖龍神録をやらさせていただきました。m(__)m
はっきり言ってすばらしいです(笑) 虹のアイディアといいかなり面白かったです。
敵1体1体にhpがついていたのもちょっと驚きでした。(それにしても絵とドット絵がうまいです。
武器ショップ等の要素もよかったです。
とってもクオリティが高い作品でした。プレイさせてくださってありがとうございますm(__)m
私の目標は目指せ!管理人(ぇ


<!--2

rio

並び替えプログラムで

#13

投稿記事 by rio » 10年前

VisualC++ 2005
Windows XP

コマンドプロンプトで実行して
”ファイル名は?”
と聞いてきてテキストファイルのフルパス(場所)を入力してエンターキーで次は
”作成先は?”
と聞いてきてフルパス(場所)を入力してエンターキーで終わり、

英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”NEWテキスト”と呼ぶ)に書き込み保存するプログラミングです。


実際の内容の結果は次のようになる。


-------------------英文.txt-------------------------------

I was wondering if my plant needs friends, do I need to get more of the same plant so it can get polinated and produce peppers?

------------------new英文.txt(プログラムによって新規作成)------------------------------

I
was
wondering
if
my
plant
needs
friends
do
need
to
get
more
of
the
same
so
it
can
polinated
and
produce
peppers

-------------------------------------------------


このプログラムは下のものとなります。
#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 

typedef struct tag_list_t{ 
 int num; 
 char **wordlist; 
}list_t; 

int list_add(list_t *list, char *word){ 
 int i; 
 for(i=0;i<list->num;i++) if(strcmp(list->wordlist, word)==0) return 0; 
 list->wordlist=realloc(list->wordlist, sizeof(char*)*(list->num+1)); 
 list->wordlist[list->num]=strdup(word); 
 list->num+=1; 
 return 1; 
} 

int main(void){ 
 list_t list={0, NULL}; 
 char fname_in[FILENAME_MAX], fname_out[FILENAME_MAX], word[255+1]; 
 char *find;
 FILE *fp_in, *fp_out; 

 printf("”ファイル名は?”"); 
 fgets( fname_in, FILENAME_MAX, stdin ); 
 printf("”作成先は?”"); 
 fgets( fname_out, FILENAME_MAX, stdin );
 if ( (find = strchr(fname_in,'\n')) != NULL ) *find = '\0';
 if ( (find = strchr(fname_out,'\n')) != NULL ) *find = '\0'; 

 if((fp_in=fopen(fname_in, "r"))==NULL) return 1; 
 if((fp_out=fopen(fname_out, "w"))==NULL) return 2; 

 while(fscanf(fp_in, "%255[A-Za-z]%*[^A-Za-z]", word)==1) if(list_add(&list, word)) fprintf(fp_out, "%s\n", word);

 fclose(fp_in); 
 fclose(fp_out); 
 return 0; 
}



ですがこれでは大文字と小文字が区別されて同じ単語も違うものとして出力されます
例 any と Any など
出力を小文字のみで統一して重複除去できないですか?
ソース教えてください。

通り

Re:並び替えプログラムで

#14

投稿記事 by 通り » 10年前

islowerなりisupperなりを使えばよいでしょう。

TT414

Re:並び替えプログラムで

#15

投稿記事 by TT414 » 10年前

stricmpを使いましょう。

rio

Re:並び替えプログラムで

#16

投稿記事 by rio » 10年前

すいませんが初心者なもんで
ソース丸ごと乗せてくれませんか?

バグ

Re:並び替えプログラムで

#17

投稿記事 by バグ » 10年前

何故、初心者だとソースを丸ごと載せなくてはいけないのですか?
ここの掲示板は基本的に丸投げは禁止なはずですが…

それに、これだけのソースを書ける人がislower、isupper、strcmpの使用方法が分からないというのも不思議で仕方ないです…

ほぼ答えになりますが、ヒントを載せますね。

一番分かり易いのは、tolower関数で全てのアルファベットを小文字に変換して、strcmp関数で比較する方法ではないでしょうか?

関数の使用方法が分からないのであれば、下記のURLで調べるのをお勧めします。

http://www.bohyoh.com/CandCPP/C/Library/index.html

TT414

Re:並び替えプログラムで

#18

投稿記事 by TT414 » 10年前

strcmpをstricmpに変更するだけです。

閉鎖

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