全体表示

[ リスト | 詳細 ]

記事検索
検索

【プチコン】04.26/2013決戦は金曜日(体験版)

大喜利第二回に向けて、締切前日の朝に突然降りてきたキーワード「大型連休をぶっ壊せ」から紆余曲折を得て今回の形に。

とはいえ、体験版としては前回応募した一画面ナンバータッチが豪華になって遊べるだけなんですが。

明日からはカンザキ君がプチコンハウスに転職して最初の5月の大型連休
おや、連休に期待を膨らませるカンザキ君を怪しい視線が…

噂に聞くブラック企業で、カンザキ君は定時前に降り注ぐ無理難題を払いのけ、2013年のGW大型10連休をゲットできるのか!?

なお、今回は体験版のため、最終版とは異なる調整で最初の相手インテリからの難題のみ、楽しむことができます。


プログラムとキャラデータのQRコードです。このほか、スマイルブーム社より提供される、

CHR:SBCH_X01
CHR:SBCH_X02
CHR:SBCL_X01

が必要です。

PRG:PMAN_O2T
CHR:PMAN_O2
イメージ 1イメージ 2


Windows8 で、よく使うフォルダをライブラリに登録すると便利。

「エクスプローラ」- 「ライブラリ」-「ドキュメント」「ピクチャ」などを選択
エクスプローラーのウィンドウタイトル部に「管理」というタブが出てくるのでクリック
「ライブラリの管理」

で「追加」で任意のフォルダを追加できる


だが、NAS上にある共有フォルダを追加しようとした場合、

「インデックスが作成されていないため追加できません」

といったメッセージが出て追加できない


少々面倒だが、下記の手順で追加できるようになる
ライブラリ: フォルダーを追加または削除する方法 - Microsoft Windows ヘルプ

「インデックス化されていないネットワークフォルダーをライブラリに追加するには」
を参照

ATANは速くなるのか?

敵を自機の方向を向くようにするには?

点 O(OX, OY) から点 P(X, Y) がどの角度にあるか?を求めるのには、どうするか?

アークタンジェントを求める関数 ATAN() を使って
rad = ATAN(Y - OY, X - OX)
というように角度 rad を求めることができるが、なんとなく遅いような気がする、ということでテーブル化を試みた。

ゲームで ATAN() を使用する場合、精度が求められることはないので、次のようにすることでテーブル化が可能。

DIM R(65,65)
’ 初期化
FOR Y=0 TO 64
FOR X=0 TO 64
’ 原点を(32,32)としてテーブル化
R(Y,X)=ATAN(Y−32,X−32)
NEXT
NEXT

INPUT X、Y
?”ATAN: ”;ATAN(Y,X)
GOSUB@ATAN2
?”ATAN2:”;R

END

@ATAN2
RR=1
X1=ABS(X):Y1=ABS(Y)
IF X1<Y1 THEN SWAP X1,Y1
IF X1>0 THEN RR=32/X1
X0=X*RR+32:Y0=Y*RR+32
R=R(Y0,X0)
RETURN

引数に2つの RND(256) で与え、10万回実行した場合の実行時間を計測
ATAN() の場合:484フレーム
ATAN2 の場合:1690フレーム

配列呼び出し:525フレーム
…遅い。

入力値が範囲内として、そのまま単純に2次元配列から呼び出した場合でも遅いので単純なテーブル化は意味が無いっと…orz


※ちなみに求めた角度はラジアンなので、これを360度表記の角度に変換したり、またある程度の丸目(16方向に制限をかけるとか)を行ったりする場合には事前に計算しておくことができるので役に立つかもしれない。
Processing は素晴しい環境なのだが、エディタがどうも貧弱でいけない(個人的な主観による感想です)。

調べればEclipseと連動させる(Karappo Interaction Lab. ≫ WindowsでのProcessing用エディタ1 Eclipse編)といった方法もあるようだけど、扱い方が Processing ぽくなくなるのと、Eclipse のエディタが使いたいわけでもない。

そもそも古い人ゆえ身体が Emacs バインディングを忘れてくれないためにここぞ、というところで Ctrl+A や Ctrl+P、Ctrl+W をタイプしてしまって自分の身体を呪った事も数知れず。

個人的には専用のIDEという考え方自体がなじめておらず、好きなエディタで編集→ツールからビルド・実行といった薄い連携のほうが好み。


Mac では外部エディタと連携できるらしい
TextMateをProcessingのエディタ代わりにする | MOL

記事をよく見たら、単にAppleScript(違 で Processing の IDE にキーイベント送っているだけだった。

Processig 側の設定にて
- 「File」→「Preferences」→「Use external editor」にチェックを入れる
としてファイルを開けば、あとはその状態で .pde ファイル(ソースファイル)を外部エディタで更新後に「Run (Ctrl+R)」を実行してやれば勝手にファイルの読み直し、実行といったことができるようなので WSH (Windows Script Host) で実装したのがこちら

/*
 * 必要なら Processing を起動して RUN させる
 */
var p5exe = "C:/App/processing-1.5.1/processing.exe"; // Exeのパス
var p5title = "Processing 1.5.1"; // ウィンドウタイトルのバージョン表記

// これを引数で渡す
var argv = WScript.Arguments;
if (argv.Count() == 0) {
    WScript.Echo("ファイルが指定されていません");
    WScript.Quit();
}
var target = argv(0);
var basename = target;
if ((n = basename.lastIndexOf("/")) != -1) {
    basename = basename.substr(n + 1);
}
if ((n = basename.lastIndexOf("\\")) != -1) {
    basename = basename.substr(n + 1);
}
if ((n = basename.lastIndexOf(".")) != -1) {
    basename = basename.substr(0, n);
}

var wtitle = basename + " | " + p5title; // IDEウィンドウタイトル
var cmd = "\"" + p5exe + "\"" + " " + "\"" + target + "\"";

var sh = WScript.CreateObject("WScript.Shell");

if (sh.AppActivate(wtitle) == 0) { // 見つからない
    var proc = sh.Exec(cmd);
    wait_count = 0;
    while (sh.AppActivate(proc.ProcessID) == 0) { // 起動待ち
        WScript.Sleep(1000);
        wait_count++;
        if (wait_count > 10) {        // 10秒待った
            // 実行ファイルのパスが違う場合は Runtime Error
            WScript.Echo("Processing の起動に失敗したかも - 終了します");
            WScript.Quit();
        }
    }
    // スプラッシュウィンドウが出てから、対象の Sketch のウィンドウが開くのを待つ
    wait_count = 0;
    while (sh.AppActivate(wtitle) == 0) { // 見つからない
        WScript.Sleep(100);
        wait_count++;
        if (wait_count > 50) {        // 3秒待っても上がらない
            WScript.Echo(target + "\r\nのオープンに失敗したかも - 終了します" + "\r\n" + wtitle);
            // Processing(java) は起動後別プロセスで立ち上がるので proc.ProcessIDは不明…
            if (proc.Status == 0) {
                proc.Terminate();
            }
            WScript.Quit();
        }
    }
}

sh.SendKeys("^r");

.pde ファイルを編集後、引数にファイルパスを渡してスクリプトを起動してやれば実行される。ただし、このままだと Processing のウィンドウが最小化されているとうまくいかないので注意。

emacs からこれを実行するには .emacs に下記のようなコードを追加(F5で実行)
; Processing IDE との連携
(defun my-run-processing ()
  (interactive)
  (if (buffer-modified-p) (save-buffer))
  (when (eq system-type 'windows-nt)
    (let ((process-connection-type nil))
      (call-process-shell-command "cygstart" nil 0 nil
                                  (message (concat "~/bin/runP5.js \"" buffer-file-name "\""))
                                  (shell-quote-argument (concat "~/bin/runP5.js \"" buffer-file-name "\""))))))

(global-set-key [f5] 'my-run-processing)
※ただし、cygwin連携設定済み、かつ$HOME/bin/runP5.js としてスクリプトが設置してある必要あり

XP/DHCPが取得できない

自宅で使用している WindowsXP で、突然無線LANが接続できなくなった。

アクセスポイントがハングアップしたのかなぁ、と思ったがPSPや3DSは正常に接続できるので、どうもPCの問題くさい。

認証の問題かと調べてみたが、固定IPだと問題なく動くのでDHCPの問題の模様。
検索すると次のようなサイトを見つけた



結局TCP/IPプロトコルを再インストールして解決した。

うちの場合、「ワイヤレスネットワーク」の「状態」で見れる送受信パケットのカウントは進んでいたのだが、「IPアドレスの取得中」から状況が進まず、代替構成で指定した設定に落ちることもない状態だった。


マイクロソフトの説明では、
Windows ソケットを使用し、ipconfig /release および ipconfig /renew コマンドも使用するサードパーティ製品がインストールされている場合に、この問題が発生することがあります。Windows ソケットのレジストリ サブキーが破損している可能性があります。
となっており、おそらくアクセスポイントの設定で導入しているAOSS設定アプリとの競合なのかと思う。
このアプリを削除するとAOSS設定できないので、Windows 側の「Windowsでワイヤレスネットワークの設定を構成する」のチェックを外すことで対応、様子を見る

.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事