YOS G-specの適当なブログ
ゲームやネットが大好きな人のブログ。毎日更新を目指してました。
2017年02月16日 (木) 00:43 | 編集
お相手はイャンクック、ボルボロス、ベリオロスでした。

色々思ったことはこちらに吐き出したのでゲーム自体の感想についてはそちらからどうぞ。

【タイムアタック記録】

ボルボロス:
 ライトボウガン:
  ストライカー:
   8'22"03
 ハンマー:
  ギルド:
   8'00"35
 スラッシュアックス:
  ストライカー:
   8'19"25

ベリオロス:
 ライトボウガン:
  ストライカー:
   10'44"56
 ハンマー:
  ギルド:
   11'38"28
 スラッシュアックス:
  ストライカー:
   14'46"**
2017年02月10日 (金) 00:40 | 編集
Qiitaに最近浮気しすぎですが、生きてます。

MarkDown素敵。
コード見やすいし。

さてさて、ここ最近の近況です。
XorShift128+JavaScript移植計画挫折
 JavaScriptでは、Long対応してないので無理でした。無念。もし出来ても速度的にはお察しなことでしょう。

HSPでモジュール変数入門
 HSPのモジュール変数といえば、クラスにも代替するような機能なのですが、余りにもドキュメントが少ないなぁと思ったため書きました。ヘンテコなところはあるかもわからん。

簡単なウインドウアプリ(GUI)開発のまとめ(Windows偏)
 僕が妙に好きな多言語系の記事です。いろんな環境でGUI作れたら面白いねってことで、書きました。
 いつしかの再来かな? ちなみに今回はTk系としていつしか挫折していたLTKとPythonからTkinterを参加させています。
 Tkinter標準ライブラリだし、書くのも簡単だし、exe化もサックリできるしで最高に良かった。
 ちょっぴり情報探しにくそうなところを除けば初心者でも全然行ける行ける。HSPまで簡単とは言わないけどね。
 今回、全ての環境はテキストエディタMery一本(HSP除く)で書いているので、rad的なものは一切触れていないです。

MSBuildで始めるWPF(C#、VB)
 上のとも若干重複するけど、以前書いたこれから幾らか経って、何となく理解できたため記事にしました。
 これも結構日本語情報少ないからなぁ…

・ハンティングルーレットver7.0計画
 MHルーレット系統は何か大きな更新をするたび雰囲気的にver番号を付けてきました。
 今回は今のルーレットがver6系として定めているのでリファイン(ただし、機能はほぼ同じ)してver7系としてMHXXルーレットを作ります。
 以前から使っていたルーレットがもう大分秘伝のソース感増してきているというのもあり、近年で色々新しい知識が増えてきていて、試してみたいというのもあり。
 とりあえずはhtmlから書き直し中です。
 MHXX発売までに間に合うかなぁ…

・Node.js CUI用プログレスバーの制作
 実は今日初めて、なんとなくteratailで書き込みをしました。
 その質問内容を題材にガリガリ書いたのがこれです。
 以前Matlab用にほぼ同じようなもの書いたけど、今回のは汎用性もあがってなかなか自信があります。
 VBとかに移植するのも面白いかなー?
 以下ソースです。

const readline=require("readline");
const exec=require("child_process").execSync;
const rl=readline.createInterface(process.stdin,process.stdout);

class Progress{
constructor(width,parMax){
//最大の列数
this.columns=exec("mode") //コマンドプロンプトからmodeを呼び出して、
.toString() //文字列として取得して、
.split(/\r\n/) //改行で分割し、
.filter(val=>{ //文字化けした" 桁数: "(=" ����: ")を検索して、
if(val.replace(" ����: ","")!=val) return val;
})[0].replace(" ����: ","")|0 //無駄な文字を消して整数に変換。

//進捗度
this.par=0;
//目標進捗度
this.parMax=parMax;
//プログレスバーの長さ
this.width=width;
}

//プログレスバーの更新
view(message){
const parcent=this.par/this.parMax;
const widthNow=Math.floor(this.width*parcent);

const gauge=(">".repeat(widthNow)+" ".repeat(this.width-widthNow));
const output=`#[${gauge}]#(${(parcent*100).toFixed(1)}%<-${this.par}/${this.parMax})`;

//列数と文字数(半角のみ)から実際の行数を計算
const rows=Math.floor(message.length/this.columns)+2;
console.log(output);

//現在位置より下を消去する
readline.clearScreenDown(process.stdout);

console.log(message);

//行数分上に移動。
readline.moveCursor(process.stdout,0,-rows);

this.par++;
}

//プログレスバーの完了
done(lastMessage){
//lastMessageの左を埋める文字数
const sideLen=Math.floor((this.width-lastMessage.length)/2);

var gauge="=".repeat(sideLen)+lastMessage
gauge+="=".repeat(this.width-gauge.length)
const output=`#[${gauge}]#(100%<-${this.parMax}/${this.parMax})`;

//最大列数に合うように空白埋めして表示
process.stdout.write(output+" ".repeat(this.columns-output.length)+"\r");

//現在位置より下を消去する
readline.clearScreenDown(process.stdout);
}
}

const g=(function*(){
const firstMsg="FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep FirstStep";
const secondMsg="SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep SecondStep";
const thirdMsg="ThirdStep ThirdStep ThirdStep ThirdStep";
console.log("START!");

const width=55;
const works=270;
const prg=new Progress(width,works);

for(let i=0;i<=works;i++){
yield setTimeout(()=>g.next(),90);
if(i<40){
prg.view(firstMsg);
}
else if(i<90){
prg.view(secondMsg);
}
else{
prg.view(thirdMsg);
}
}
prg.done(">> Done! <<");
console.log("終了しました!");
rl.once("line",process.exit);
})();
g.next();
Template by 【投資信託のことなら】投信Web /

Powered by .