今だけ人気マンガ100円レンタル特集♪

C++で人生ゲームみたいなすごろくゲームを作成しようと思っています。

参考になるサイトや元になりそうなプログラムがあったらおしえてほしいです。

お願いします。。

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

A 回答 (3件)

C言語を3年間学んだ


 → C言語に対する基本的な知識は身についている
 → C言語の領域から外れた内容はまったく分からない
 → 就職のための勉強というよりも趣味でのゲーム制作

という前提で考えますと、今から勉強するのならばC++よりもC#の方がよろしいのではないかと考えます。確かにC++はCを拡張した内容なので分かりやすい気分になるかもしれませんが、先を見据えるとどうかなあって気もしないでもないです……。
C#はCとJavaの合いの子のような存在ですので将来的にJavaを勉強したくなったときの橋渡しにもなりますし、ゲームを作る上ではここらへんが一番お手軽かなと思います。VisualStudioもMSのサイトから無料で落とせるようになりましたしね。

ちなみに自分も現在無性にゲームを作りたくなってC#をいじくっているところですが、C#の文法学習として『標準講座C#』を、DirectX処理などの参考に『C#ゲームプログラミング』を使用しています。後者は比較的砕けた本なので詰まることはないでしょうが、前者は「参考書ってより辞書じゃね?」というような内容の本なので、自信がない場合はあまりお薦めできないかもしれません。

さらにC++もしくはC#などでゲームを作る上での前提知識ですが、「オブジェクト指向を理解している」「AIの仕組みを理解している」ことを挙げさせていただきたく存じます。これが欠けてると挫折の道ですので。
オブジェクト指向については難しいとよく言われますが、自分は『憂鬱なプログラマのためのオブジェクト指向入門』一冊で学んだ範囲で特に不自由はしていません。
AIの仕組みについては「これがいいぞ!」とお薦めできる本が特に思い浮かばないのですが、確か自分が始めてオセロゲーム(Cのコンソール上で動きます)を作ったときはネットで調べただけでそれなりのものを作れたと記憶しております。見通しがさっぱりつかないというのでしたら、

・オブジェクト指向の勉強をする
・コンピュータ対戦型のオセロを作ってみる
 →
・C#の勉強をする(基本文法→Windowsプログラム)
 →
・作成可能な範囲でゲームシステム設計

という手順を踏んでみてはいかがでしょうか?

P.S.
上で紹介した『憂鬱なプログラマ~』はサンプルコードがC++で書かれていたと思いますが、C言語の知識があるのならば、ネットの助けさえあれば十分に利用できる範囲だと思います。
実際にオブジェクト指向を練習してみたいと思った場合は、Rubyを用いるのが学習用としては最適だと自分は考えています。そんなにたくさんやってられるか!とおっしゃるかもしれませんが、『たのしいRuby』一冊で簡単に実用レベルに手が届く&非常に使い勝手がいいという点を考えますと、オブジェクト指向を理解するためにC++に触れるよりはよっぽど効率的かと存じます。
    • good
    • 0

こんにちは。



まずオブジェクト指向を理解される方がいいと思います。
参考URLのPDFファイルを読めば大体わかると思います。
この本はjava用に書かれていますがC++に応用できます。

ここで挙げられているじゃんけんゲームを拡張すれば実現できます。
最初はすごろく(移動のみ)に限定し、
その後でお金の差し引きを追加していけばいいと思います。

ご参考までに。

参考URL:http://www.smg.co.jp/books/whyobject/index.html
    • good
    • 0

あなたの技術がどの程度なのか分からないので……。



これからプログラムを始めるというのならば、C++よりもC#などの方がいいかと思いますが、まずは基礎を勉強した方がいいと思います。参考書はまあそれぞれ。
CUIでのプログラミングは分かるけれどもGUIが……という場合は、MFCを学んでみるのがいいでしょう。書籍を購入するのがいいと思いますが、簡単な内容でしたら『猫でもわかる~』あたりを参考にしてください。
Windowsプログラムなんかバリバリだけれどもゲームの作り方なんか分からないというのでしたら、敵のAIを考えたりなどといろいろとややこしいので、Amazonあたりで評価のいい本を何冊かカートに突っ込みましょう。

正直言って難度は低くないので、何をすればいいのか分からないという段階でしたら、もう少し手の届きやすいところから挑んでみるのがいいのではないかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

一応Cは3年間やりました。 
ただC++が初めてなんで・・・

いろいろ参考書さがしてみます。

お礼日時:2008/10/10 07:34

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

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

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

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

Qすごろくに使用するサイコロ

以下の問題についてお願いします。
すごろくに使用するサイコロの目を生成するプログラムを作成せよ。
rand関数を用いて1から6の整数乱数を発生させ表示させるとともに、以下のルールに従う表示を行うこと。
サイコロの目が1の場合には「mouikkai」と表示する
サイコロの目が4の場合には「ikkai yasumi」と表示する
このルールに従い、サイコロを20回振った場合の結果を示せ。
randを用いて以下のように考えましたが、補足をお願いします。
#include <stdio.h>
#include <stdlib.h>

void main (void) /*サイコロ*/
{
int i,x;
for(i=0;i<20;i++){
x=(int)(6*(rand()/32767.1)+1);
printf("%d",x);
}
}

Aベストアンサー

もう一回になったときや、一回休みになったとき、駒の位置はどう動くのでしょう。その辺のルールがあやふやですね。

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

int
main(void)
{
int n, i, pos;

pos = 0;

srand(time(NULL));

for (i = 0; i < 20; i++) {
n = (int) (6.0 * rand() / RAND_MAX) + 1;
printf("%4d: saikoro = %d, pos = %d\n", i, n, pos);
switch (n) {
case 1:
printf("mouikkai\n");
pos++;
i--;
break;
case 4:
printf("ikkaiyasumi\n");
pos += 4;
i++;
break;
default:
pos += n;
}
}
printf("last pos = %d\n", pos);
return 0;
}

もう一回になったときや、一回休みになったとき、駒の位置はどう動くのでしょう。その辺のルールがあやふやですね。

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

int
main(void)
{
int n, i, pos;

pos = 0;

srand(time(NULL));

for (i = 0; i < 20; i++) {
n = (int) (6.0 * rand() / RAND_MAX) + 1;
printf("%4d: saikoro = %d, pos = %d\n", i, n, pos);
switch (n) {
case 1:
printf("mouikkai\...続きを読む

Qすごろくゲームの作成ツールを教えてください。

これから初めてすごろくゲームを作りたいと思っているのですが、使用するツール選びに困っています。

・画面上に升目(背景)があり、その上をサイコロの出目分、升目に沿ってキャラ画像が動ける。
・キャラ画像がいる升目によりイベントを呼び出すことが出来る。

以上のような事ができるツールがあれば教えてください。
出来るだけ、プログラム言語ではなく、コミックメーカー等のツールで、フリーウェアで探しています。

また、ツールだけでなく、すごろくゲームを作るうえでなにか参考になるような書籍などがあれば合わせて教えていただけると助かります。

そして、すごろくの分類は何になるのでしょうか。
アクション シューティング シミュレーション ロールプレイング アドベンチャー 等色々あるためいまいちわかりません。
こちらについても教えていただければと思います。

色々質問が多いですがよろしくお願いします。

Aベストアンサー

ベクターで検索したら出てきました。
作者さんのサイトにも行ってみましたがあまり詳しく書いていなかったので、中身はどういうものかわかりません。
「子供向けのゲーム作成ソフト」だそうです。

めちゃもんゲームメーカー(すごろく)
http://www.vector.co.jp/soft/win95/edu/se383002.html

分類は「テーブル」ではないでしょうか。
某ゲーム雑誌にそう書いてありました。

QEnterキーを押されたら次の処理に移るという事をしたい。

コンソールアプリケーション上で文字列を表示させた後、ユーザーがエンターキーを押したら次の文字列を表示するという仕様にしたいのですが、エンターキーだけ入力待ちにするっていうのはどのように書けばいいんでしょうか?

Aベストアンサー

#include <stdio.h>

int main(void)
{
char *str[] = {"abc", "def", "ghi", "jkl"};
int i;

for(i = 0; i < 4; i ++){
while(getchar() != '\n') ;
puts(str[i]);
}
return 0;
}

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...続きを読む

QLNK2019: 未解決の外部シンボルのエラーが出る

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}


 mymain.h
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();


 myhelper.h(サンプルなので打ちミスはない)
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;
----------------------------------------------------------------
 エラー内容
1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です
1>my - エラー 2、警告 0
ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ
----------------------------------------------------------------
画像を貼り付けときます
(見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html)
初心者なのでわかりやすくお願いします

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自...続きを読む

Aベストアンサー

ファイル構成から推測するに
mymain.cpp というファイルに
void MyMain(void) {
// ここに処理を書く
}
という関数が必要なようです。

QC言語でサイコロのプログラムを作ってみたのですが

まず、以下のような”実行するたびに1~6の数字をランダムに出力するプログラム”を
作ってみたのですが、特定の数字が出てこないのです。
例えば、1と4、2と5、3と6 が出ない

ここで気がついた事は、

1、出ない目の2数の差は3であること。
2、乱数自体を表示させたところ、ちゃんと1秒毎に乱数は変わっている。こちらには問題はない
3、約1分間隔で、出ない数字の組み合わせが変わる。
(例えば 1,3,4,6,1,6,3,6,4(2と5が出ない)
 →1分間実行し続けると・・・  2,3,6,5,3,2,2,6(1と4が出ない))

この原因は一体なんなのでしょうか・・・
とても気になって仕方がありません。わかる方教えてください。

以下、ソースコードになります

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

int func(void);

int main(void){

int number=0;

number=func();

//サイコロの目の表示
printf("%d\n",number);

return 0;

}

int func(){

//乱数の初期化
srand((int unsigned)time(NULL));

//サイコロの目をランダムで出力し、返す

return rand()%6+1;
}


プログラムの仕組みは

パソコンから現在の歴時刻を元に乱数の初期値を変更

rand関数で適当な値を受け取り、6で割った余剰+1を計算し値を返却する

まず、以下のような”実行するたびに1~6の数字をランダムに出力するプログラム”を
作ってみたのですが、特定の数字が出てこないのです。
例えば、1と4、2と5、3と6 が出ない

ここで気がついた事は、

1、出ない目の2数の差は3であること。
2、乱数自体を表示させたところ、ちゃんと1秒毎に乱数は変わっている。こちらには問題はない
3、約1分間隔で、出ない数字の組み合わせが変わる。
(例えば 1,3,4,6,1,6,3,6,4(2と5が出ない)
 →1分間実行し続けると・・・  2,3...続きを読む

Aベストアンサー

randでは「疑似乱数」といって、実際には計算で次の「乱数」を求めています。
直前の(計算方法によっては複数の)「乱数」を覚えておいて、次の「乱数」を計算しています。
そして、最初の状態を求めるのに使う値が「種(シード)」と呼ばれるものです。種が同じなら、同じ乱数列になります
種を設定するのがsrandです。

例えば。
あるときsrand(1)でrand()=1,3,5,4 ... となったら
srand(1)とすれば、いつでも最初のrand()は1、次は3,次は5...となります。

さて、この疑似乱数は、その計算方法によってはあまり「乱数っぽくならない」ことがあります。

種が近い値の場合、乱数が近くなってしまうアルゴリズムもあります。

質の悪い乱数だと、一見バラバラに見えて、よくよく見ると、特定ビットに短い周期性が見られたりします。
6で割ったあまり、というのは上位ビットより下位ビットの影響が大きくなります。そして、「下位ビットに注目すると、全パターン出てこない」などということは有りえます。

おそらく、この複合で起こっているのでしょう。

・srandで初期化するのは、普通は最初の1回だけです。
・もっと上の位を使うようにする。例えば、rand()/(double)RAND_MAX*6.0と、全体を使うとか、 (rand () >> 4)%6 等と下位を捨てるとか
・rand自体があまり質のいい乱数ではないので、別のアルゴリズムを使う。

参考URL:http://www001.upp.so-net.ne.jp/isaku/rand.html

randでは「疑似乱数」といって、実際には計算で次の「乱数」を求めています。
直前の(計算方法によっては複数の)「乱数」を覚えておいて、次の「乱数」を計算しています。
そして、最初の状態を求めるのに使う値が「種(シード)」と呼ばれるものです。種が同じなら、同じ乱数列になります
種を設定するのがsrandです。

例えば。
あるときsrand(1)でrand()=1,3,5,4 ... となったら
srand(1)とすれば、いつでも最初のrand()は1、次は3,次は5...となります。

さて、この疑似乱数は、その計算方法によってはあまり「...続きを読む

Qゲーム開発がしたい。学ぶべきはC++かC#か。

現在、小さな事務系ソフトウェア開発会社でプログラミングをやっている者です。

思う所あって、ゲーム系の会社への転職を考えています。
応募にあたって作品の提出が必要なことは存じていますが、
どの言語を勉強し、開発すべきかで迷っています。

開発したいゲームとしては、STGかRPGで考えています。
2Dか3Dかは特にこだわりがありません。

過去に行ったプログラミングは、ゲームの関係の薄いものばかりで、
「ゲーム開発」について本格的に学んだことはありません。
学生の頃はロボットを制御するために、C言語のプログラムを書いていました。
PCとマイコンのシリアル通信のために、C#でwindowsアプリケーションも作りました。
C++もほんの一時期だけ使っていました。
卒業してから日が浅いので、これらの知識はまだある程度あります。
会社ではaspxとJavaScriptでWebページの外面、内部の動作をVBで行なっています。

触れたことのあるプログラミング言語を理解度順に並べたら多分こんな感じです。
VB≒C#>C>JavaScript>>>C++

C#とVBは似通った言語なので、VB中心の現在でもなんとなく理解できます。
現在最もメジャーらしいC++が最も経験が少なく、自信がないです。

軽く調べた感じでは、現在のゲーム開発はC++が多いが、
今後はC#やJavaも増えるかもという感じでどちらでゲーム開発を本格的に学ぼうか迷っています。

最もメジャーなC++を改めて学ぶべきか、
それともある程度使えるC#での開発方法を学ぶか、
あるいはその他の言語か、助言をお願いします。

また、開発の参考文献なども教えていただけると幸いです。
よろしくお願いします。

現在、小さな事務系ソフトウェア開発会社でプログラミングをやっている者です。

思う所あって、ゲーム系の会社への転職を考えています。
応募にあたって作品の提出が必要なことは存じていますが、
どの言語を勉強し、開発すべきかで迷っています。

開発したいゲームとしては、STGかRPGで考えています。
2Dか3Dかは特にこだわりがありません。

過去に行ったプログラミングは、ゲームの関係の薄いものばかりで、
「ゲーム開発」について本格的に学んだことはありません。
学生の頃はロボットを制御するために、C...続きを読む

Aベストアンサー

今後の動向不明なソーシャルならPHPとかJavaScriptとかWEB系です。
家庭用ゲームのメインの開発は今後もしばらくはC++が続くと思いますが、C#もツール開発用としては導入されていますし一部のゲームはC#で開発されています。
家庭用ゲーム機なら両方共出来ないとダメじゃないかと思いますね(片一方はある程度出来る程度で良いと思いますが)。

>開発したいゲームとしては、STGかRPGで考えています。
>2Dか3Dかは特にこだわりがありません。

こちらが拘るんじゃなくて向こうの会社が拘る問題ですが、今時は家庭用ゲーム機は3Dじゃないと厳しいと思います。
あと応募作品でSTGだとすごく多いので、それだけで評価が下がります。
逆にRPGは、規模が大きくなるためプログラミングスキルが直に反映されるので応募課題としては悪くないですが市販レベルの操作性に合わせて作ること事態が大変です。
WEB系をやっていたのならオンラインゲームを作るスキルも期待されるでしょう。

とりあえず、どのぐらいのものが作れるかリアルタイム性のあるものを作るということがどういうことなのか理解するためにDXライブラリをご紹介しておきます。
これでラクラクとゲームを作れるようなら本格的にC++とDirectXやC#とXNAで応募作品を作れば良いのでは無いでしょうか?

「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/

同サイトのこっちの掲示板には業界人の回答者も出没します。
「C言語何でも質問掲示板 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewforum.php?f=3

今後の動向不明なソーシャルならPHPとかJavaScriptとかWEB系です。
家庭用ゲームのメインの開発は今後もしばらくはC++が続くと思いますが、C#もツール開発用としては導入されていますし一部のゲームはC#で開発されています。
家庭用ゲーム機なら両方共出来ないとダメじゃないかと思いますね(片一方はある程度出来る程度で良いと思いますが)。

>開発したいゲームとしては、STGかRPGで考えています。
>2Dか3Dかは特にこだわりがありません。

こちらが拘るんじゃなくて向こうの会社が拘る問題ですが、今...続きを読む

QRPG等のゲームの作り方を紹介したサイトは?

先ほどの投稿がよくなかったようですので、改めました。

C言語でRPGやシューティングゲームのようなゲームを作りたいのですが、
画像や音声を扱う扱い方がわかりません。

C言語でゲームの作り方を「わかりやすく」紹介したサイトありませんでしょうか。
よろしくお願いします。

Aベストアンサー

RPGやシューティングを作るには確かに画像や音声を扱う必要がありますね。
DXライブラリというライブラリを使うとものすごく簡単にRPGやシューティングゲームなどをC言語で作る事が出来ます。

http://l.huu.cc/g/

こちらのサイトには本当に「わかりやすく」ゲームプログラムの方法が書かれています。

一度参考にされてみてはいかがでしょうか?

参考URL:http://l.huu.cc/g/

QC#にて別クラスの関数を使いたい

C#にて、別クラスの関数を使用する方法を教えてほしいです。

下記のような、構造体を受け取るメソッドを作りました。

*****************************
private struct MyPoint
{
public int x;
public int y;
}

private void proc1(MyPoint pt)
{
MessageBox.Show("座標:" ; pt.x + "," + pt.y + "実行結果");
}

private void button1_Click(object sender ,System.EventArgs e)
{

MyPoint pt;
pt.x = 10;
pt.y = 20;
proc(pt);
}
*****************************

別のフォームのクラスから、proc1を呼び出したいのですが、やり方がわかりません。
どうか、教えてください。

Aベストアンサー

同じ定義をしたとしても別の名前空間に書いた構造体は同一とはみなされません。

呼び出し先クラスでの構造体を private では無く、public で宣言して下さい。

呼び出し元では、

MyClass.MyPoint pt;

のようにして実体を作ります。

Q無限ループを抜け出す方法を教えて下さい。

ご覧いただきありがとうございます。
タイトルの通り、無限ループを抜け出す方法を教えて頂きたいです。

for( ; ; i++) {
printf( "%ld", i );
}

たとえば、上記の無限ループをキー入力待ちをすること無しに、キー入力があった場合に途中で抜ける方法はあるのでしょうか?
ご回答のほどよろしくお願いいたします!!

Aベストアンサー

★キー入力されたかの判定は『kbhit』関数が便利です。
・MS-DOS、Windows 系の OS ならば『kbhit』でキー入力の有無をチェックできます。
・下に簡単なサンプルを載せます。

サンプル:
#include <stdio.h>
#include <conio.h> ←kbhit()のため

long i;

for( i = 0 ; !kbhit() ; i++ ){
 printf( "%ld\n", i );
}
getch(); ←※

解説:
・for 文の kbhit() 関数がキー入力されたら 0 以外を返し、キー入力がなければ 0 を
 返す関数です。これを利用すれば、キー入力があった場合に途中で抜ける事が可能です。
 kbhit()関数の参考リンクは。→http://www.geocities.co.jp/SiliconValley-Bay/7437/c/c7.htm
・また、for 文の最後にある getch() 関数は、キー入力があった後に入力された1文字を
 読み捨てています。これは、キー入力があって for 文を抜けた後にプログラムが終了する
 場合は、コマンドラインなどにキー入力された1文字が入力されてしまうために付け加えています。
・ただし、kbhit() という関数は Windows 系しか使えないです。
 UNIX 系では kbhit() がないため、同様な機能を自前で作ります。
 下の『参考URL』をどうぞ。
・以上。

参考URL:http://www.ncad.co.jp/~komata/c-kouza24.htm

★キー入力されたかの判定は『kbhit』関数が便利です。
・MS-DOS、Windows 系の OS ならば『kbhit』でキー入力の有無をチェックできます。
・下に簡単なサンプルを載せます。

サンプル:
#include <stdio.h>
#include <conio.h> ←kbhit()のため

long i;

for( i = 0 ; !kbhit() ; i++ ){
 printf( "%ld\n", i );
}
getch(); ←※

解説:
・for 文の kbhit() 関数がキー入力されたら 0 以外を返し、キー入力がなければ 0 を
 返す関数です。これを利用すれば、キー入力があった場合に途中で抜け...続きを読む


人気Q&Aランキング