2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    
レス数が1000を超えているけど、まだ書けるかも知れないよ。

【新作】忍者くん、じゃじゃ丸くん【ファミコン版】

1 :名前は開発中のものです。:2013/08/22(木) NY:AN:NY.AN ID:m1HbME1x.net
数ヶ月前に、忍者じゃじゃ丸の新作が出たやん?
あれがガッカリ作品だったんで、
もう自分でファミコン版のノリを継承した新作を作ろうと思う。
オッサンたちのためにね。
ただし、じゃじゃ丸じゃ無しに
「忍者くん」で。

241 :名前は開発中のものです。:2013/10/01(火) 13:14:33.40 ID:ISE4IUb3.net
>>240
>アクションゲームプログラミングの定石

、、定石って、単純に書いたらこんな感じじゃないの?
int 向き;
if(右キー押下)
{ 向き=右}
if(左キー押下)
{向き=左}

switch(向き){
case 右
posX += 移動量
break
case 左
posX -= 移動量
break
}

こんな感じでやると、
ジャンプさせたときに忍者くん仕様は困ったんだけど。
ジャンプした後、向きの中身を変えられないようにしなきゃならないよね?
右にジャンプしてるのに、左が入ったら左の力が加わってしまう。
でも、忍者くん仕様では右のジャンプ中に左向けるようにしなきゃならないじゃん?
そうすると>>239のいうように、ジャンプ中の向き変更は影響無にしないと、、、あ
移動量入れるところに、ジャンプ中では無い、を加えるのか。。そんな単純な問題なのかな?

242 :名前は開発中のものです。:2013/10/01(火) 13:18:41.49 ID:8DmFMWbS.net
忍者くんのステートを作ってステート毎にキー入力の挙動を定義していくだけのこと

243 :名前は開発中のものです。:2013/10/01(火) 14:17:33.06 ID:Tz6DjnSJ.net
ステータス制御はゲーム作りの基本だね。
どんな状態でも通る共通部分と、ステータスによって変わる部分をわけて
ステータスごとに分かれる部分は「立ち」「歩き」「ジャンプ」「攻撃中」etcでセクションを分けないと。
なるべく共通部分を多くしたい気持ちはわかるが、それでごっちゃごちゃになるより
セクション分けされてる方が調整しやすくバグも見つけやすいし、それぞれごとにオミットできたり新セクションを追加できたりパーツ化されて見やすくもなる。敵キャラにも転用しやすい。
プレイヤーキャラ用と敵キャラ用をメソッド共用できるまで汎用性もたさなくて良いとは思うけどね。

244 :名前は開発中のものです。:2013/10/01(火) 20:16:54.89 ID:1YZFUVLu.net
>>241
そのswitchの使い方はありえないな。
移動量が定数扱いだし、「移動量の符号」と「向き」を混同してる時点で
設計を間違えているか、そもそもろくに設計してなさそうだ。

245 :名前は開発中のものです。:2013/10/01(火) 20:38:22.55 ID:8DmFMWbS.net
センスねえな

246 :名前は開発中のものです。:2013/10/02(水) 00:21:31.99 ID:K4+VDmr6.net
他にもこうゆう企画やれよ。
フォーメーションZV とかでいいから。
完成したら遊んでやる

247 :名前は開発中のものです。:2013/10/02(水) 11:14:58.15 ID:uub+qWbG.net
どうやら俺はまだまだひよっこだったようだ


>>243
>ステータスごとに分かれる部分は「立ち」「歩き」「ジャンプ」「攻撃中」etcでセクションを分けないと

そうか、、、、すまないがどんな感じなのか学びたい。
俺が>>241で書いたみたいな単純なものでいいので、
あなたの組み方を教えてもらえないだろうか。

>>244
認めるよ、俺のセンスのなさを。というか、成長したいので
見本として「「移動量の符号」と「向き」を混同していない」っていう組み方っていうのを
疑似言語みたいなんでいいので簡単に教えてくれないだろうか

248 :名前は開発中のものです。:2013/10/02(水) 11:23:01.91 ID:uub+qWbG.net
たとえば、よくある
向きの概念が無いような

if( 右キー ) PlayerX += 3 ;
if( 左キー ) PlayerX -= 3 ;

なんてそれこそダメじゃないの?

右を押したら、「向き」を右
左を押したら、「向き」を左、
「向き」が右ならX座標をプラス
「向き」が左ならX座標をマイナスするって考えるのがふつうだと思ったんだけど。

249 :名前は開発中のものです。:2013/10/02(水) 14:37:56.01 ID:f0T6BsoF.net
void NINJAKUN::action()
{
  switch(m_state)
  {
    case STOP: stop(); break;
    case MOVE: move(); break;
    case JUMP: jump(); break;
  }
}

void NINJAKUN::stop()
{
  if(isKeyDown(LEFT)){ m_direction = LEFT; m_state = MOVE; }
  else if(isKeyDown(RIGHT)){ m_direction = RIGHT; m_state = MOVE; }
  else if(isKeyDown(JUMP)){ m_state = JUMP; }
}

void NINJAKUN::move()
{
  if(isKeyDown(LEFT)){ m_position.x -= IDOURYOU; }
  else if(isKeyDown(RIGHT)){ m_position.x += IDOURYOU; }
  else { m_state = STOP; }
}

void NINJAKUN::jump()
{
  if(isKeyDown(LEFT)){ m_position.x -= IDOURYOU; }
  else if(isKeyDown(RIGHT)){ m_position.x += IDOURYOU; }
}

みたいな

250 :名前は開発中のものです。:2013/10/02(水) 14:43:59.16 ID:f0T6BsoF.net
void NINJAKUN::stop()
{
  if(isKeyDown(LEFT)){ m_direction = LEFT; m_state = MOVE; }
  else if(isKeyDown(RIGHT)){ m_direction = RIGHT; m_state = MOVE; }
  else if(isKeyDown(JUMP)){ m_jump_direction = m_direction; m_state = JUMP; }
}

void NINJAKUN::jump()
{
  if(isKeyDown(LEFT)){ m_direction = LEFT; }
  else if(isKeyDown(RIGHT)){ m_direction = RIGHT; }

  if(m_jump_direction == LEFT) { m_position.x -= IDOURYOU; }
  else { m_position.y += IDOURYOU; }
}



292 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★