カブロボ:マジカル☆なっちんの現状報告

Posted on

リザルトを.α版なので2月からは切り替えようかと思ってましたが,

■2006/01/18 水 終了時の所持金額
総資産 = 手持ち資金+所有株式時価総額 = 4,848,000円
手持ち資金(運転可能金額 + ロック金額) = 90,000円
運転可能金額 = 90,000円
ロック資金 = 0円
単純計算年率利益率 -136.0%

ライブドアショックの影響で,ここまで下がってしまいましたが,

その後順調に回復し,

■2006/01/20 金 終了時の所持金額
総資産 = 手持ち資金+所有株式時価総額 = 5,025,500円
手持ち資金(運転可能金額 + ロック金額) = 11,000円
運転可能金額 = 11,000円
ロック資金 = 0円
単純計算年率利益率 18.0%

なんと黒字化,そしてランキングも200位くらい上がっちゃいましたw

なっちん,逆境に強いみたいですね!wwww

しかし,途中経過のサイトを見れば分かるとおり,ほとんど買っているだけで所持金があと一万円くらいしかありませんw

あとはちょっとずつ売って,買って・・・という感じでしょうね.

360位ということでもうすぐ300位以内ですが,はたして入れるかな・・・?

ランダムで紹介メッセージを表示するようにしたよ

Posted on

このブログのタイトルの下には,自分が良いなぁ,と思った文章を乗せているんですが,これを今までは固定だったのを,ランダムにしてみました.

実現方法はPHP.JavaScriptの方が利用者サイドでやる分,サーバにはやさしいのですが,JavaScriptはソースが利用者に分かってしまう以上,用意されている文章が全部分かっちゃいます.これじゃつまらないですよね.

ソースは以下に掲載するので,ご自由にどうぞ.

もちろん,このページを紹介していただけるならトラックバック含めぜひお願いします.

<?php
/**
*ランダムメッセージを表示する
* 2006/01/21 written by ψ(プサイ)
* http://ledyba.org/
*/
//この配列にどんどん文章を追加する
$str = array("文章A","文章B",);
$rnd = rand() % count($str);
echo($str[$rnd]);
?>

弾幕は1000発程度で限界?

Posted on

シューティングゲーム作ってます.

1000発程度になると,我が3GHzのPen4でもかなり処理落ちが掛かってきてしまいます.

グラフィック関係も結構速かった気がするんですけどね・・・.

描写以外の処理をなくしてもたいして処理落ちが改善されないんですが,描写処理をなくすと60FPSが出ます.

これはどうするべきか.私が改善できるのは与えるパラメータだけですが,高速化できそうなのはfloatで計算して型変換してintにしていた座標を,固定小数点等を使ってintだけで計算するとかぐらいなんですよね・・・.

でもそんなことしても描写本体が重すぎて駄目でしょうし.

限界か・・・.

現在3本同時開発中

Posted on

シューティングゲーム:60%(システムは完成したが,弾幕と敵の動きがしょぼ過ぎる.ゲームじゃない.)

オセロ(第三世代w):40%(具体的な処理はほとんど0)

カブロココンテスト :60%(ある程度.でもまだまだ)

さーてやる気の無さが露呈しておりますw

一番最優先はカブロボコンテストですが・・・数週間以内に参加したいな.

配列の読み込み速度の比較

Posted on

ゲームプログラミングであれば,やはり速度は重要です.

STGをつくるにあたり,今回は配列の読み込み速度を測定してみました.

JavaでHello World コレクション(List)編

こちらでとりあえずArrayListとLinkedListの場合は速度が調べられているのでそれを使うとして,今回は普通の,配列の要素数の固定されている“なんとか[添え字]”で呼び出すやつを調べてみました.

一応,こちらでもLinkedListとArrayListを調べたほうが良いのでしょうが,上のサイトのサンプルソースがエラー9個も出てコンパイルできないので(爆*1,まあ割愛,ということで.

多分メモリ速度は大して変わらんでしょう.そんなに前の記事じゃないみたいだし.

以下,ソースです.

基本的にあのソース再利用してます.

import java.util.*;
public class List {
public static void main(String[] args) {
try {
long start, end;
int[] Matrix = new int[100000];
int tmp;
/** かきこみ **/
start = System.currentTimeMillis();
for (int i=1;i<100000;i++) {
Matrix[i] = i;
}
end = System.currentTimeMillis();
System.out.println("配列 かきこみ : " + (end - start));
/** よみこみ **/
// 配列
start = System.currentTimeMillis();
for (int i=1;i<100000;i++) {
tmp = Matrix[i];
}
end = System.currentTimeMillis();
System.out.println("配列 よみこみ : " + (end - start));
} catch (Exception e) {
e.printStackTrace();
}
}
}

で,実行してみます.

E:\***>java List
配列 かきこみ : 0
配列 読み込み : 0

はやっ!測定不能みたいです.

仕方ないので0の数を2つ*2ほど増やしてみます.

E:\***>java List
配列 かきこみ : 47
配列 読み込み : 47

うえwwww速すぎwwwww

と言うわけで,滅茶苦茶速いですね!

出来るだけ普通の配列を使いましょう(当然

*1:ArrayListをList型に入れようとしてもできない・・・らしい.これ,本当にこのときはコンパイルできたのか?

*2:3つ増やしたらヒープサイズが足りなくなりましたw

カブロボプログラム

Posted on

株ロボコンテストっていうのが世間にはあるそうで.

どういうコンテストかっていうと株を自動売買するプログラムを募集して,そのプログラムと実際の株価データを使って取引させて,その結果でコンテストしてるらしいです.

これはやらないとね(何

すべてフリーでできます.アドレスは以下.

http://www.kaburobo.jp/

この入門書買ってきたんですけど,自分が考えた戦略はもうすでに書いてあった_| ̄|○

どういうのかって言うと,まず基本的な考え方として株価には上下する法則があるというもの.

んで,株価の大まかな動きを算出して,その平均を使って株価が上がり始めるとき,下がり始める時の平均株価をだして,それを上回る,もしくは下回ったらウォッチを開始して,あがりきる,もしくは下がりきって反対の方向に転じたら売る・もしくは買う.

一応実装してみようと思います.

この本の筆者が「少林卓球製作委員会」という謎な名前で出ていたので自分もその系統で行きそうな悪寒w

またオセロプログラム書いてるんだけど

Posted on

こんな本かって来ました.

とりあえず今の状態を確認してみたところ,家にあった昔のVAIO-C1MRX(クルーソー0.7GHz)で動かしても,今のメインマシンのテトラ君2号(Pen4 3.0GHz)でも大して速度が変わらないんですよ.

CPUが違うとはいえ,クロックがこんなにも違うのに実行速度が同じってことは,別の部分に足を引っ張られて思考ルーチンが遅くなっているということ.

で,真っ先に思い浮かぶのがメモリアクセス.かなり無茶してます.盤面を元に戻すために配列のコピーをしたりとか普通です.

ぱっと本を読んだところ,メモリアクセスを最低にするためのテクなんかも載っているようです.

オリジナリティを無くさないためにほどほどにしつつ,参考にしたいと思います.

修飾キー設定用のJButton拡張クラス・キーリスナを設計しよう

Posted on

タイトルのとおりです.私が色々やった結果を乗っけてます.

ソースは汚いのであまり乗せたくない・・・.

キーリスナに関して

KeyEvent#getModifiers()やKeyEvent#getKeyCode()を使って判断していきます.

何のキーを押しているかどうかを判断するには,KeyTypedかKeyReleasedを使うしかありません.

また,KeyReleasedを使うと,ユーザが

  • 修飾キーを押す
  • 別の普通のキーを押す
  • 修飾キーを離す
  • 別の普通のキーを離す

という順番で入力した場合,修飾キーしか判断されません.

(離す順番が逆なら大丈夫.)

というわけでKeyPressedを使って判断します.

しかし,KeyPressedを使ってもユーザが修飾キーを押せば修飾キーのみを,普通のキーを押せば普通のキーしか判断されません.

というわけで修飾キーの時は無視します.

最終的にKeyPressedのソースはこんな感じ.

public void keyPressed(KeyEvent e){
if(e.getKeyCode() == e.VK_SHIFT ||
e.getKeyCode() == e.VK_CONTROL ||
e.getKeyCode() == e.VK_META ||
e.getKeyCode() == e.VK_ALT){}else{//修飾キーの場合は無反応
/*キーの検出*/
/*ボタンテキストにキーのテキストを設定*/
/*キーの設定*/
/*リスナ(自分)の削除*/
}
}

KeyEvent#getSource()を使うとソースが省略できるかも.