B-Teck!

お仕事からゲームまで幅広く

【JavaScript】ArrayLikeObjectをArrayに変換する

ArrayLikeObjctとは document.querySelectorAll()とかで戻り値になっているNodeListとかの型。 通常の配列のようにlengthとかを持っていたり、添字を使って各要素にアクセスできる。 でもArrayではないので、Arrayのメソッドとかは使えない。 そのままでは扱…

1年。

母親が死んで、1年が経った。 去年の今日は、普通にお祭りに行っていて、普通に遊んで帰って。 しかも週末を挟んで月曜日に会社に行って、 その帰り道に初めてそれを知ったんだったか。 生前の母は、割とすぐ生と死を持ち出すニンゲンだったので、 連絡が入…

【雑記】勉強

この前の日曜日、もう一度読む山川世界史という本を読み終わった。 いつだったかは失念してしまったけど、確か去年の暮れの頃に購入して、 半年以上かけてゆったり読んできた。 不思議なもので、ここ最近は勉強が楽しくて、 語学学習アプリのDuolingoを使っ…

【JavaScript】日付の妥当性をチェックする

正規表現でチェックして欲しい形式以外をふるいにかけた後、 Date型に突っ込んで突っ込む前と同じ年月日かを確認する。 これで欲しい形式以外は入ってこないし、変な日付が入ってきて無理やり変換されても 変換前との比較で判定できる。 別の形式も許容する…

【Java】半角カナ判定

正規表現 U+FF65「・」(半角カナ中黒)~U+FF9F「゚」(半角半濁点)の範囲で判定する。 細かい各メソッドの挙動とかは下記を参照。 https://docs.oracle.com/javase/jp/8/docs/api/java/util/regex/Pattern.html https://docs.oracle.com/javase/jp/8/docs/a…

【JavaScript】半角の文字を判定する

正規表現 半角文字列の判定として「/[^\x01-\x7E]/」を使う。 []の中に含まれる先頭のキャレット^は否定の意なので、 この場合はASCIIコードの「x01~x7Eの範囲外の文字列」という意味になる。 これだけではカナは含まれないため、同様に「/[^\uFF65-\uFF9F]/…

【Java】文字列の空白埋め、0埋め

String.formatで桁数を揃えたあとreplaceで空白を任意の文字に置き換えることで、0埋めができる。 public static void main (String[] args) throws java.lang.Exception { System.out.println(zeroPadding("12345",10)); // 0000012345 System.out.println(…

【JavaScript】JSの配列操作まとめ

配列の操作 配列の作成 配列の初期化 配列の要素数を取得 配列の最初と最後を取得 配列の要素を指定位置で切り出す 配列のループ 配列の先頭に要素を追加する 配列の末尾に要素を追加する 配列の値を削除する 配列の先頭の要素を取り出して元の配列から削除…

【ゲーム】バトルフィールド1で普段心がけていること

はじめに 昨年発売されたバトルフィールド1(PS4版)を未だにがっつりプレイしている。 基本オペ・コンクエ(たまにフロントライン)専門。 プレイ時間は100時間を超え、ランクも90台。そろそろ中堅を名乗っても良い頃だと思う。 今作は前作に比べて新規プレイヤ…

【VBA】与えられたパスのフォルダを新しく作成する

VBA

パスを指定してフォルダを作成する。 下記みたいな指定の場合でも存在しないパスごと作ってくれる。 MakeNotExistsDir("存在するパスA\存在しないパスA") MakeNotExistsDir("存在しないパスA\存在しないパスB\存在しないパスC") Option Explicit 'WindowsのA…

清く、正しく、残虐に!LET IT DIE

最近、PS4で配信された「LET IT DIE」をプレイしている。 海外では基本プレイ無料で配信されている本作だが、日本ではZ指定のため108円で配信されている。 結構好きなゲームなので紹介してみようと思う。 世界観 地殻変動によって東京に突如現れたバルブの塔…

BioShock Remasteredをクリアした

先月末からプレイしていたBioShockのリマスター版をクリアした。 実は、だいぶ昔に無印版を少しプレイしていたんだけど、なぜか続かずリマスター版が出るまで放置していた… ↓のんびりやったので18時間かかりました ↓所々にこういった海底の街が見える窓があ…

【PHP】 PHPで無名関数を使う

PHP

PHP5.3で導入された無名関数だけど、PHP7で記法がより簡潔になった。 その用法も含めてメモ書き。 無名関数の即時実行

友人がフリーゲームを製作中のようだ

大学時代の友達がゲーム作り始めてた。 というか去年の暮れに公開してた。 戦車で戦う防衛モノ。 タワーと拠点を守って敵を倒すぞ!みたいな。 ↓右のかっこいい球体が拠点、左のやつがタワー ある程度戦ってるとウェーブごとにボスが出てきて倒す。 現状は何…

【PHP】PHPの緩い比較とかの話

PHP

PHPの比較 PHPには、2つの変数が等しいことを比較する演算子が==と===で2つある。 ==は、暗黙的に型を相互変換した後に行われる比較。 ===は、型も含めた比較となる。 PHP: 比較演算子 - Manual 2a問題 暗黙的な型変換による比較というのは、多言語経験者か…

2017年になってました

今更ですが新年のご挨拶です。 去年は母の急逝然り、人間関係然り、後悔を残すことの多い一年でした。 人間、いつ何があるのかわからないなぁという感じで、 やろうと思ってることができなくなってしまうなんて当たり前にあるんですよね。 自分と向き合う時…

【VBA】パスワードのかかっていないExcelだけ開く

VBA

VBAからパスワードのかかったExcelファイルを開く際、普通にWorkbooks.Openするとパスワード入力ダイアログで止まってしまう。 この場合、パスワードを入力するかダイアログを閉じるまで実行中の処理が停止してしまう。 また、ダイアログを閉じた場合にはエ…

【VBA】配列をソートする

VBA

クイックソート アルゴリズムが少し複雑。早い。 C言語で文字列のクイックソート - テクメモ バブルソート アルゴリズムが簡単。あまり早くない。 バブルソート '/** ' * quickSort ' * 配列をクイックソートする ' * 大小比較できる型ならとりあえずソート…

【VBA】Dir関数で指定パスのサブフォルダを全て取得する

VBA

'/** ' * getTargetFolders ' * 与えられたパス配下のフォルダをサブフォルダまで配列で取得する ' * @param strDirectoryPath パス ' * @return フォルダ名のString配列 ' */ Function getTargetFolders(ByVal strDirectoryPath As String) As String() Dim…

【JavaScript】指定時間後や定期的に処理を実行する。

window.setInterval(function, delay) setIntervalは、functionに与えられた関数・処理をdelay(ms)ごとに繰り返す処理。 window.setTimeout(function, delay) setTimeoutは、functionに与えられた関数・処理をdelay(ms)後に実行する処理。 setIntervalで定義…

【JavaScript】Objectタグのdata要素を変更する

HTMLElement.setAttribute("data",変更後data要素)だとIEでうまくいかなかったので、 IEも対応する場合はObject要素自体のDOMをreplaceChildで置き換えてやる必要がある。 /** * changeObjectData * objectタグの表示内容を更新する * * @param {object} ele…

【VBA/Excel】Excelの印刷総ページ数を取得してCSVで出力する

VBA

Dir関数の注意 Windows由来の問題で3文字より長い拡張子を3文字に切り詰めるらしく、xlsでxlsxもxlsmも取れてしまうらしい。ヤバイ。 Office TANAKA - Excel VBA Tips[Dir関数の注意点] ページ数を取得するPageSetup.Pages.CountがExcel2007~2010でバグって…

【JavaScript】HTMLのテーブルをソートするsorTable.jsを作ってみました

github.com すでにあるのかもしれないけど、jQuery無しで動作するHTMLテーブルのソートのやつを作りました。 Git初心者なのでコミットログが汚い... とりあえず公開してみた状態なので、そのうち直したりしてみようかなと思ってます。 下記はデモページの埋…

【VBA】半角カナを判定する

VBA

Not (Mid(strInput, i, 1) Like "[ヲ-゚]" Or strInput = "-")で不要な文字種を除外。 ※"[ヲ-゚]“と”-“を指定するとカタカナひらがなの必要そうな文字列を抽出できる。 ”-“を半角カナに含みたくない場合はstrInput = "-"を外す。 その後StrConvで一度文字列を半角カ…

【VBA/Access】Option Compareステートメント

VBA

Accessでは、Option Compareステートメントによって文字列の比較方法が決定される。 モジュールを作成した際には自動でDatabaseモードが付加されるが、 この記述を削除し、何も書かなかった場合の既定値はBinaryモードとして定義されている。 モード 概要 Bi…

【JavaScript】ウインドウを閉じたとき子ウインドウも一緒に閉じる

ウインドウにモーダルじゃない子ウインドウがある時、閉じたら一緒に消えてほしかった。 IEでのみ動作確認済み。 コードでは1対1の親子関係しか定義してないけど、childWindowを配列にして突っ込んで、 each()とかmap()とかああいうので回せばいいと思う。 (…

【JavaScript/IE】ウインドウを閉じる

window.open()で開いたウインドウじゃないとか、window.close()だとなんか閉じれない環境があったので。 IE(とChrome)は下記のコードで動いた。 window.open('about:blank','_self').close();

【JavaScript/IE】ウインドウサイズの変更に合わせて拡大縮小する

onresize時にウインドウオープン時のウインドウサイズと現在のウインドウサイズの比率を取得し、 ドキュメントの拡大率を動的に変更する。 動作確認はIEのみで、他ブラウザでは正常に動作しないかも。 (function(){ window.addEventListener("resize",window…

【JavaScript/IE】ファンクションキーを無効化する

onload時にイベントを無効化することでファンクションキーを動作しないようにできる。 押下時の処理を別で定義することで、Webアプリケーションでもファンクションキーを用いたデスクトップアプリケーションライクな処理を再現できる。 動作確認はIEのみで、…

【雑記】母が死んだ話

とりとめなくポエミーに書く。

【VBA】文字列の大文字小文字を判定する

VBA

自分自身を大文字に変換した後、変換前後を比較すると大文字小文字を判定できる。 VBAでは大文字小文字がイコールではうまく判定されないので、 StrComp("変換文字列1", "変換文字列2", vbBinaryCompare) でバイナリでの比較を行う必要がある。 Option Expli…

【C#/Unity】穴掘り法でダンジョンをランダムで生成する

せっかく経路探索して敵を追いかけるアルゴリズムを書くなら迷路がほしいなと思ったので。 穴掘り法を複数回ループして、分岐を無理やり増やしてるけど袋小路はうまれる。 仕方ないね。 穴掘り法とは 実装 using UnityEngine; using System.Collections.Gene…

【C#/Unity】相手を追尾するAIを考える その2

前回 beatdjam.hatenablog.com はじめに さっきUnityをインストールして環境作ったので、昨日の記事を改めてUnityで実装してみました。 今回も最後に全文のソースコードを載せます。 また、今回掲載するソースは以前掲載した下記記事から一部流用しています…

【JavaScript】相手を追尾するAIを考える その1

はじめに この記事にこんなコメントがつきました。 beatdjam.hatenablog.com コメント失礼します。 ゲーム開発を学んでいるプログラマーの卵です。 敵AIの追尾について勉強していて、 縦横マス目移動でプレイヤーを追尾出来るような敵の処理にしたいのですが…

【PHP】標準入出力を行うクラス

PHP

【PHP】連想配列とかオブジェクトのソート

PHP

多次元連想配列やオブジェクトを詰めた配列はusort関数でいい感じにソートする。 PHP: usort - Manual 多次元連想配列のソートをする場合 "30", "stock" => "100"], ["price" => "20", "stock" => "120"], ["price" => "10", "stock" => "115"]]; //ソート …

​【PHP】英単語を複数形にする

変換ルール 不規則変化の名詞は辞書を持ち、対応する単語に変換する 不規則変化の辞書に単語が存在しない場合、以下の優先順位で単語を変換する 1 . 末尾が「s、sh、ch、o、x」の場合は「es」をつける 2 . 末尾が「f、fe」の場合は「ves」に置き換える 3 . …

【CSS】文章の字下げを行うCSS

CSS

1. 一行目の行頭を字下げする テキストの一行目を字下げするtext-indentプロパティを利用する <style type="text/css"> .sample1{ text-indent:1em; } </style> <p class = "sample1"> どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで</p>…

【PHP】文字列を配列に格納する(マルチバイト対応)

PHP

PHPのstr_splitにマルチバイト版がなかったので書いた。

【JavaScript】undefinedの判定の話

,,

【PHP】2つの文字列を比較して差異の数を取得する

PHP

2つの文字列から、長さの差も含めて差異のある文字数を取得するメソッド。 str_splitのマルチバイト対応版がないので、

【JavaScript】もらい泣きする

なぜ Twitterでこれが流行ってたので思いつきで Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力…

【JavaScript】配列からランダムに値を取り出す

/** * randAry * 配列内からランダムに値を取得する * @param {array} i_ary 配列 * @return {object} 配列内の値 */ function randAry(i_ary){ //添字を全て取得 var aryKeys = Object.keys(i_ary); //対象の添字をランダムに取得 var index = aryKeys[Math…

【JavaScript】最小値と最大値を指定して範囲内の値を持った配列を作成する

/** * range * 範囲内の値を持った配列を作成する * @param {number} min 範囲の最小値 * @param {number} max 範囲の最大値 * @param {function} filer フィルタ関数 * @return {array} 作成した配列 */ function range(min, max, filter){ var ary = []; f…

【SQL/SQLServer】作成済みテーブル等の一覧を取得する/存在するかを確認する

テーブルが作成済みかを判定する仕組みを調べたのでメモ 実行環境 SQL Server 2014 Express テーブル等の一覧を取得する SQL Serverで作成されているオブジェクトは全て[DB名称].dbo.sysobjectsというシステムテーブルに保存される。 そのため、下記のような…

【SQL/SQLServer】整数同士の割算の時、結果が必ず整数になってしまう

SQLServerで割り算を行った時、整数同士での割り算の場合は必ず結果が整数になってしまう理由が謎だったので調べた。 実行環境 SQL Server 2014 Express 問題 下記のSQLは1.5という結果が得られるような気がする、と思ってた。 SELECT 3/2 思ってただけだっ…

【VBA】Round関数で四捨五入ができなかった話

VBA

VBAのRound関数は銀行家丸め(銀行型丸め、銀行丸めともいうらしい)になっているらしい。 ので何も考えないで四捨五入しようと思ったらできなかった。 銀行家丸めとは 銀行型丸めとは、切り捨てるときに一番近い偶数に近づける方法。 単に四捨五入していくよ…

【VBA】First関数・Last関数等についてのメモ

VBA

First(), Last(), DFirst(), DLast() VBAのこれらの関数はORDER BY句や、インデックス、主キーを考慮せず、 「ディスクのレコードを読み込んだ順」の最初と最後を取得する。 なので、下記のようなSQLとは必ず等価にならず、どんな値が返るのかも予想が困難な…

【VB.NET/C#】ファイル操作についてのメモ

ファイルが存在しているかを確認する System.IO.File.Exists() ディレクトリが存在しているかを確認する System.IO.Directory.Exists() ディレクトリ内のファイルを取得する System.IO.Directory.GetFiles() ファイルを作成する System.IO.File.Create() フ…

【HTML5/jQuery/Javascript 】ローカルの画像を読み込んでJavaScriptで合成してみた

ふと思い立ったので、HTML5のCanvasを使って画像を合成してみた。 なんとかブルーファンタジージェネレータ コード HTML <html> <head lang="en"> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>なんとかブルーファンタジージェネレータ</title> </meta></meta></meta></head></html>