出産前後の痔にはご注意!

DXライブラリで 
こちらのゲームのような横スクロールアクションを作ろうと思ってます。

ステージの製作方法なんですがどのようにすればよろしいでしょうか?
PhotoshopやIllustratorは持ってはいるのですが、それでステージ全体をデザインし
http://dixq.net/g/26.html  (ゲームプログラミングの館)
こちらのように 0と1で足場を組むのが一般的でしょうか?

また、そういった事を解説しているWebページがありましたら
是非とも教えていただきたいです。

回答よろしくお願いします。

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

A 回答 (1件)

汎用マッチエディタを使うとか自分で作るとかでしょうね。


「Platinum」
http://www.hyperdevice.net/
「WIN用ソフト紹介 MapEditor5」
http://www.moreread.net/mario/Any/win/index.php? …
    • good
    • 1

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

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

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

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

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

QC言語でゲーム作り

フリーゲームに影響され、自分も作ってみたいと思いC言語勉強し始めました
趣味の範囲で、こつこつ頑張っていこうと思ってます

今現在、C言語の初初心者向けの本を一通り読み終えて次の本を読んでます
一応、一つの目標としてアクションゲーム(マリオみたいな)を作りたいんですが
C言語の他にどんなこと勉強すればいいでしょうか?

あと、C言語から次のステップに移るときは
やはり上級者向けの本は理解できるくらいまで頑張ってからでしょうか?

Aベストアンサー

とりあえずCだけではなく、C++まで一通り学習することをお勧めします。
PCゲームなのかどうか、Windows上のものなのかどうかわかりませんが、C/C++系の場合は、C++使っていることが多いので、C++知っているのと知らないのとでは、サンプルだとかライブラリとか理解できないかもしれないので。

仮にWindowsアプリだとして、API叩いてGDIで描画するか、DirectXを使うかというところもありますね。
2Dの横スクロールならGDIでも可能でしょうけど、後々のことを考えるとDirectX使えるように勉強したほうが、楽だしいろいろなことができるようになります。
DirectXはC++なので、やはりC++になります。

ちょっと戻ってしまいますが、Windowsアプリを作るのであれば、CやC++言語だけではだめで、WindowsAPIを使う必要があります。
まぁ一種のライブラリだと思えばよいですけど。

とりあえず、C/C++の入門書を一通りみて、どのような文法や制約などがあるか理解し(覚えなくてOK)、実際のサンプルソースなどをいじったり改良したりして実際の動作を見ていくのがよろしいかと。
コンソールでのC/C++がある程度わかってきたら、WindowsAPIやDirectXなどの入門書を見ていくといいのではないかとおもいます

とりあえずCだけではなく、C++まで一通り学習することをお勧めします。
PCゲームなのかどうか、Windows上のものなのかどうかわかりませんが、C/C++系の場合は、C++使っていることが多いので、C++知っているのと知らないのとでは、サンプルだとかライブラリとか理解できないかもしれないので。

仮にWindowsアプリだとして、API叩いてGDIで描画するか、DirectXを使うかというところもありますね。
2Dの横スクロールならGDIでも可能でしょうけど、後々のことを考えるとDirectX使えるように勉強したほうが、楽だ...続きを読む

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) {
// ここに処理を書く
}
という関数が必要なようです。

Q【C#】アクションゲームの地形衝突判定について

 はじめまして、C#でジャンプアクションゲームを製作していて、どうしても解決できないことが出来たので質問させてください。
 質問と言うのは、キャラクタとマップとの衝突判定についてです。
 テキストベースのマップデータを二次元配列に入れ、それを元にマップを作成し、キャラクタの現在位置の座標を、接触しているマップチップのサイズで割り、その値をマップデータが入っている二次元配列に要素数として入れると、現在接触しているマップデータの位置が割り出せると言うところまではわかり、やってみるとマップと衝突しているように見えるのですが、このマップをスクロールさせると、衝突判定に利用している二次元配列のマップデータがスクロールしない為か、キャラクタを移動させると、マップの段差部分でキャラクタが宙に浮くと言う問題が発生しています。
 なら、マップデータも一緒にスクロールさせれば言いと思い、ずっとネットや本などで調べたりして、試してはいるのですが、これと言った解決法が見つかりません。
どなたか、わかる方おりましたらよろしくお願いいたします。

Aベストアンサー

とりあえず、全部の答えを書いてみる事にしました。これで難しいとかんじたら、もう少し基礎の部分をきっちりやった方が良いでしょう。

(1)訂正。
MoveMyCharでリターン値を忘れてました。
移動したら1を、移動できなかったら0を返してください。
map[40][15]では小さすぎることに気づいたので、修正。map[40][30]が最低サイズ。スクロールするならmap[120][60]でやっと6画面サイズと言う事で、map[120][60]で。

MapHitで定数化を忘れていたので修正。
public int MapHit(int mx,int my) {
int px,py;
px=mx/MapChipSizeX;py=mx/MapChipSizeY;
return map[px][py];//0なら何も無い?
}
このMapHit関数で問題が残っています。それは、自キャラが画面外の高さまでジャンプした場合です。その場合は、どういう対処が必要でしょうか?

(2)許容範囲に収まるように自キャラにあわせて。
こういう感じで処理します。無い部分を埋めてみてください。

const int bx=160;//表示範囲BOXの相対X座標
const int by=120;//表示範囲BOXの相対Y座標
const int bsx=320;//表示範囲BOXのサイズX
const int bsy=240;//表示範囲BOXのサイズY
int cx=100;int cy=100;//キャラクタの初期位置
int mapx=cx-vx/2;//最初のマップ表示座標
int mapy=cy-vy/2;//最初のマップ表示座標

//マップ表示座標の移動関数。mapx,mapyは値を返すため参照渡し。
public void MoveMap( ref int mapx, ref int mapy, int cx, int cy ) {
//キャラが表示範囲BOXの上にはみ出していたら上にスクロールする。
if( (mapy+by) > cy ) {
//はみ出した分だけmapyを上にスクロールする。
mapy = mapy - (cy - (mapy+by));
//mapyがマイナスならスクロールを抑制。
if( mapy < 0 ) {
mapy = 0;
}
}

:
:同様に下、右、左を行う。
:
}

(3)はこういうことですか?
マップチップサイズは、とりあえず16x16との仮定だったで変更。
元のプログラムのままでは、map配列のコピー操作が必要になるのとマップ座標系と表示座標系が混乱しているみたいだったので全面的に修正しました。

const int vx=640;//フォームの横幅
const int vy=480;//フォームの縦幅。←普通は480でした失礼。
const int MapChipSizeX = 16;
const int MapChipSizeY = 16;
int cx=100;int cy=100;//キャラクタの初期位置
int mapx=cx-vx/2;//最初のマップ表示座標
int mapy=cy-vy/2;//最初のマップ表示座標
int map[120][60];//0:当りなし 1:当りあり
int MapParts[120][60];//マップ上に置かれているマップチップのパーツ番号

//地形描画関数
public void DrawMap( int mapx, int mapy ) {
//マップチップ単位の座標系を求める。
int x = mapx / MapChipSizeX;
int y = mapy / MapChipSizeY;
//表示座標系とマップチップ単位の補正値を求める。
int ofx= mapx % MapChipSizeX;
int ofy= mapy % MapChipSizeY;

//マップチップ単位のXループ(vx/MapChipSizeX)+1回。
for(int lx=0 ; lx<((vx/MapChipSizeX)+1) ; lx++ ) {
//マップチップ単位のYループ(vy/MapChipSizeY)+1回。
for(int ly=0 ; ly<((vy/MapChipSizeY)+1) ; ly++ ) {
//マップデータの1の部分のときはマップチップを描画する。
if( map[x+lx][y+ly] == 1 ) {
//マップチップ描画する関数。表示座標と表示するパーツの番号
DrawMapChip((x+lx)*MapChipSizeX-ofx,
(y+ly)*MapChipSizeY-ofy,
MapParts[x+lx][y+ly] );
}
}
}
}

問題1。
ループが縦横1回余分なのですが、これはどうしてでしょう?

問題2。
実は画面の隅で表示が化けてしまうバグのある処理になっています。
それは何故でしょうか?

質問
マップデータの1の部分のときはマップチップを描画するとありますが、0の時は背景色で良いのでしょうか?


(4)はマップ描画を開始する座標から 自キャラの位置を計算すると言うことですか。
そうです。マップ座標系から表示座標系への変換を行います。

const int vx=640;//フォームの横幅
const int vy=480;//フォームの縦幅。←普通は480でした失礼。
int cx=100;int cy=100;//キャラクタの初期位置
int mapx=cx-vx/2;//最初のマップ表示座標
int mapy=cy-vy/2;//最初のマップ表示座標

//自キャラ描画関数
public void DrawMyChar( int mapx, int mapy, int cx, int cy ) {
//表示する画面座標を求める。
int x = cx - mapx;
int y = cy - mapy;
//自キャラを描画する。
DrawMyChar( x, y );
}

とりあえず、全部の答えを書いてみる事にしました。これで難しいとかんじたら、もう少し基礎の部分をきっちりやった方が良いでしょう。

(1)訂正。
MoveMyCharでリターン値を忘れてました。
移動したら1を、移動できなかったら0を返してください。
map[40][15]では小さすぎることに気づいたので、修正。map[40][30]が最低サイズ。スクロールするならmap[120][60]でやっと6画面サイズと言う事で、map[120][60]で。

MapHitで定数化を忘れていたので修正。
public int MapHit(int mx,int my) {
int px,p...続きを読む

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

Qマップチップの当たり判定の出し方

キャラの座標をposx、posyとして宣言し、キー入力でその値をプラスやマイナスをして動かせるようにし、またマップをint map[16][16]として宣言し、for文でmap[x][y]として回して絵画しているのですが、キャラの移動変数と連動して当たり判定を作ろうとすると、「キャラの移動変数が配列になっていない」というエラーが出ます。
しかし、キャラ座標を配列にする訳にもいかないのでどうすればいいのか困っています。

Aベストアンサー

追記。

もし「キャラの座標」と「マップ配列の要素の番号」が1対1に対応していない場合は
switch (map[new_posx][new_posy]にある場所のタイプ) {
の部分を
switch (map[new_posxからmapの要素に対応させる変換式][new_posyからmapの要素に対応させる変換式]にある場所のタイプ) {
に変えて下さい。

例えば
new_xposが  ~102⇒mapを飛び出すのでNG
new_xposが103~113⇒map[0][???]
new_xposが114~124⇒map[1][???]
new_xposが125~135⇒map[2][???]
new_xposが136~146⇒map[3][???]
new_xposが147~157⇒map[4][???]
new_xposが158~168⇒map[5][???]
(以下略)
new_xposが268~278⇒map[15][???]
new_xposが279~  ⇒mapを飛び出すのでNG
のようにに対応しているなら「103を引いて、11で割る」と0~15になります。

なので、上記の例であれば
switch (map[((int)new_posx-103)/11][new_posyからmapの要素に対応させる変換式]にある場所のタイプ) {
と書けばOKです(もちろん、NG範囲を除外した上で)

y方向も、同じように変換式にして下さい。

引いたり(場合によっては足したり)、割ったりする数値は「質問者さんが書いているプログラムに合う数値」に合わせて、適切な値に変えて下さい。

追記。

もし「キャラの座標」と「マップ配列の要素の番号」が1対1に対応していない場合は
switch (map[new_posx][new_posy]にある場所のタイプ) {
の部分を
switch (map[new_posxからmapの要素に対応させる変換式][new_posyからmapの要素に対応させる変換式]にある場所のタイプ) {
に変えて下さい。

例えば
new_xposが  ~102⇒mapを飛び出すのでNG
new_xposが103~113⇒map[0][???]
new_xposが114~124⇒map[1][???]
new_xposが125~135⇒map[2][???]
new_xposが136~146⇒map[3][???]
new_xpos...続きを読む

Qfatal error LNK1120: 外部参照 1 が未解決です

またわからないことが・・・
教えて下さい。
以下をVC++2005でコンパイルすると、

MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
C:\Documents and Settings\tomato\My Documents\Visual Studio 2005\Projects\a\Debug\a.exe : fatal error LNK1120: 外部参照 1 が未解決です。

と警告がでて通りません。
何のことでしょうか。

#include<stdio.h>
#include<process.h>

struct meibo{
  char name[20];
  char tel[20];
  char address[20];
};

void message( void );
void input( FILE *fp, int cnt , struct meibo *a, int *end );

void main( void )
{
  struct meibo a[20];
  FILE *fp;
  int cnt, end;

  if( (fp=fopen( "meibo.dat", "w" ) ) == NULL ){
    printf( "Can not open the meibo.dat.\n" );
    exit( 1 );
  }

  message();

  fprintf( fp, "番号, 名前, TEL, 住所\n" );
  fflush( fp );

  cnt = 0;
  end = 0;
  while( end == 0 ){
    input( fp, cnt, &a[cnt], &end );
    cnt++;
    fflush( fp );
    if( cnt == 20 ){
      printf( "人数が一杯です.終了します.\n" );
      end = 1;
    }
  }
  fclose( fp );
}

void message( void )
{
  printf( "名前, TEL, 住所, endを入力してください.\n" );
  printf( "継続の時はend=0," );
  printf( "中止の時は,end=1と入力してください.\n" );
}

void input( FILE *fp, int cnt, struct meibo *a, int *end )
{
  printf( "名前-->" );
  scanf( "%s", a->name );
  printf( "TEL -->" );
  scanf( "%s", a->tel );
  printf( "住所-->" );
  scanf( "%s", a->address );
  printf( "Exit? Continue:0 Exit:1 -->" );
  scanf( "%d", end );
  printf( "\n" );
  fprintf( fp, "%2d, %s, %s, %s\n",
    cnt+1, a->name, a->tel, a->address );
}

またわからないことが・・・
教えて下さい。
以下をVC++2005でコンパイルすると、

MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
C:\Documents and Settings\tomato\My Documents\Visual Studio 2005\Projects\a\Debug\a.exe : fatal error LNK1120: 外部参照 1 が未解決です。

と警告がでて通りません。
何のことでしょうか。

#include<stdio.h>
#include<process.h>

struct meibo{
  char name[20];
...続きを読む

Aベストアンサー

http://www.a.math.ryukoku.ac.jp/~hig/course/compsci2_2005/man/faq.html
にある現象と同じではないでしょうか、一度お試しください。

QDXライブラリでの2Dの描画法[RPG作成]

VidualStudio.net C++ DXライブラリでRPGを初めて作成中なのですが、キャラ移動、マップ移動、マップスクロールなど実装したのはいいのですが、ゲームがとても重いです。

CPUの使用状況によってはスムーズな動きをするので、おそらくマップの描画に問題があるのだとおもいますが、マップは32x32ピクセルのものをゲームのスタート時に読み込み、2D配列に格納したintタイプのマップにあわせてDrawGraphイメージハンドルからひとつひとつ描いています。

これでは効率が悪すぎるのでしょうか?それとも初めからすべてマップ情報をメモリにロードするとメモリ不足で結局ディスクから読み込んでいるのでしょうか。(でもそれほどの量はテスト段階ですので扱っていないのですが。。。)
もっと効率のいいマップの描き方があれば教えていただきたいのでここに投稿させていただきました。

ちなみに、DXライブラリはここのものを使わせていただいています
http://homepage2.nifty.com/natupaji/DxLib/dxdload.html

VidualStudio.net C++ DXライブラリでRPGを初めて作成中なのですが、キャラ移動、マップ移動、マップスクロールなど実装したのはいいのですが、ゲームがとても重いです。

CPUの使用状況によってはスムーズな動きをするので、おそらくマップの描画に問題があるのだとおもいますが、マップは32x32ピクセルのものをゲームのスタート時に読み込み、2D配列に格納したintタイプのマップにあわせてDrawGraphイメージハンドルからひとつひとつ描いています。

これでは効率が悪すぎるのでしょ...続きを読む

Aベストアンサー

参考になりそうなQ&A:http://okwave.jp/qa4329951.html

要は「マップは予め一枚絵にしておけ」ってことですが。
#描画回数が増えれば増えるほどRAM→VRAMの転送にかかる時間が馬鹿にならなくなります

QC言語のシューティングゲームを作りたい

C言語でシューティングゲームを作りたいのですが、どう勉強すればいいのでしょうか?例えば、このサイトがいいとか、この本がいいなど。
よろしくお願いします。

Aベストアンサー

★アドバイス
・本と一緒に次のサイトを参考にして下さい。
 http://www.plustarnet.com/aspil/Programming/→『0からのゲームプログラミング』
 http://l.huu.cc/g/→『C言語~ゲームプログラミングの館~』
 http://homepage2.nifty.com/natupaji/DxLib/→『DXライブラリ置き場』
 http://minus273.s27.xrea.com/game/c.html→『C/C++でゲーム製作』

参考URL:http://www.plustarnet.com/aspil/Programming/

Q画像を表示するには

C言語をおぼえたてなんですが
文字はprintfで表示するやり方がわかるんですが
画像はどのように表示するのでしょうか?

Aベストアンサー

★アドバイス
・コンソール・アプリケーションでは画像を出せません。
 C言語でも命令(関数)が存在しません。
 画像を表示するには GUI アプリケーションで作る必要があります。
>C言語をおぼえたてなんですが
 ↑
 画像を出す(描画)するにはまだまだ時間が掛かりそうですね。
 でもミニゲームとしてなら次のリンクをどうぞ。
 (1)http://www.nhk.or.tv/kow/program/index.php→『テトリスの作り方』
 コンソール・アプリケーションでも文字を利用してテトリスが作れるようです。
・あと画像を使った場合は GUI アプリケーションになりますが、こちらは次のサイトを
 参考にして下さい。サンプル・ソースをダウンロードできます。
 (2)http://codezine.jp/a/article/aid/207.aspx→『落ち物ゲームの作り方 第1回:「TETRA」編』
 (3)http://codezine.jp/a/article/aid/228.aspx→『落ち物ゲームの作り方 第2回:「聖夜の落とし物」編』
 ダウンロードしてソースファイルを見て下さい。
 C言語ですが知らないような関数名がたくさん使われています。
 これは Win32 API の関数群です。C言語の標準関数とは別の種類です。
 Windows OS では内部はすべて Win32 API を使って処理されています。
 公開されている関数以外にも非公開関数もあります。まぁ、当然かな。
・今後のために GUI アプリケーションのサイトと本を紹介します。
 お決まりですが下のサイトを参考にして下さい。
 http://www.kumei.ne.jp/c_lang/→『猫でもわかるプログラミング』SDK編を読むこと。
 http://wisdom.sakura.ne.jp/system/winapi/→『Win32 API入門』本もお勧め。
 http://www.geocities.jp/ky_webid/win32c/index.html→『Win32API(C言語)編』お勉強サイトです。
・以上。

参考URL:http://www.amazon.co.jp/dp/4797333332/

★アドバイス
・コンソール・アプリケーションでは画像を出せません。
 C言語でも命令(関数)が存在しません。
 画像を表示するには GUI アプリケーションで作る必要があります。
>C言語をおぼえたてなんですが
 ↑
 画像を出す(描画)するにはまだまだ時間が掛かりそうですね。
 でもミニゲームとしてなら次のリンクをどうぞ。
 (1)http://www.nhk.or.tv/kow/program/index.php→『テトリスの作り方』
 コンソール・アプリケーションでも文字を利用してテトリスが作れるようです。
・あと画像を使...続きを読む

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かは特にこだわりがありません。

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


人気Q&Aランキング