文系卒のプログラマー奮闘記

Fラン文系卒がIT企業で奮闘するブログ。24歳♂わんことの戯れ日記でもある。

ata

import java.io.*;
public class Othello03 {
static Player p1,p2,pw;//プレイヤー
static int ban = { //盤面 0=無し 1=黒 2=白 3=置ける
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,1,2,0,0,0},
{0,0,0,2,1,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}};
public static void main(String args) throws IOException {
String
kazu = {"1","2","3","4","5","6","7","8"};
String color = {"","黒","白","現在置ける場所"};
int
status = new int[4];//盤面の状況を格納
int tate,yoko = 0;//コマを置く縦位置、横位置
int failed_cnt = 0; //2回おけなかったらゲーム終了
p1 = new Player('h',1);//プレイヤー1 黒
p2 = new Player('h',2);//プレイヤー1 白
pw = p1;//作業用オブジェクト
while(true){//ゲームメインループ
for(int i = 0 ; i < status.length ; i++){//配列の初期化
status[i] = 0;
}
for(int i=0 ; i < ban.length ; i++){ //置ける位置の初期化
for(int j = 0 ; j < ban[i].length ; j++){
if(ban[i][j] == 3){
ban[i][j] = 0;
}
}
}
//置ける場所チェック
for(int i = 0 ; i < ban.length ; i++){
for(int j = 0 ; j < ban[i].length ; j++){
if(ban[i][j] == 0){//コマが置かれていない場所をチェック
if(check_change(i,j,pw.color,"check")){//置ける時
ban[i][j] = 3;
}
}
}
}
//盤面描画
System.out.print(" ");
for(int i = 0 ; i < ban.length ; i++){
System.out.print(kazu[i]);
}
System.out.println();
for(int i = 0 ; i < ban.length ; i++){
System.out.print(kazu[i]);
for(int j = 0 ; j < ban[i].length ; j++){
switch(ban[i][j]){
case 0://なにも無い
System.out.print("ー");
break;
case 1://黒の時
System.out.print("●");
break;
case 2://白の時
System.out.print("◯");
break;
case 3://置ける時
System.out.print("?");
break;
}
}
System.out.println();
}
//盤面のチェックその2
for(int i = 0 ; i < ban.length; i++){
for(int j = 0 ; j < ban[i].length ; j++){
status[ban[i][j]]++;
}
}
if(status[3] == 0){//置ける場所があるかチェック
failed_cnt++;//置けないカウント
System.out.println(status[pw.color]+"は置ける場所がありません。");
cangePlayer();//プレイヤー交代
}else{
failed_cnt = 0;
}
int last = status[0] + status[3];//置ける場所の数
if(last == 0 || failed_cnt == 2){
break;//ゲームループから抜ける
}
for(int i = 1 ; i < status.length ; i++){//盤面の状態を表示
System.out.print(color[i]+":"+status[i]+" ");
}
System.out.println();
System.out.println(color[pw.color]+"の番です");
int point = pw.getPoint();
tate = point[0];
yoko = point[1];
if(ban[tate][yoko] != 3){
System.out.println("指定された位置にはコマを置けません。置ける位置を指定して下さい");
continue;
}else{//コマを置き、ひっくり返す
ban[tate][yoko] = pw.color;
check_change(tate,yoko,pw.color,"change");
}
cangePlayer();//プレイヤー交代
}
System.out.println("ゲーム終了");
for(int i = 1 ; i < 3 ; i++){//コマの状態を表示
System.out.print(color[i]+":"+status[i]+" ");
}
int win = 0;//勝敗
if(status[1] > status[2]){
win = 1;
}else if(status[1] < status[2]){
win = 2;
}
switch(win){//勝敗の表示
case 0:
System.out.println("引き分け");
break;
case 1:
case 2:
System.out.println(color[win]+"の勝ち!");
}
}
static void cangePlayer(){//プレイヤー交代
if(pw.color == 1){
pw = p2;
}else{
pw = p1;
}
}
static boolean check_change(int i,int j,int color,String mode){
for(int r = -1 ; r < 2 ; r++){
for(int c = -1 ; c < 2 ; c++){
int rw = i + r;//タテのチェック位置
int cw = j + c;//ヨコのチェック位置
if(rw < 0 || cw < 0 || rw > 7 || cw > 7){//配列からはみだしてないかチェック
continue;
}
if(rw == i && cw == j){//自分自身の位置はチェックしない
continue;
}
boolean loop_flg = true;//ループ継続フラグ
int step = 0;//敵の色が連続する回数
do{
if(rw >= 0 && cw >= 0 && rw <= 7 && cw <= 7){
if(ban[rw][cw] != 0 && ban[rw][cw] != color && ban[rw][cw] != 3){
rw += r;
cw += c;
step++;
}else{
if(mode.equals("check")){//置ける場所チェック
if(ban[rw][cw] == color){//自分のコマを見つけた時
if(step != 0){
return true;
}
}
loop_flg = false;
}
if(mode.equals("change")){
if(step != 0 && ban[rw][cw] == pw.color){//自分のコマを見つけた時
while(rw != i || cw != j){//ひっくり返す
rw -= r;
cw -= c;
ban[rw][cw] = color;
}
loop_flg = false;
}else{
loop_flg = false;
}
}
}
}else{
loop_flg = false;
}
}while(loop_flg==true);
}
}
return false;
}
}
class Player{
char mode; // h = 人間 c = コンピュータ
int color; // 1 = 黒 2 = 白
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Player(char mode,int color){
this.mode = mode;
this.color = color;
}
int
getPoint() throws IOException{
int[] point = {0,0};//point[0] = タテ point[1] = ヨコ
String str;
if(mode == 'h'){
do{
System.out.print("タテ位置の置く場所を入力して下さい1〜8:");
str = br.readLine();
if(str.isEmpty()){//何も入力されなかった時
point[0]=1;
}else{
point[0] = Integer.parseInt(str);
}
point[0]--;
}while(point[0] < 0 || point[0] > 7);
do{
System.out.print("ヨコ位置の置く場所を入力して下さい1〜8:");
str = br.readLine();
if(str.isEmpty()){//何も入力されなかった時
point[1]=1;
}else{
point[1] = Integer.parseInt(str);
}
point[1]--;
}while(point[1] < 0 || point[1] > 7);
}
return point;
}
}

IT関連の情報収集

こんばんわ、文系卒の奮闘中プログラマSeraです。

 

今日は情報収集について書こうかと思いますが、みなさんは具体的にどんな情報収集をしているのでしょうか?

おそらく、ダントツ1位なのがインターネットでの情報収集かと思いますが、インターネット(ツイッターやこのブログも含む)の情報と言うのはあいまいなものばかり....

例えば”深くは分かりませんが”とか”おそらく~~~だと思います。”といった抽象的な言葉を使っている記事は信用するか迷うところですよね。

勿論、インターネットでの正しい知識が得られればそれが一番なのかもしれませんがw

そこで、そんな信用できない数多あるインターネットの中から情報を探す手段と、情報誌から探す手段。どちらが良いでしょう?

 

情報誌を見ることのメリット

  • 情報が凝縮されているので、分かりやすい。

ネットは、いくら書いても制限はありません。

雑誌の誌面では限られたページの中でいかに有用な情報を伝えやすく書く。というコンセプトのもと作成されているので必然的に分かりやすい構成をとる形になります。

  • 欲しい情報、いらない情報の区別がしやすい

一目見て、欲しい情報があればそこを読めばいい。

逆にいらない情報は読み飛ばせば良いだけである。

  • 情報誌はインターネット比べマイナーである。

マイナーというのはデメリットと捉えられるかもしれませんが、マイナーな分、他人が知らないような情報+αの知識をつけられたりする。

 

デメリット

  • 少々値段がかかる。

立ち読みだと無料ですが、やはり購入してじっくり読むのがベストでしょう。

  • 欲しい時、欲しい情報が見当たらない。

これに軍配があがるのはやはりインターネットでしょうか。

現在はスマホがあれば、欲しい時に欲しい情報が得られますからね。

 

最後に、よく僕自身よく目にする情報誌の書いて終わりにします。

 

  1. SoftWareDesing
  2. 日経シリーズ

これらは目にとまったとき見るようしてます。

たった10分で頭をすっきりさせる方法

こんばんわ、文系卒の奮闘中プログラマSeraです。

 

前日の夜、どの番組か忘れてしまいましたが、10分で頭をすっきりさせる方法が紹介されておりました。それは...

 

  • じっとして10分目を瞑るだけ。

これだけで、脳からα波っていうのがでてきてリラックス状態へ移行するみたいです....

α波とはなんぞや?と思いチラチラ調べてみました。

α波はリラックス、
β波は思考と集中、
γ波は覚醒とレム睡眠、
δ波はノンレム睡眠、
θ波は傾眠(うとうとした状態)

 

 引用元

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1387523598

 すこし話は逸れますが、睡眠にはレム睡眠とノンレム睡眠というのがあるのはご存知の方がいらっしゃるかもしれません。分からない人のために少し補足しておくと....

 

レム睡眠 ・・・浅い眠り

ノンレム睡眠・・・深い眠り

レム睡眠(浅い眠り)の時のまぶたは閉じていますが、中では眼球がまだ動いていて、この状態では夢をみている状態です。つまりあまり体は休まりません。しかしこの状態から起床するとスッキリとした目覚めで起きることができます。

ノンレム睡眠(深い眠り)は、眼球の活動も停止して睡眠の覚醒状態的なものと言う感じでしょうか?このノンレム睡眠の時間に人間の体は超回復するそうです。逆に、この状態から起床すると体がだるおも~だそうです。

 

今回紹介した”たった10分で頭をすっきりさせる方法”は前者のレム睡眠(浅い眠り)に類するもので、頭も体もスッキリとさせる効果を発揮する。という原理だそうな。

 

そういえば学生時代のテストをやっているとき、「はじめ!」って言ってから真っ先に寝る。5分くらい目を瞑って何も考えないでテストに取り掛かると頭がすっきりしてテストの点数もアップ!なんていうのもあったような・・・。

テストの点数アップしたかは定かではないですが、頭がすっきりとした状態だったのは確かです。

 

学生の方も社会人の方も、昼休憩のほんの10分。目を瞑ってじっとすると、午後のスタート好調間違いなし!

家計簿ソフト 画面作成終了!

こんばんわ、文系卒奮闘中プログラマSeraです。

やっと(?)家計簿ソフトの画面作成終了しましたぁ。

 

使用IDENetBeansGUIビルダー。

使い方が慣れず、画面作成に3日もかけましたが、出来栄えは”う~ん.....”

もともと中学・高校の美術の成績も1・2・3・4・5の2.センスは....ない。

それでも、もっと使い方マスターせねば。というところでした。

まずは、画面の作成を終えてあとはDBとの接続と処理をDAOパターンで書いていこうかと考えてます!はぁ~、この処理記載していくのが苦痛なんだろうな......

 

最後に、GUI画面と処理の記述をEclipseでやろうかと思ったんですが、色々とEclipseプラグインを入れたりと触ってみたのですが「つ、つかいずらい.....。」

そこで調べていたらIDEGUIビルダーならNetBeansが最強。という記事を見つけて早速ダウンロードして使ってみたところ「SUGEEEEEEEEEEEE!!!」

 

今後もGUI作成はNetBeansで作成しようそうしよう。

(でもGUIソフトってあんまり作る機会がないような.....)

内定式のお手伝いに召集され....

こんばんわ、文卒奮闘中プログラマのSeraです。

 

先日の10月1日で入社2ヶ月を迎えまして、そんな時のひとこま。

上司「そういえば、お前内定式でてないだろ?カメラマンとして内定式参加ね。」

私「まだ入社2ヶ月目なんですが、内定式に出席しちゃっていいんですか?w」

上司「だってお前内定式でてないじゃん。だから参加。」

というわけで、10月1日の内定式にカメラマンとして召集されたのであります....

 

内定式は前職(住宅営業)に入社するときに一度経験はしているけど、やっぱり緊張感があって、学生生活に戻りたいなーと思ったり。

 

内定式の学生たち。すごい、すごい剣幕。

オーラがビキビキでてきてて、若さにちょっと圧倒される。(年齢的には2,3年しか変わらないのに。)

無事(?)内定式は終了して、会社に戻ってその日もまた勉強して終わりました.....

 

ふとした時に、”内定式の意味”を気になって調べてみたのですが。

結局は一度内定を出しても、やっぱり中には他社と迷っている学生さんがいるようで、そんな学生を囲い込むため、意思決定をさせる場所。みたいな解釈で間違ってないと思いますが、確かにこれから入社する予定であろう会社から歓迎されて式を開いて頂いてる訳だから、もうここまできたら断りにくいですよね。

 

今日の志村動物園を見て....

こんばんわ。先ほど志村動物園の番組で柴犬の出産のシーンがありました。

うちにもわんこ(♀)が2匹いるので、去勢はしておらず出産の可能性があるので、その番組を食い入るように見てました。

VTRの時間として10分程だったのですが、陣痛から出産して、母親のおっぱいを吸うまでが収録されてました。

 

今、隣でまったり寝ている2匹のわんちゃんずも出産したら、どうなるかななんて思いながら....

わんこの出産って色々ネットサーフィンしていると賛否両論。

出産のリスクと人間のエゴについての意見が沢山ありました。

犬の出産となると、母親犬への負担は相当なもの(出産後のケアや病気)があり、ただ人間が「仔犬生まれたらかわいいし、沢山増えていいな。」なんて思うのは人間のエゴだ!なんていう投稿があったり。

それでも、やっぱり出産して犬が増えるのはうれしいと思うな。

きっとそれは、出産を終えた母親犬のことを「よく頑張ったね。」とさらに好きになるだろうし、新しく生まれる命には「頑張って大きくなってね。」ていう感情があって、動物への愛情がより一層深まるのでは....?と、考えたり。

 

その中でも、母親犬を一番に考えて出産というリスクは避けるべき。という意見も勿論です。

最悪の事態、生まれるはずだった仔犬の命も、母親犬の命も落とすリスクだってありえる訳ですから...。

それを呑んだ上での出産。覚悟を決め腹を括った上での出産というのが大前提にあるものだなと感じました。

今日、色々とコラムを読んでいました。

会社でのこと....

昼休憩の時間ひたすら”新人プログラマ”とか”文系 プログラマ”とかでググってコラムを読み漁ってました。

その中で”60%の人はプログラマに向いていない”っていうコラムがあって、う~ん・・・なんて思いながら読んでました。

その記事っていうのがこちらなんですが。

 

そもそもの話しになってしまうのですが、趣味でプログラマをしている人をターゲットは別ですが、仕事でプログラマをやっている人について。

 

簡潔に書きます。

結局は好きか嫌いか、ということではないでしょうか?

好きなら、どんどん次の目標(こういうソフトを作りたい、更なる資格取得の為に勉強しよう)に向かって、帰宅後から学習でも何でもできちゃう。

私自身まだ、ばりばり残業!なんてことは経験してないから、断言しにくいのですが.....

それでも、昨日(10/1)で入社2ヶ月目を迎えて、それまではずーっともう一人、私と同じ時期に入社した新人と2人で独習を続けてました。

上司には、CとかJavaとかやっとけばいいよーって言われて放置ぷれい。(基本派遣型なので)

 

その状況で2ヶ月経った今、みっちり学習はしたつもり(知識量としては割愛.....)ですが、まだまだプログラミングについてのITについてのも学びたいですし、楽しさも日に日に増えてる。

これはみんなそうなのかな?入社当時はやる気に満ち溢れて、何をやっても楽しく感じるって。

もちろん体を動かす仕事が嫌いとか、接客業は嫌だとか、人それぞれ。

その中でもプログラミングは苦手だな。って心のどこかにあるとやる気も削がれるのも当たり前で、そういった気持ちが心のどこかにあると向上心もなくなって。素質うんぬんの話しではなくなるんじゃないかな...とだらだらとなってしまいましたが、逃げるようにここでおわり!

 

 

---今日の学習内容---