忍者ブログ
多分岐

何だか今日は 久々にプログラムソースを書いてみたくなった・・・って言っても 毎日嫌と言うほど書いているのだが・・・

昨日のブログに書いた 関数ポインタの簡単なサンプルを書いてみた

コンソールアプリケーションで動きが確認できると思います。

コメントが一つも無い ダメなプログラムの例でもある。

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


void Func00();
void Func01();
void Func02();

typedef void(*FUNC)();

FUNC func[]={
 &Func00,
 &Func01,
 &Func02,
};


void Hoge00(int no);
void Hoge01(int no);
void Hoge02(int no);

typedef void(*HOGE)(int no);

HOGE hoge[]={
 &Hoge00,
 &Hoge01,
 &Hoge02,
};

void main(){

 srand((unsigned int)time(NULL));

 printf("こんにちは\n");

 int i;
 for(i=0;i<10;i++){
  func[rand()%3]();
 }

 printf("少し休憩\n");

 for(i=0;i<10;i++){
  hoge[rand()%3](i);
 }
}

void Func00(){
 printf("Func00\n");
}

void Func01(){
 printf("Func01\n");
}

void Func02(){
 printf("Func02\n");
}


void Hoge00(int no){
 printf("Hoge00 no=%d\n",no);
}

void Hoge01(int no){
 printf("Func01 no=%d\n",no);
}

void Hoge02(int no){
 printf("Func02 no=%d\n",no);
}

拍手[0回]

PR
【2012/06/18 21:31 】 | プログラム | 有り難いご意見(0)
依存
プログラムを打って なるべく気を付ける事は・・・ ソースファイル同士の依存関係をなるべく少なくするように

作りたいのだが・・・

敵の行動を書いたソースファイルが 『アイテムのソースファイルが無いと動かない』

そんな状態は あまりよろしくないので・・・ 他にも色々と言える。

一番良いのは それぞれのファイルが独立して動き 主となるゲームのみが 全ての情報を集めている

そんな感じに作れればベストなのだが・・・なかなかそう上手くいかないものである。

色々と悩んだ結果 依存関係をほったらかしにしたりしてしまったままにしていて・・・おかしなことになっていく・・・

最終的に行きついた結論は 「色々考えてゲームができないよりは 出来るように無理やりにでもやっていった方が良い」

という自論なのだが 社会に出て 会社でゲームを作る以上は それではいけなくなってきている。

プログラムの作業は 『9割が考える事 残りの1割がキーボードを打つ事』 これでいいのだと

昔先生が言っていた。

拍手[0回]

【2012/04/08 21:15 】 | プログラム | 有り難いご意見(0)
安心
今日は 少しでもプログラムに触れたので 何となく 心が安心している。

一つでも命令を 一つでもコードを 書く

そしたら次は 一つでも多く 命令を 省く

プログラムは 命令が多くなればなるほど 処理速度が遅くなってしまうので

無駄な命令を省き 必要最低限の命令のみを書く そのための

見直しの時間が始まる。

どこまで最適化するかは 人それぞれなのだが 私はとことん最適化したい人間です。

うーん プログラムを打たないと胸がザワザワしてきて 不安になるけど

いざプログラムを打つと 最適化の事ばかり考えて やっぱり胸がザワザワしてくるな

一体どうすれば 本当に安心できるのだろうか?

拍手[0回]

【2012/02/25 21:59 】 | プログラム | 有り難いご意見(0)
光源
ライティングの処理を作っている。

簡単に言うと 光 と 影 とかだ・・・影はまた微妙に話が違うのだが・・・

3Dの空間に キャラクターをポツンと置く それだけでも

結構すごい事である。 それを自由に動かす ジャンプもさせる それだけでも立派なゲームが作れそうだ。

せっかくならば 光 の計算などをして キャラクターを照らしたいものだ。

影を置くと キャラクターのジャンプ感覚が 少しつかめる・・・キャラがどこを飛んでいるのかが分かるようになるから

ちょっとだけ親切なゲームになる、 丸影でOK

昔の無双ゲームは ほぼ丸影だったが 最近は ちゃんとキャラクターの形をした影もイキイキと動いている。

影の処理などは 結構重たいので つくづく無双系のゲームは 謎な処理が多い・・・


ベクターの私のゲームの最新作も 差し替えが完了したようです。

よろしければ 遊んでみてください。

拍手[0回]

【2012/02/14 22:35 】 | プログラム | 有り難いご意見(0) | トラックバック()
固定
浮動小数 0.5 とかを 固定小数に直して計算する

パソコンは 小数の計算が苦手であり遅い まぁ、最近のパソコンは完全にそうとも言い切れないのだが。

私は 固定小数を使うことに多少こだわっている。

きっと 固定小数を使った方が 早いプログラムができるから。

基本的に 平行移動などは あまり大差ないのだが

回転とかで sin とか cos とかを使う場合に それをサインテーブルにして なおかつ 固定小数 で表現

できれば プログラムの速度は かなりアップする。

ちょっとだけ 見栄えが悪くなったり、 角度がちょっと固定されてしまったりしてしまうのが

難点なのだが。

とりあえず

PAI=3.14159265358979.0f 円周率
PI=256 2の乗数がいいよ

私は こんなものを愛用している。

拍手[0回]

【2012/02/11 22:44 】 | プログラム | 有り難いご意見(0) | トラックバック()
判定
この記事内の計算に誤りがあることをご指摘いただきました。

正しい計算式などは 有り難いご意見に記載していただきました。

よろしければそちらをご覧ください。

ご迷惑をかけて申し訳ございません。


以下のトンチキな計算なども、黒歴史として残しておきます・・・

笑いながら見てやってください・・・


プログラムでゲームを作成する上で、時にヒマラヤ山脈級の巨大なヤマとなり、

その人をプログラムの道から諦めさせてしまうものがある。

それは、物体と物体の『当たり判定』だ。

大概のゲームなら、四角と四角の当たり判定のプログラムが書ければ大丈夫。

その一つ上のレベルは丸と丸の当たり判定だと勝手に思い込んでいる。

ちょいと説明してみる・・・分かりにくいかもしれないが・・・


プレイヤーの座標 player_x=100; player_y=100;
プレイヤーの当たり判定円サイズ player_size=50;

弾の座標 bullet_x=30; bullet_y=80;
弾の当たり判定円サイズ bullet_size=30;

プレイヤーと弾の距離 (player_x-bullet_x)+(player_y-bullet_y)で、これの√(ルート)
(100-30)+(100-80)=90 これのルートなので √90

プレイヤーと弾の当たり判定円サイズの合計 player_size+bullet_size
50+30=80

で、 80 > √90 ならば

プレイヤーは弾に当たっている・・・これは当たってますね。

文字だけの説明は難しい。

拍手[0回]

【2011/09/29 20:35 】 | プログラム | 有り難いご意見(1) | トラックバック()
再開
リライト ~シーズン004~ のプログラミング作業を再開 というか開始しました。

まずはじめは WimMain関数を作るところから始めます。

私のプログラムにおけるポリシー的なもので 全てのところにコメントを書くことにしています。

たとえ

int i;

とかだけであってもコメントを打ちます そしてたまに洒落たことや変なことを書きます。

そうすることで ソースを見直す時に、

楽しく見直すことができるからです。


ゲーム業界の人にはあまりウケが良くないですが・・・

拍手[0回]

【2011/08/28 20:52 】 | プログラム | 有り難いご意見(0) | トラックバック()
七夕

今日は七夕
のんびりと夜空を見上げて
織姫と彦星の1年に1回の再開を2828しながら眺めましょう・・・

といきたいところだが・・・

残念だが
一日中自作ゲームのプログラムに没頭してしまっていた。

短冊に願い事を書いている暇があったら
プログラムコードを打ち込んでいたほうがよい。

短冊に願いを描いてつるしておいて叶うなら
もうとっくにかなっていてもおかしくない・・・


夢も希望もないようなブログで申し訳ない><

一人でプログラムもグラフィックもサウンドも作っていると
1分1秒が惜しくて
のんびりしていられないぜよ

拍手[0回]

【2011/07/07 23:22 】 | プログラム | 有り難いご意見(0) | トラックバック()
皆嫌
たまにはプログラマーっぽいことでも書いてみたいと思います。

ちなみに今回のタイトルの二文字熟語は完全な造語なので意味はないですよ・・・

私がプログラムで好きなこと、

それは高速化である。

インラインアセンブラが好き。

可読性は落ちてしまうけど、

一人で作品を作っている以上、他の人にプログラムソースを見せることはないので

見にくかろうがお構いなしだ。

・・・だから就職できなかったのかもしれない orz


本日は二回投稿

ゲームのダウンロードなどが分からない方への返事は
本日もう片方の記事に書いてあります。
おそらく下の記事です。

拍手[0回]

【2011/07/02 22:30 】 | プログラム | 有り難いご意見(1) | トラックバック()
<<前ページ | ホーム |