お知らせ

  • 超科学戦隊オレ一人

JavaでByRef

noimage

JavaでByRef

JavaでByRef ByRef・・・つまり参照渡し。 要は、あるメソッドに対し、パラメータとして渡しつつも、 その値を変更したいって場合の話よ(o´・∀・)y~ Javaにはこれがない。 結論からいうと、配列とかコレクション型を使うと、これに似たことができるって話よ。 下の方にサンプルを載せておきます。 .NETばっかりやってると、 あまりにも至れり尽くせりなので、「ほえ~」てな気分で、 なーも考えないでポコポコ作ってしまえる場面がいくつかあって、 そのひとつが、ByRefだと思ふ。 久しぶりにJava触って、ByRefしたいときがあったので、それをメモる。 そういえば、JavaにはByRefなんてねーわ!ちゅう話です。 そうです。ByRefなんて、そもそも、普通の、プリミティブな言語には、ねーのです。 .NET Framework様は、お便利なので、ByRefがあるのです。そーいうことです。 そもそも、そんなお便利なものがあること自体、どうか、と思い始めた。 つまり、ある関数に対し、渡したはずのパラメータの値を、関数自身が変えやがるってことです。 よう考えたら、これは、恐ろしいことです。 たとえば、こういうことです。 親が、アホの息子に、1000円札を渡して、お使いに行かせたら、 アホの息子は5万円のレアなトレカを買ってきたよ。むろん、支払いは親のカードでな! くらいの恐ろしさです。 わかるな(o´・∀・)y~ でも、まぁ、それが必要なときもあるわけよ。 JavaでByRefしたいときもあるわけよ。 配列の要素に対しては、ByRef的な動きが実現できる。 以下、サンポォ(sample) ---------------------------------------------------------- /** * 親の金を、親に黙って勝手に使ったりしない一般的なガキのプログラム */ publis static void main(String[] args) { // プリミティブなint型変数i     int i=0; // ガキに渡す前     System.out.println(“金=” + i); // NotByRefというガキに、iという小遣いを渡してみる     NotByRef(i); // ガキは小遣いを変更していない件     System.out.println(“金=” + i); } // パラメータiを勝手に変更しそうでしない一般的なガキ private static void NotByRef(int i) { // iを変更してみるものの…実はこれは呼び出し元では変更されない     i += 1; } ---------------------------------------------------------- ---------------------------------------------------------- /** * 親の金を勝手に変更しくさるクソガキのサンプルプログラム */ publis static void main(String[] args) { // 配列変数i     int[] i = new int[1]; // iの0番目を0円で初期化     i[0] = 0; // ガキに渡す前     System.out.println(“金=” + i[0]); // メソッドByRefというクソガキに、iという小遣いを渡してみる     ByRef(i); // ガキによって小遣いが変更されている件     System.out.println(“金=” + i[0]); } // パラメータiを勝手に変更するクソガキ private static void ByRef(int[] i) { // 親にもろた金を自在に操る     i[0] += 1; } ---------------------------------------------------------- というわけで、配列とかを渡してやると、ガキはこの内容を変更しまくり(o´・∀・)y~ へー。 まったくどうでもええわ。 オレがやりたいのは、こんな作業ではないので、 こんなことを改めて知ったところで、まったくモチベーションはあがらんよ。 そうだ、会社を興そう。 以上。

  • 超科学戦隊オレ一人

XNAでゲーム作ってみようと思う(Visual C# 2008)~第1回

noimage

XNAでゲーム作ってみようと思う(Visual C# 2008)~第1回

まいどヾ(´・∀・`) Kです。 社では、現在、開発環境として、Visual Stdio 2008を使うことが多いです。 しかしながら、わたくし個人的には、2010の方が好きなんよね。   2010の何が好きかというと、Visual Studio自体の「色」です。それだけです。 (2008は緑と黄色■■、2010は紫と黒■■)。 緑とかダサい。   ・・・なぞと、小っちゃなこだわりに執着していては、実務への士気に関わるので、 少しでも社内の流行に沿うべく、2008を好きになれる材料を探したところ、・・・ありました。   それは、 XNA Game Studio(以下XNA)という、Microsoft製のフレームワークです。 Visual Studio上で、簡単にゲームが作れて、しかもそれはXbox360上でも動かせるというふれこみだそうです。 もちろん無料でインストール、開発が可能です。 記憶に誤りがなければ、作ったゲームを売るのもOKだったです。   ちなみに、XNAでは、開発言語は、Visual C#となります。 実務ではVB.NETでの開発作業が多いので、C#も、別段困ることなくイケるやろうと予測しました。   ということで、このXNAとVisual Studio 2008を使って、ちょっとしたゲーム開発を始めました。 このXNAにもバージョンがあって、現在の最新は4.0だったと思うけど、 2008では3.1が最新っぽいので、迷わずに3.1をインストール。   で、ぽちぽち作ってみた結果がこれだよ。(o´・∀・)y~ (※実務の開発環境ではなく、私用のバーチャル環境にExpress Editionを入れて、そこで動かしてます。)   社のマスコットキャラ、「キューブ君」を操作する2Dゲームです。 まだ3日目ですが、 矢印キーで移動する(ちゃんと歩行アニメします)、画面の端で止まる、しばらく放置するとタバコを吸い始める、 といったアクションを実装しました。あと、ログ出力とかちょこちょことした裏方の基本部分も。 (※背景画像は仮のもので、こちらからお借りしてます。次回投稿までには差し替える予定)   で、ここまでの感想ですが、かなり、作りやすいです。 ちなみに、わたくしが過去に手を出したゲーム開発環境といえば・・・ メモ調+JavaScript ⇒ 1本完成したけど、もう読めない(スパゲティソース) HSP ⇒ 1本完成したけど、もうやりたくない(ソース管理がしんどい) DXライブラリ+ Visual C++ ⇒ 1本も作れず挫折(作業量の多さに絶望して逃避)   以上のものより、だい~ぶ、作りやすい。楽ちん。 というのは、いわゆるFPS制御とかダブルバッファリングがどうたらとかDirectXがうんたらとか・・、 そういう、めんどくさいモロモロをあんまり意識しなくても、入っていける。入り口が広いです。 ゲーム開発の中身だけに集中できるといえます。   あと、プログラミングについては、それなりに.NET開発に慣れていればOK。 XNAならではの癖については、 インターネット上でたくさんの偉い日曜プログラマさんが、参考になる記事をアップしてくれてるので、 そんなに困らないと思われる。   わたくしのおすすめは、この動画(ニコ動)。 (この動画を見れば、プログラミング初心者でも作れるでしょう。)   ちょっと長くなってしまったので、今日はここまで。 というわけで、次回に続く。