ロイヤルインターネット

趣味や関心のあることについてメモのような感じ

デスクトップに壁紙以外が表示されない現状

タイトル通りの現象に遭遇

普段から、シャットダウンせずにスタンバイ状態を繰り返していたのが不味かったのかな?
ブルースクリーンも出ずに強制終了し、起動したかと思ったら現れた現象。
iPhoneで色々と調べたところ、起動時に参照するプログラムが存在しないのが原因? らしい。
セーフモードで起動して、hiJackThisなりmsconfigなどで中身見てみても、何が原因なのかは特定できず。
結局、msconfigからスタートアップを診断スタートアップに変えたら、無事に起動できたという顛末。
やりたいことはいっぱいあったのに、何もできなかった一日。。。

VBAで組んだマクロ

昨日組んだマクロ、TRPGで出力したログのテキストファイルから、自分の発言を抽出するつもりで作成したのに、抽出できるファイルと出来ないファイルがあるらしいことが判明。
テキストファイルのサイズが問題なのか、それとも別に原因があるのか……保留!

VBAをやってみる

作った

唐突に、テキストファイルから指定の文字について抜きだすマクロを作ってみるかと思い立つ。
VBEを立ちあげて、入門サイトを見ながらカタカタ……
ついでにマクロ、VBAの違いについても確認。
Office TANAKA - 今さら聞けないVBA「マクロとVBAの違い」

作成から2時間半。UTF-8EUCの入力についてどうするか悩んだ結果、保留。
いろんなサイトのソースを参考にしたのがこちら

Sub ExtractionWord()
    Dim search_text As String
    search_text = InputBox("検索する文字")
    If search_text = "" Then
        MsgBox "検索する文字を入力してください"
    Else
        Cells.Clear
        Call ReadRecord(search_text)
    End If
End Sub
Sub ReadRecord(search As String)
    Dim fileNo As Integer
    Dim buf As Variant
    Dim OpenFile As Variant
    Dim record_counter As Long
    fileNo = FreeFile

    OpenFile = Application.GetOpenFilename("テキストファイル,*.txt")
    If OpenFile = Flase Then
        MsgBox "終了します"
        Exit Sub
    End If
    
    Open OpenFile For Input As #fileNo
    record_counter = 3
    
    Do Until EOF(fileNo)
        Line Input #fileNo, buf
        If InStr(buf, search) > 0 Then
            Cells(record_counter, 1) = buf
            record_counter = record_counter + 1
        End If
        
    Loop
    Close #fileNo
End Sub

現状は、Accessと組み合わせて、入力したキャラクターシートデータをデータベース管理する的なことを考えてみている。

ここにも世話になりました。

VBA基礎文法最速マスター - いろいろ解析日記

ちょっと面白いと思ったので、Javaと並行してかじってみる。

Macを触りたい

Macでのプログラミング経験が、極端に少ない(学生のころ、授業で触った程度)。
新PCを買うならMacだな……! と思ってAppleストア見て、
あれも欲しいこれも欲しい、ディスプレイは大きくなんて考えていたら、30万オーバー。
妥協はできない金はないので、当分買い替えはなさそう。

ジャンケンゲーム改造

だいぶ手を加えてみた。ゲームとしての体裁は整えてみたつもり。
ただ、想定外の入力への対処は未実装。
思い出しつつ、

【Java】 コンストラクタって何? this( )の意味 | 一番かんたんなJava入門
上記ページも参照しつつで2時間くらいで作成。
とても、リーダブルコードを読了したあとのコードとは思えないな……w

public class Jangken {

	public static void main(String args[]) {
		// 勝つまで終わらない!
		while(true) {
			System.out.println("Game start. Choice your weapon any one.");
			System.out.println("1. Stone. Scissors can't break this.");
			System.out.println("2. Scissors. Easily cut.");
			System.out.println("3. Paper. Catch any stone.");

			// じゃんけんゲームで出す手を自分で選択できるようにする
			Player pl = new Player();

			// ResultクラスをPlayerクラスの追加に伴い、Computerクラスに名称を変更
			Computer com = new Computer();

			// 勝敗を判定するJudgeクラスの追加
			Judge judge = new Judge(pl.ChoiceWeapon(), com.ChoiceWeapon());

			// 勝てば終わり
			if (judge.Result()) {
				break;
			} else {
				for (int itr = 0; itr < 5; itr++) {
					System.out.println(".");
				}
			}
		}
	}

}
// じゃんけんの手をコンソール上で選択できるようにする
// 2014/10/16

import java.io.*;

public class Player {

	private int choice_weapon = 0;

	Player() {
		System.out.print("Choice! : ");

		// 入力された文字列を数値変換する
		try {
			InputStreamReader isr = new InputStreamReader(System.in);
			BufferedReader br = new BufferedReader(isr);

			// 欲しいのは最初の一文字だけなので、配列に入れた後そこだけ取り出す
			String input_string = new String(br.readLine());
			String picUp_first_chara = input_string.substring(0,1);

			choice_weapon = Integer.parseInt(picUp_first_chara);
		} catch (IOException e) {
			System.err.println("Error : " + e.getMessage());
		}
	}

	public int ChoiceWeapon() {
		return choice_weapon;
	}

}
//コンピューターの手を決める
//2014/10/16
import java.util.Random;

public class Computer {

	// 初期値は変更するかも。プレイヤーの手が不正である場合はCOMの自動勝利だ
	private int choice_weapon = 0;

	Computer() {
  	Random tmp = new Random();
		choice_weapon = tmp.nextInt(3) + 1;
	}

	public int ChoiceWeapon() {
		return choice_weapon;
	}
}
// プレイヤーとコンピュータの手を処理して結果を出す。印字もここ
// 2014/10/16
public class Judge {

	private static String[] weapon = {"Nuke", "Stone", "Scissors", "Paper"};
	private boolean is_flag = false;

	Judge(int pl, int com) {
		// 勝ったらクリアフラグを立てる、負け、あいこはそのまま
		if (pl < com) {
			is_flag = !is_flag;
		} else if (pl == 3 && com == 1) {
			is_flag = !is_flag;
		}
		
		// コンソールに出力する
		this.MessagePrint(weapon[pl], weapon[com]);
	}

	// なんとなくオーバーロードしておく(謎
	Judge() {
		this(0, 1);
	}

	private void MessagePrint(String pl_weapon, String com_weapon) {
		System.out.println("Your weapon is " + pl_weapon + ".");
		System.out.println("Enemy weapon is " + com_weapon + ".");
	}

	public boolean Result() {
		if (is_flag) {
			System.out.println("You win!");
		} else {
			System.out.println("Game is Continued...");
		}
		return is_flag;
	}
}

オーバーロードは、「ああ、そういやこんなのあったな……」と思って実装してみた。
たぶん使われることは無い。

作るのに時間がかかった部分は、

  • 入力の期待値が1,2,3であるのに対して、String[]のインデックスを合わせるのを忘れていた
  • 入力Stringの先頭文字を、charAt[0]で抜け出せないか試行錯誤(結局断念)
  • Buffered Readerクラスってtry catchしないとだめなの!?
  • Computerクラスで取得するランダム値が0~2になっていた!(←これ致命的

こんなあたりが要因かな。
weapon[0]は、当初Judgeクラスのコンストラクタが呼ばれるときに、pl-1とかにするかどうかで悩んだ末に保留に落ち着いた結果。

過去のファイルをあさっていたら、ブラックジャックの作りかけ放置が出てきたので、そちらも手をつけてみようかな。

知人がTRPGシナリオ公開用にWEBを設置したのに刺激を受けているので、JavaScriptとかも悪くない。

とにかく、現在の勤務先ではひたすらCOBOL! だから何かしら自分の慣れ親しんだ言語で遊びたくて仕方ないのである。

ジャンケンゲームを作ってみようと思う

ジャンケンゲームの下敷きのようなモノ

とりあえずどういうゲームにするかは後回しにして、グー・チョキ・パーを出させてみる。

コメントもない何も考えていない、とにかくひどいコーディングである。

Javaのリハビリを兼ねて、1時間しないくらいで思い出しつつやってみた。

やはりコードを書かないと、忘れて行ってしまう……

public class Jangken {

  public static void main(String args[]) {
  Result result = new Result();
  System.out.println(result.choice_hands);
 }

}

import java.util.Random;

public class Result {

  String choice_hands = "none";

  Result() {
    Random tmp = new Random();
    choice_hands = ChoiceHands(tmp.nextInt(3));
  }

  private static String ChoiceHands(int hands_number) {
    String[] hands = {"Rock", "Scissors", "Paper"};

    return hands[hands_number];
  }

}

気が付けば

大学なんてとっくに卒業していたし、今では毎日頑張る勤め人。

いやしかし、特定派遣なんてやるもんじゃないな。

自分の性格をよく考えず、どんな仕事なのかもちゃんと調べず、流れるままに就職したのは大失敗であった。

職場はとても雰囲気が良い場所であるが、やはり自分の感覚には合わない。

この記事を以って転職活動を始めることを宣言する。

 

とはいえ、本ブログはその転職活動を赤裸々に語るようなものではなく、

私の趣味について覚書程度に利用していくというスタンスで使っていこうかな、と思う。

 

TRPGボドゲJavaArduinoFPGA、この辺かな