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

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

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

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

Q&A

解決済

3回答

3488閲覧

c言語 アニメーションの繰り返し中のキー入力

TheLastSoldier

総合スコア16

C

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

0グッド

0クリップ

投稿2016/07/13 14:48

編集2016/07/13 15:29

c言語でアニメーションを使ったゲームを作っています。HandyGraphicsを使っています。
大体の基礎は出来ましたが、プレイヤーをキー入力で操作する動作を加えたいと思っています。
そこで、キー入力のイベントを配置しようと思ったのですが、どこに配置してもそのイベントが発生するまでアニメーションが開始されません。
普通、キー入力のイベントは条件文で出力しますが、私はアニメーションの途中でも、ゲームのように同時並行で、キー入力できるようにしたいのです。
そのためには、どういうコードにすべきか教えてください。具体的にコードは書かなくて結構です。
あなたが書く場合の例を教えていただけると嬉しいです。
どうか、ご回答お願いします!!

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

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

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

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

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

guest

回答3

0

ゲーム用のフレームワークをお使いになるか、いわゆるイベントループというものを自分でお書きになるか、タイマーイベントを使った処理をお書きになるか、マルチスレッドを使ったプログラムをお書きになるか、ではないでしょうか?

投稿2016/07/14 08:01

MasafumiOkamoto

総合スコア254

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

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

0

ベストアンサー

こんにちは。

通常のキー入力関数は、ユーザがEnterキーを押すまで関数から返ってきません。
ですので、アクション・ゲームには使えません。

ゲーム用のライブラリは一般にキー入力を待たない(押されてない時でも直ぐに戻ってくる)キー入力関数をサポートしてます。お使いのHandyGraphicsライブラリにそのような関数はありませんか?

ところで、HandyGraphicsで検索してもほとんど情報がでてきません。
グーグルからの提案でHandy Graphicで検索すると少し情報がありました。

Handy Graphic とは、簡単な作図を行うための機能を C プログラムから使えるようにまとめたものです。

プログラムから使うための機能のまとまりをライブラリと呼びますが、Handy Graphic は作図を行うため
のライブラリですのでグラフィックライブラリと呼ばれます。

もし、これのことでしたら、ゲーム用のライブラリではないのでゲーム用のキー入力機能(キー入力待ちしない)は提供していないと思います。

OSの機能を直接使うことになります。
ですので、どのOSでお使いなのか書かれた方がよいと思います。

投稿2016/07/14 02:58

Chironian

総合スコア23272

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

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

guest

0

ゲームプログラマではないので、最近の主流とかはわかりませんが、基本は下記の流れだと思います。

無限ループ { イベント処理やキャラクターの移動の計算など 描画 }

一般のゲームなんかでは、この1回のループが1フレーム分に相当し、30フレーム/秒のゲームなら1秒間に30回処理が行われると思います。
逆にこの周期に処理が間に合わない場合は、いわゆる「処理落ち」になり動作が遅くなります。

ここらへんの記事を参考にしてみてください。
http://html5.gamebatake.info/develop/gameloop.html
http://d.hatena.ne.jp/Nagise/20090824/1251117275

ただ今回質問にあがっているゲームではフレーム数のことまでは気にせず、とりあえず前述の処理の流れで組んでみることから始めると良いと思います。

投稿2016/07/14 00:50

ttyp03

総合スコア16998

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

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

TheLastSoldier

2016/07/14 08:07

いつかゲームを作る時に活用させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問