PSPのプログラミング:パートII。 トータルコントロール

前回のチュートリアルでは、「ワールドワード」を理解しました。今度は、次の重要なことである、情報の入力です。 画面に何かを表示し、ユーザーがクリックしたものを見つけることができるので、便利なプログラムを作成することはすでに可能です。 実際、このレッスンの後、別の何かを開始することは既に可能ですが、少なくともスプライトを待つことをお勧めします。



やった! PSPプログラミングブログを購読してください



まあ、それでも、これは別のマニフェストです。トピックで間違いを見つけた場合、「歓声」を叫ぶか、それを誇りに思うことができます。 あなたができる最善のことは、それについて個人的なメールで書くことです(これは「友達としてユーザーを追加する」をクリックし、「自己紹介」フィールドにエラーについて書くことで簡単にできます。 [追加を許可]ボタンをクリックしません。 コメントで見つかったエラーで自分自身を確認する必要はありません。これの利点はまったくないので、本当に面白いものを探してそのようなコメントをスクロールするのは面倒です。



最初のパートで説明したテンプレートに従ってプロジェクトを作成しましょう。 ファイルにはmain()関数-プログラムのメイン関数、そしてメインループ(while(1){...})があります。 ところで、while(1)について:pspのプログラミングでは 、プログラム内で無限ループを行うのは悪い形とは見なされません。 出力は、[ホーム]ボタンによって実行されますが、その場合のみです。



標準のメッセージ処理サイクル、受信とダイジェストを作成しましょう。 最初に行うことは、キーボードの状態が保存される変数を決定することです。

SceCtrlDataパッド。 //ボタンの状態に関する情報が保存される変数(押された/押されていない)。



SceCtrlData構造には、プログラムの起動時のフレーム数(明らかにする必要がある!)、ボタン-ボタンの状態のビットマスク(選択、開始、十字、三角形、正方形、シフター、矢印、ホールド、ホーム状態が考慮されます)が格納されます。残りはカーネルモードでのみ考慮されます。詳細については、ファイルdevkitPSP \ psp \ sdk \ include \ pspctrl.h)およびスティックLxおよびLyの座標を参照してください。 pspctrl.hでのみ定義されているため、ファイルを先頭に追加する必要があります

#include [pspctrl.h]


([]の代わりに山括弧を入れます。何らかの理由で、Habrは<and>を山括弧に変換するため、ブラウザが混乱します)



だから、しばらくの間すべてを消して、

sceCtrlReadBufferPositive(&pad、1); //キーボードuhバッファーの内容を読み取ります


この関数は、パッド構造をボタンとスティックの現在の状態で埋めます。 ちなみに、スティックの座標を取得するには、次の2行をプッシュする必要がありました。

sceCtrlSetSamplingCycle(0);

sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG); //スティックの位置に関する情報を受信するように設定します


そうでない場合、ジョイスティックは位置(128:128)でフリーズします(これは真ん中です。座標自体は0から255まで変化します)。

そのため、情報を読み、表示する必要があります。 ここに私が得たものがあります:

pspDebugScreenPrintf( "TimeStamp%i | Pressed:"、pad.TimeStamp); //タイムスタンプを出力します

if(pad.Buttons == 0)//何も押されていない

{

pspDebugScreenPrintf( "NONE");

} else {

if(pad.Buttons&PSP_CTRL_TRIANGLE)pspDebugScreenPrintf(“ TRIANGLE„);

if(pad.Buttons&PSP_CTRL_CIRCLE)pspDebugScreenPrintf(“ CIRCLE„);

if(pad.Buttons&PSP_CTRL_CROSS)pspDebugScreenPrintf(“ CROSS„);

if(pad.Buttons&PSP_CTRL_SQUARE)pspDebugScreenPrintf(“ SQUARE„);

//どのボタンが押されていますか?

}

pspDebugScreenPrintf(“(%i)| Stick:%i:%i \ n”、pad.Buttons、pad.Lx、pad.Ly);

//スティックの座標を出力します



ご覧のとおり、私は写真付きのボタンの状態(まあ、三角形、円形、正方形、十字形)のみを考慮に入れています。devkitPSP\ psp \ sdk \ include \ pspctrl.hの場合、残りのサポートを簡単に追加できます。 ループ内のコードは次のようなものを出力します。

タイムスタンプ68832112 | なし(0)を押した| スティック:126:150

タイムスタンプ72317982 | 押された三角サークル(12288)| スティック:119:167





したがって、 受信したすべてのコード (パスワードはHabrahabr)をコンパイルし、 EBOOTに変換して、コンソールにドロップしてお楽しみください。 宿題として、ウォーカー、または他の信じられないほど便利なことをしようとすることができます。 3番目の部分はテキストモードの他のすべての機能に専念してから、グラフィックスに移ると思います。 頑張って




All Articles