質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

725閲覧

シューティングゲームはどのように動いているのか

Peanut72

総合スコア2

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/08/10 04:57

前提・実現したいこと

シューティングゲームの作成

発生している問題・エラーメッセージ

C言語を始めてみたのですが、C言語だけでできることとライブラリを使わないとできないことの差が良くわかっていません。
ライブラリは既に組まれたプログラムのパーツが集まっているものという認識なのですが、それなら最低限の何も追加していないC言語のみでもシューティングゲーム等を作成できるはず。どのように画像を読み込み、自機等を表示させたり、それを動かしているのか教えていただけないでしょうか。
初歩的な質問で申し訳ございません。

試したこと

ライブラリや画像処理の方法などについて検索してみましたが、思っているのとは違う事しか書いてありませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/10 05:10

#と++は何の関係があるのでしょうか。あと「ライブラリ」は何のことを指してますか?
Peanut72

2019/08/10 05:18

とりあえずプログラミング言語単体で何ができるのかよくわかっていないので多めにタグをつけました ライブラリは、何かを指しているというわけでもないのですが、シューティングゲームを作るにあたりよくおすすめされていたのはDXライブラリですね。そもそもライブラリはどのようなものなのか、極端な話自力でプログラムすることはできるのか、が聞きたかった感じです。
m.ts10806

2019/08/10 06:12

「ライブラリ」はそもそも基本的にはとある言語で作られた便利機能の集合体のようなものなので、結局はその言語で作られています。つまり、自分で全部実装するなら何でもできます。 という前提知識くらいは得たほうが良いですし、 そもそもおすすめられているライブラリがあるならまずそれを使ってみては?それに今回の内容だけだとただやみくもに投げているだけにしか感じません。 何かしら前提や自身が調べたこと試したことがあるのでしたらまずそれを書きましょう。質問は編集できます。(こちらのコメント欄はデフォルト非表示です)
Peanut72

2019/08/10 06:44

グレースケール処理だのなんだのでてきて分からなかったんですよ。とりあえず使ってみろと言われても仕組みが全く分かりませんし。画面の表示がどう行われているかプロセスを教えていただけませんか。調べようにもとっかかりがないんです
fiveHundred

2019/08/10 06:50

仕組みが分からなくとも、DXライブラリを使えば表示は出来ます。 よって、ゲームを作る程度であれば、仕組みを知る必要はありません。
m.ts10806

2019/08/10 06:51

たぶんその段階だと詳しい説明されても理解できないのでは・・? プログラミングを進めていく上での基礎知識を身につけるのが先に思います。 ライブラリもフレームワークも「仕組みを知る」ことに重きを置くことはほとんどなく「提供されている機能を利用する」ことに終始します。公式のドキュメントを読んでいく必要がありますが、前提となる言語自体の技術や知識が一定以上ないと使えるようになることすら厳しいと思います。 それに…あまり詳しくないから調べてみたらDXライブラリってC++ですね。「C言語をはじめてみました」とおっしゃっていますが、言語としては別物なので(100%ではないですが・・)、 まずタグにつけられた3つの言語の違いが明確に理解できるくらいまでは基礎学習を進められたほうが良いと思います。
m.ts10806

2019/08/10 06:52

それに、私は「何かしら前提や自身が調べたこと試したことがあるのでしたらまずそれを書きましょう。質問は編集できます。(こちらのコメント欄はデフォルト非表示です) 」と書いています。 何も書いていないとどういう状態で質問してきているか誰もわからないのです。 https://teratail.com/help/question-tips
m.ts10806

2019/08/10 07:00 編集

補足しておきますと、喧嘩しようとか馬鹿にしようとかそういった意図は全くなく、 質問者さんがどういう状態で質問してきているのか質問内容からは全く分からないので、「質問本文に」きちんと書いてもらいたくて 質問への追記修正依頼をしているだけです。 その状態があるだけでも的確な回答やアドバイスが得られやすくなります(丸投げと低評価がつくことも減るのではと)
Peanut72

2019/08/10 07:02

仕組みを知らないとなんだか気持ち悪くてですね。あとDXライブラリはC++が基本らしいですがCでも使えると書いてあったので。一応C++ものぞいてみてはいますが。 C/C#/C++の差は理解しているつもりです。この質問自体言語に依存しない方向性とかやり方について聞きたかったものなので何個かタグにつけさせていただいたんです。 質問の方にあまり書いていなかったのは調べても収穫がなかったので書かなかったためです。習熟度を書くべきだったでしょうか。
Peanut72

2019/08/10 07:03

まぁ、とりあえず訳が分からないなりにやってみます。初心者が質問する場ではなかったようですね。どうも申し訳ございませんでした。
m.ts10806

2019/08/10 07:08

>この質問自体言語に依存しない方向性とかやり方について聞きたかったものなので 現在の質問内容ではそれがわかりません。 なので、経緯や前提(調べたこと試したこと)をきちんと書きましょうとお願いしています。 「初心者アイコン」もありますし、初心者が質問する場所ではないとはだれも思っていません。 初心者であればその人のレベルや調べたこと試したこと、理解したことにあわせた回答を選ぶだけです。 まずは質問を編集して、追記してください。
Zuishin

2019/08/10 07:20

シューティングゲームを作るついでに理解できるような簡単な仕組みじゃありません。大学で数学やってないなら、まずそこからです。
m.ts10806

2019/08/10 07:28 編集

それに仕組み理解するならそのライブラリのコアソースを読み進めていくための前提のとなる言語知識が一定以上必要なので、結局は、言語知識ありきです。ドキュメントを読むよりも遥かに高い言語知識が求められます。 実際に仕組みに突っ込みたい(なぜこうなっているか知りたい)と質問してくる質問者は一定いるのですけど、説明してもそれを理解する言語知識を持ち合わせていない(+ドキュメントもコアソースも読まない)ため、結局何も理解できていないままずっと初心者に成り下がっています(そして質問のレベルもどんどん落ちていく) であれば、「ドキュメントを活用できるくらいの言語知識」をきちんと身に着けるのが何よりも優先事項ということになります。ライブラリやフレームワークを用いるのであれば。
Zuishin

2019/08/10 07:26

何度も言うようですが、まずは身の丈に合わせて数当てゲームから取りかかってください。それでもあなたにとってはコピペせず作るのは結構難題のはずです。
hayataka2049

2019/08/10 11:41

>画面の表示がどう行われているか ライブラリなしで、というかOSとかそもそもハードウェアすらなしでというところからスタートしちゃいますが、それでよろしいのですか。確かにソフトウェアは(コンパイラがあれば)Cだけですべて実装できるでしょうが。 冗談でもなんでもなく、GUIはOSとかグラフィックドライバの提供するAPIに頼る比重が大きいので、単にDX使わないというのよりずっと低レイヤから見ていかないと理解して使ってる感は得られないはず……
guest

回答2

0

C言語を始めてみたのですが、C言語だけでできることとライブラリを使わないとできないことの差が良くわかっていません。

そもそもライブラリはどのようなものなのか、極端な話自力でプログラムすることはできるのか、が聞きたかった感じです。

ライブラリとは、ざっくり言ってしまえば**「便利な関数を集めたもの」**に過ぎないので誰でも作れますし、自分で同じ処理を書いてしまえば、ライブラリを使わなくても同じことができます。

例えばDXライブラリであれば、Windows APIDirectX の知識があれば、C言語やC++で開発することができますし、実際そうやって作られています。

Windows API や DirectX もライブラリの一種です。
つまりライブラリの中でさらに他のライブラリが使われています。

これらのライブラリをすべて自分で作るのはとても大変な作業なので、他の人が提供してくれているライブラリを使っているということですね。

投稿2019/08/11 01:20

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自分もよくわかっていない上での回答ですが。

ライブラリを使わない場合、その画像の読み込み方から作らないといけません。
他にも、キー入力や音の再生などもありますので、それらを一々作るのはあまりにも手間がかかりすぎます。
ましてや、その方法すらよく分かっていないのであれば、作れるかどうかすら分かりません。
ライブラリを使えば、それらの手間をかけることがなくなりますし、表示する仕組みがよく分からなくても表示させることができるようになります。
なので、ライブラリを全く使わない、というのはほとんどありません。

プログラミング言語単体で何ができるのか

その言語によって異なります。
ただ、printf()ですら、標準Cライブラリの一部なので、単体でどこまで出来るのかというのは深く考えすぎないほうがいいような気もします。

投稿2019/08/10 05:26

fiveHundred

総合スコア9803

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Peanut72

2019/08/10 07:06

たしかにその通りですね…。いろいろ便利ツールを盛り込みまくってもRPGツクールとか、ブロックでプログラムするような奴だとか、そんな感じになって勉強にならないのではないかと不安があったので仕組みだけでも知りたかったんです。 とりあえずいじってみることにします。
len_souko

2019/08/10 14:38

質問者の主張は身近な例で行くと、 「手紙を送る場合に郵便ポストへの投函だけで届くなんて気持ちが悪い、ポストから内部でどのように処理されているのか全て知らないと手紙を送るなんてできない」 と同じような意味になります 手紙を送りたいだけなら正直そんなことは気にする必要はありません 手紙を送る事業を始めたいという場合以外には無意味な学習になります 別にRPGツクールでも良いんですよ 当然そういったものを使用した場合にはできることに制限が入りますが、まずはそれでゲームを作れるようになって物足りないという場合により自由度の高い(=学習コストが高く比較的低レイヤーに近いライブラリ)を選択して増えた/変わった部分を追加で学習することで対応していけばいいんです キー入力を使用する際にキーボードの回路から制御チップでどのような処理がされて、USBのコード(?)に変換されてOSがどのように処理して入力キーとして取得できるかなんて知る必要はありませんよね?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問