デスクトップに壁紙以外が表示されない現状
VBAをやってみる
作った
唐突に、テキストファイルから指定の文字について抜きだすマクロを作ってみるかと思い立つ。
VBEを立ちあげて、入門サイトを見ながらカタカタ……
ついでにマクロ、VBAの違いについても確認。
Office TANAKA - 今さら聞けないVBA「マクロとVBAの違い」
作成から2時間半。UTF-8やEUCの入力についてどうするか悩んだ結果、保留。
いろんなサイトのソースを参考にしたのがこちら
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と並行してかじってみる。
ジャンケンゲーム改造
だいぶ手を加えてみた。ゲームとしての体裁は整えてみたつもり。
ただ、想定外の入力への対処は未実装。
思い出しつつ、
【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]; } }