PSP xvi

PSPプログラミングを教えるブログ(本気で頑張る人アクセス大歓迎サイト)

PSP-X.gif

記事の間違いを報告  新アップローダー
記事修正情報 PSPプログラミング資料 自作ゲーム PSP用エミュレータ リンク

公認リンク
公式PSP専科 公式PSVita専科 はじめるPSPSDK PSP EXEC GAME M@STER PSP 猫山のYouTubeチャンネル

TAG
全記事にタグをつけています  http://nekoyama2gillien.blog36.fc2.com/?tag=タグ
PSP PSPプログラミング DXライブラリPortable OSLib ショートプログラム ハローワールド
PSP自作ゲーム PSP自作ソフト エミュレータ ゲームアーカイブス PSP動画
動画 初音ミク ミクミクダンス MMDドラマ ゲーム 魔法少女まどか☆マギカ 侵略!イカ娘
アイドルマスター

このブログについて

このブログでは、非公式のPSPソフト、いわゆる自作ソフト( PSP Homebrew )を作る事を目的とします。

著作権などの こまかい利用規約については、こちらを開いてお読み下さい

このブログについて知りたい方、初めて来訪された方はこちらを開いてお読みください
お問い合わせは 猫山猫宗(nekomune@gmail.com)までどうぞ


当ブログはリンクフリーです。ブログ名は、アルファベットで「PSP xvi」と書いて『ピーエスピー・エクシビ』とお読みください。
相互リンクを希望されるブログ運営者様は、ココで申請して下さい。


このブログで全記事から探し物の方は、ここをクリックして下さい。
http://nekoyama2gillien.blog36.fc2.com/?all

スポンサーサイト 

--/--/--
--. --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[edit]

CM: --
TB: --

page top

PSPプログラミング 乱数について 

2010/11/08
Mon. 22:13

乱数をマスターしよう

乱数とは、予測できないでたらめな数値の事です

乱数が、ゲームで どういう事に使われているかというと、
・サイコロの目(1~6)
・カードゲームでのカード
・麻雀での牌
・じゃんけんゲームのCPUの「グー」「チョキ」「パー」の手
・テトリスでの次に出るブロック
・一般ゲームでの、敵の出現率
・RPGでの、敵との遭遇率
・格闘ゲームでの、CPUキャラの動作

…などなど、例を挙げると切りが無いので以下略


乱数(の予測数値)をテーブルで持つと、全部暗記されたりとかデータサイズ肥大とかで効率が悪いですね

予測できないでたらめな数値が欲しい時に、乱数の関数を呼び出して数値を得ます


PSPSDKでの乱数取得は、『 PSPデスクトップ ドドド v0.1』 お試し版 ソース解説 を読むといいかもです

DXライブラリPortable では、2種類のアルゴリズム(乱数生成器)から選択して乱数を得る事が出来ます

◆まず、ChangeRandMode()関数で、乱数生成器を選択します

甲 ChangeRandMode(DXP_RANDMODE_MT);
    メルセンヌ・ツイスター方式の乱数生成器。低速です

乙 ChangeRandMode(DXP_RANDMODE_HW);
    PSPのハードウェアの乱数生成器を使います。高速です

返り値 == 成功…0、失敗… -1

◆次に、乱数をGET
得られる値は、0~MAXで指定した値までの32ビット整数値(int)

   num = GetRand(MAX);


サンプル(サイコロの目を得たい場合)
●ヒント
  サイコロの目は 1~6 なので、0~5 の乱数を得れば良いです


// サイコロの目を取得する関数サンプル
int Saikoron(void)
{
  int saikoro;

  saikoro = GetRand(5) + 1;
  return(saikoro);
}


サンプル(格闘ゲームでの必殺技発動)
●ヒント
  出現率を100%で考えてみるといいかも。1%の誤差とかの指摘は禁止(笑)

#define NONE           0
#define HADOU_KEN         1
#define SYOURYUU_KEN       2
#define TATSUMAKI_SENPUU_KYAKU  3
#define MESSATU_HADOU_KEN     4

// 必殺技を出すか決める関数(通常パンチ、通常キックの出現率は除く)
int HissatsuWaza(void)
{
  int percent;
  int command;

  percent = GetRand(99);

  if(percent > 60) {
    if(percent < 80) {
      command = HADOU_KEN; // 波動拳率は20%
    }
    else
    if(percent < 95) {
      command = TATSUMAKI_SENPUU_KYAKU; // 竜巻旋風脚率は15%
    }
    else
    if(percent < 99) {
      command = SYOURYUU_KEN; // 昇龍拳率は4%
    }
    else       {
      command = MESSATU_HADOU_KEN; // 滅殺波動拳率は1%
    }
  }
  else           {
      command = NONE; // 必殺技が出ない率は60%
  }

  return(command);
}



さて、カードゲームとかすごろくとか乱数を使うと効率の良いゲームは色々あります。
絵の素材があれば簡単なゲームが作れそうですね。



関連記事
スポンサーサイト

[edit]

CM: 0
TB: 0

page top

この記事に対するコメント

page top

コメントの投稿

Secret

page top

トラックバック

トラックバックURL
→http://nekoyama2gillien.blog36.fc2.com/tb.php/378-c141e895
この記事にトラックバックする(FC2ブログユーザー)

page top


h o m e |


 

2017-09