ちょっと変わったマニアな作品が集結

c言語の標準cライブラリのみで、テトリスなどの簡単なゲームは作れるのでしょうか。
もし出来るなら、そのソースなどを教えてください。
出来ないならば、何故そのように思うのかも教えてください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

「不可能ではないが、簡単ではない」


が答えでしょう。


○ テトリスのようなゲームを作るとなると
・一定時間毎に画面表示を変更する
・キー入力をリアルタイムに読む。押されていないときでも、「押されていない」という状態を読む。
というような機能が必要となります。
これらは「C標準の方法」というのが用意されていません。

標準関数でキー入力する、と言えば、 getchar() あたりでしょうが、これをリアルタイム入力に対応させるのは困難です


○ 「標準cライブラリのみ」というのも曖昧です。
・ある程度以上の規模のプログラムを、main関数だけで実現させるのは現実的ではありません。
よって、関数を自作することになります。
自作した関数は「C標準ライブラリの関数」ではありません。
・世にある各種の追加ライブラリには、「C標準ライブラリ」だけを使って作られているものも少なくありません。
ということは、「追加ライブラリが必要」なプログラムの多くが、「標準ライブラリ」だけでも作れる、ということにもなります。
    • good
    • 0

こちらをどうぞ。

標準ライブラリだけで作られているのがあるかも。
http://detail.chiebukuro.yahoo.co.jp/qa/question …
    • good
    • 0

本当にC言語の標準ライブラリのみであれば、Windows APIやMFC等のライブラリも


使えないので、グラフィックを使う描画処理も、画面上の任意の位置に文字を表示
させる事もできません。
従ってテトリスの様なゲームは作れません。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QC言語で簡単なゲームを作る方法

僕はC言語を学び始めた程度ですが、一番簡単に作れるゲームとその作り方(ソース)を教えて下さい。お願いします。

Aベストアンサー

★じゃんけんゲームのソースです。

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

// じゃんけん定数
#define JKN_GOO  (0)
#define JKN_CHOKI (1)
#define JKN_PA  (2)

// 勝敗の定数
#define TYP_KATI (0)
#define TYP_MAKE (1)
#define TYP_AIKO (2)

// じゃんけんの判定関数
int check( int human, int computer )
{
 if ( human == computer ){
  return TYP_AIKO;
 }
 switch ( human ){
  case JKN_GOO:  return ((computer == JKN_CHOKI) ? TYP_KATI : TYP_MAKE);
  case JKN_CHOKI:  return ((computer == JKN_PA) ? TYP_KATI : TYP_MAKE);
  case JKN_PA:  return ((computer == JKN_GOO) ? TYP_KATI : TYP_MAKE);
  default:   return -1;
 }
}

// じゃんけんゲーム
int main( void )
{
 // ゲーム変数
 int count;  // 勝負回数
 int kati = 0; // 勝ちカウンタ
 int make = 0; // 負けカウンタ
 // 一時変数
 int human;  // キー入力の一時変数(人間用)
 int computer; // 乱数発生の一時変数(コンピュータ用)
 
 // (6)じゃんけん勝負を10回行う
 printf( "★じゃんけんゲーム(10回勝負)\n\n" );
 for ( count = 1 ; count <= 10 ; count++ ){
  // (1)人間:3つの状態を入力
  printf( "%2d回目…[1]グー [2]チョキ [3]パー を入力して下さい:", count );
  do {
   // (2)キー入力
   switch ( getche() ){
    case '1': human = JKN_GOO; break;
    case '2': human = JKN_CHOKI; break;
    case '3': human = JKN_PA; break;
    default: human = -1; break;
   }
  } while ( human == -1 );
  
  // (3)コンピュータ:3つの状態を乱数で決める
  computer = (rand() % 3);
  // (4)人間vsコンピュータの勝負
  switch ( check(human,computer) ){
   case TYP_KATI:
    kati++;
    printf( "⇒勝ち。\n" );
    break;
   case TYP_MAKE:
    make++;
    printf( "⇒負け。\n" );
    break;
   case TYP_AIKO:
    printf( "⇒引き分け。\n" );
    break;
   default:
    printf( "⇒エラー。\n" );
    break;
  }
 }
 // (7)結果表示
 printf( "\n★じゃんけんゲームの結果\n" );
 printf( "人間    :%d 回勝ち\n", kati );
 printf( "コンピュータ:%d 回勝ち\n", make );
 printf( "※引き分け回数は %d 回でした。\n", (10 - kati - make) );
 return 0;
}

注意:全角空白をタブ文字に変換して下さい。

★じゃんけんゲームのソースです。

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

// じゃんけん定数
#define JKN_GOO  (0)
#define JKN_CHOKI (1)
#define JKN_PA  (2)

// 勝敗の定数
#define TYP_KATI (0)
#define TYP_MAKE (1)
#define TYP_AIKO (2)

// じゃんけんの判定関数
int check( int human, int computer )
{
 if ( human == computer ){
  return TYP_AIKO;
 }
 switch ( human ){
  case JKN_GOO:  return ((computer == JKN_CHOKI) ? TYP...続きを読む

QWin32APIは覚えて損する?

Win32APIは現在一般的に出回ってる32Bit版Windowsの
ApplicationProgramingInterfaceですよね?
これがそのうち一般的に出回るのが64Bit版Windowsに
なったときもWin32APIを勉強したときの知識は役に
たつのでしょうか?
またWin16→Win32に変わったときはどのような感じだ
ったんでしょうか?
あと少々質問とずれてしまいますが○○Bit版Windowsの
[○○Bit版]はどのような意味を持つのでしょうか?
暇なときにでも回答できたらお願いします

※ ○○=16 or 32 or 64 など

Aベストアンサー

>64Bit版WindowsになったときもWin32APIを
>勉強したときの知識は役にたつのでしょうか?
ネイティブでモジュールを作れば、Win32Apiの環境でも
64bitで動作するソフトウェアを開発することは可能です。
内部的にどうなっていようと、公開される関数の
使用方法が変わっていなければ、十分に役に立つと思います。
(#1さんが言っているようにそこはMSしだいです)

>Win16→Win32
昔はDOSプログラミングが殆どだったようです。
最近のXPなどのWindowsOSにはMS-DOSに似たような、
「コマンド・プロンプト」がありますが、一応別物です。
「エスケープシーケンス」などが使えません。
WinApiは16Bitと32Bitで関数名自体が違う場合があったようです。
Win32Apiからはこれらはマクロ制御で切り替えを行っているところ
もあるようですが、レジストリ操作などはx64用と32bit用を併用する
場合などが存在する物には別々に用意されているようです。
(x64とx86のレジストリ位置が違う為)

>○○Bit版Windowsの[○○Bit版]はどのような意味を持つのでしょうか?
CPUの表現域が変わり、それに伴って
ソフトウェアが使用できる表現域も変わってきます。
例えば、分かりやすい(見やすい)所では32BitOSでは
メモリを4GB搭載したHW上でも32bitOS上で認識される
メモリの最大容量は3.25GBちょっとです。
しかし、64BitOSでは4GB以上でも認識されます。
これは、4GBの数値が符号なしの整数で、
32bitでは表しきれないためです。
2つの最大Bitを2進数で表すと以下のようになります。

32Bit
1111 1111 1111 1111 1111 1111 1111 1111

64bit
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111

>64Bit版WindowsになったときもWin32APIを
>勉強したときの知識は役にたつのでしょうか?
ネイティブでモジュールを作れば、Win32Apiの環境でも
64bitで動作するソフトウェアを開発することは可能です。
内部的にどうなっていようと、公開される関数の
使用方法が変わっていなければ、十分に役に立つと思います。
(#1さんが言っているようにそこはMSしだいです)

>Win16→Win32
昔はDOSプログラミングが殆どだったようです。
最近のXPなどのWindowsOSにはMS-DOSに似たような、
「コマンド・プロンプト...続きを読む

QC言語でゲーム作り テトリス

 忙しい中失礼します。愚問過ぎて済みませんが・・・
 今C言語に興味が沸いて来て、ゲームを作りたい、と思っています。
 最終的にはC言語を駆使してテトリスを作りたい、と思っています。
 あの、アーケードゲームにあるやつ(ブロックの絵があり、カーソルスティック?でブロックの方向を変えて等)、そのまま作りたい、と思っています。
 可能でしょうか?やはりC++言語は必要になってくるのでしょうか?
 要はC、またはC++(←出来ればこの2言語まででテトリスゲームを作成したい)等、Cに関する言語を使って、ゲームを完成させたい、と思っているのです。
 開発環境はWindows XP Home Edition
 C言語:http://www.codegear.com/jp/downloads/free/cppbuilder
 にあります、Borland C++Compiler / Turbo Debugger
 を使っています。

 知らない言語を学ぶ場合、まずはウェブサイトを通して学びたい、と思っています。
 なので、参照となるURLがあればご提示願います。
 結局本だと相性があるので・・・。まあ、ウェブサイトもそうですが、お金がかからない・・・という時点でウェブサイトを探したい、と思っているのです。
 その後必要な本を探す、という手立てで考えています。
 宜しければ教えて下さい。お願いします。

 下記のURLを参照してからこの質問を書き込みました:
 http://oshiete1.goo.ne.jp/qa1601586.html
 http://oshiete1.goo.ne.jp/qa2586359.html


 また、最終的にテトリスゲームなので、
 ステップ1:C言語でじゃんけんゲームを作る必要有、で言語はC言語のみで十分
 ステップ2:じゃんけんゲームでグラフィックを次に付け足す、言語はC言語で作成可、Graphic?関数を使う必要有
 みたいな、手順を踏んでいこうと思っています。先ずは小さなものから・・・始めていこう、と思っています。

 忙しい中失礼します。愚問過ぎて済みませんが・・・
 今C言語に興味が沸いて来て、ゲームを作りたい、と思っています。
 最終的にはC言語を駆使してテトリスを作りたい、と思っています。
 あの、アーケードゲームにあるやつ(ブロックの絵があり、カーソルスティック?でブロックの方向を変えて等)、そのまま作りたい、と思っています。
 可能でしょうか?やはりC++言語は必要になってくるのでしょうか?
 要はC、またはC++(←出来ればこの2言語まででテトリスゲームを作成したい)等、Cに関する言語を使...続きを読む

Aベストアンサー

★テトリス情報
・まずはルール確認
 http://ja.wikipedia.org/wiki/%E3%83%86%E3%83%88%E3%83%AA%E3%82%B9→『テトリス』
・参考情報1
 じゃんけんゲームのソースを載せています。参考に。
 http://oshiete1.goo.ne.jp/qa3287734.html→『C言語で簡単なゲームを作る方法』
・参考情報2
 http://www.it-engineer.jp/main/programing/sample/vc23.html→『テトリスを作ろう』
 http://www.nhk.or.tv/kow/program/index.php→『テトリスの作り方』
 http://codezine.jp/a/article/aid/207.aspx→『落ち物ゲームの作り方 第1回:「TETRA」編』
 http://codezine.jp/a/article/aid/228.aspx→『落ち物ゲームの作り方 第2回:「聖夜の落とし物」編』
・C言語サイト
 http://itpro.nikkeibp.co.jp/article/COLUMN/20060929/249347/→『連載 よくわかるC言語』
 http://www9.plala.or.jp/sgwr-t/index.html→『初心者のためのポイント学習C言語』
 http://homepage3.nifty.com/mmgames/c_guide/index.html→『苦しんで覚えるC言語』
・以上。

参考URL:http://www9.plala.or.jp/sgwr-t/index.html

★テトリス情報
・まずはルール確認
 http://ja.wikipedia.org/wiki/%E3%83%86%E3%83%88%E3%83%AA%E3%82%B9→『テトリス』
・参考情報1
 じゃんけんゲームのソースを載せています。参考に。
 http://oshiete1.goo.ne.jp/qa3287734.html→『C言語で簡単なゲームを作る方法』
・参考情報2
 http://www.it-engineer.jp/main/programing/sample/vc23.html→『テトリスを作ろう』
 http://www.nhk.or.tv/kow/program/index.php→『テトリスの作り方』
 http://codezine.jp/a/article/aid/207.aspx→『落ち物...続きを読む

Q#include というヘッダファイルについて

お早う御座います。
Cの初心者です、宜しくお願いします。
「#include <Windows.h>」というヘッダファイルはどのようなプログラムを書いたときにincludeしてやる必要があるのでしょうか。
宜しくお願いします。

Aベストアンサー

VisualStudioなら、<Windows.h>の部分を右クリックして
「定義ファイルに移動」のような項目で中身を見れたと思います。
そこに定義されている関数や定数を使う場合にincludeしてあげる必要があります。
※Windows.hの中身は弄らないでください


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング