fc2ブログ

描き始めたイラスト、出版社からの依頼に応じてイラスト執筆をするものの、どう考えても終わらないぐらいの量のイラスト、そして、イラストのバーゲンセール

image0.png
昨日描いたイラスト。
GIMPとペンタブで描くものの、上手くいかず、iPadで描きかえる。

GIMPとペンタブで上手くいかなかったときは、紙でトレースするかと思ったが、iPadでかきかえて正解だった。

違う方法だったら、恐ろしく時間がかかっただろうから。


image0 (1)_2

image0 (1)_1


image0 (2)_1

image0 (2)__4

image0 (2)__3

image0 (2)__2



イラストを執筆しているが、なんか、とんでもない大仕事を引き受けてsまった気がする。

大量の、数十枚のイラストを限られた土日で、1ヶ月以内に描く。
終わるのだろうか。
報酬2万円が、とてつもなくバーゲン価格な気がしてならない。


image0 (3)


↑ こんな、何を言いたいか分からないような図も作成の依頼が来ている。




いずれにしても、昨日、今日と描いているうちに、描くスピードも上がってきた気がする。




・・・・・・・・・・・・・・・・・・・・・・




今日から、アンジューの日本語のレッスンが復活。



しかし、中野の中国語のレッスンに行く余裕は、イラスト執筆のために無くなった。



image0m.pngimage0 (4)

今朝、iPadで描いた絵。




この2日で、絵を描くスピードが格段に速くなった気がする。



image0 (2)


約1時間かけて描いた絵。



実績を作るためには、上手さ、丁寧さ、そして、依頼元の要求をしっかり再現すること。
それから、スピードも大切だ。




image0 (1)l

この絵も、約1時間かけて描いた。





あと、60個描かないといけないイラストがある。
単純計算で1個1時間として、60時間。

土日に8時間として、4週間かかる。



これで、2万円は本当にバーゲンセールだ。





・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・




とにかく、始めてしまったことだ。
文句を言わずにやりきろう。
愕然とする量のイラストだ。

プロでもないのに。



スポンサーサイト



連日、職場の周辺を3時間、自転車で奔走、「不審者」扱いされる/CCレッスンのクワッドリリンガルの講師/イラストの執筆に取り掛かる

cc.png

CCレッスン(中国語のオンラインレッスン)の講師でときどき見かける、4ヶ国語話者、

つまり、クワッドリリンガル、テトラリンガル


自分が長年追い求めてできなかったことをやってしまっている人がいることに驚きだ。



私は英語、中国語、韓国語を習得しようとして、
結局、今の状況だと、韓国語を放棄したことになる。



中国語だって完璧とは言いがたい。




・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・





1b144cd3.jpg
ここ数日、10人程度の家庭を周って、返却物を届けている。



10d68ff5083dbddcbc0a0fcee763a7b4.jpg
電動自転車に乗っているとはいえ、

どこが、何丁目、何番地、何号か分からないため、延々と、自転車に乗ってうろうろしている。
ズボンが擦り切れそうだし、
1名の保護者から、「不審者みたいだ」と苦情の電話を受けた。



DSC082972.jpg




まだ、先がある。
あと、多分、20人ぐらい配らないといけない。
郵送で送ると、全部で98000円かかる。
しかも、それは私が負担しなければいけないのだ。

そんなの御免だ。





職場では、完全な吊るし上げを受けている。
自分の職務から外されているのだ。

自分の大舞台であるはずだったエキシビジョンから外され、指導すらすることすらできない。
こんな屈辱を受けるなんて。






木曜日には上司と病院にいった。
三者面談だった。

今度は、産業医を受診しろと、

まるで、この1ヵ月半は、病院のたらいまわし。




江戸川区の病院で診断書をもらったら、
御茶ノ水の病院でセカンドオピニオンをもらえと言われ、

御茶ノ水の病院では、予約することが非常に困難で、
江戸川区の病院を再受診しようとすると、担当医が1ヶ月先まで不在。

そこで、心理カウンセリングを御茶ノ水で受けるも、それは、医師ではないから、意味が無いという。
なんとか、御茶ノ水の病院にこぎつけたと思ったら、そこで、産業医を受診しろと、、、

いったいなんなんだ。
そして、今度は、12月まで私を指導から外すという上司。




こんな吊るし上げを受けて、どうして、ストレスが溜らないでいられるか。





・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・




さて、今日から依頼されているイラストの執筆に取り掛かろうと思う。
報酬は2万円と少ないが、
自分の名誉と、実績のため。


だらだらしないで、素早く取り掛かろう。


作業が早ければ、相手からも気に入ってもらえ、
次の依頼も来やすくなるだろう。



シューティングゲームプログラミングの基礎、画面の描画/『聴読中国語』また、1周読了、HSK6級への道/今週も通院、そして、またつらい仕事が始まる

HSK 6級 過去問 リスニング 《H61005》






HSK6級、リスニング、もう少しで全部聞き取れる。
でも、まだまだ。






プログラミング講座 第21回【シューティングゲーム作成(1)/JavaScript】



上の動画では、シューティングゲームの基本である、背景の星の描画について説明しています。
下がソースコードです。


//画面サイズ
const SCREEN_W = 180;
const SCREEN_H = 320;

//キャンバスサイズ
const CANVAS_W = SCREEN_W *2;
const CANVAS_H = SCREEN_H *2;

//フィールドサイズ
const FIELD_W = SCREEN_W *2;
const FIELD_H = SCREEN_H *2;

//星の数
const STAR_MAX = 300;

//キャンバス
let can = document.getElementById("can");
let con = can.getContext("2d");
can.width = CANVAS_W;
can.height = CANVAS_H;

function rand(min, max)
{
    return Math.floor(Math.random()*(max-min+1) ) +min;
}
class Star
{
    constructor()
    {
        this.x = rand(0, FIELD_W)<<8;
        this.y = rand(0,FIELD_H)<<8;
        this.vx = 0;
        this.vy = rand(30,200);
        this.sz = rand(1,2);
}

draw()
{
        con.fillStyle=rand(0,2)!=0?"66f":"8af";
        con.fillRect(this.x>>8,this.y>>8,this.sz,this.sz);
}

update()
{
        this.x += this.vx;
        this.y += this.vy;
        if( this.y>FIELD_H<<8 )
        {
            this.y=0;
            this.x=rand(0,FIELD_W)<<8;
        }
}

let star=[];
for(let i=0; i<STAR_MAX; i++)star[i]=new Star();
for(let i=0; i<STAR_MAX; i++)star[i].draw();

con.fillStyle="black";
con.fillRect(0,0,SCREEN_W,SCREEN_H);





シフト演算子について説明しているサイトから引用

シフト演算子はビット演算子の一つで数値の各ビットを左又は右へシフトさせるための演算子です。


<<= a = a << 2 左シフト
>>= a = a >> 2 右シフト


0000000000001011  = 11
----------------
0000000000010110  = 22


各ビットを指定した数だけ左へシフトします。左端からはみ出した部分は削除され、シフトしたことによって空いた右端は「0」が格納されます。結果として11を1ビット左へシフトすると22となります。


引用元:https://www.javadrive.jp/cstart/ope/index7.html




プログラミング講座 第22回【シューティングゲーム作成(2)/JavaScript】






・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・




昨日、例によって『聴読中国語』をゆっくりバージョンで62課全部を一周音読した。

やはり、自分は『聴読中国語』をちゃんと読めていると思い込んでいただけの部分があって、
昨日読んでみると、ちゃんと理解しないで、読んでいるだけのところがあった。

もう一度、文の内容を噛みしめながら、内容をきちんと理解しながら、読んでいこうと思った。





HSK6級も、自分の実力だともう、合格できるレベルなはずなんだが。
なにか1つ足りない。
かといって、これ以上テキストを買っても意味が無いと思っている。
今、もっているテキストを、今以上にしっかり理解していく必要があるんじゃないかと思っている。

職場の中国人が言っていることで分からないことも、おそらく、HSK6級を難なく合格できるレベルになったら、ちゃんとしっかり聞き取れることができるんじゃないかと思う。




多分、HSK6級を難なく合格できるレベルになったら、ちょっとした故事成語や慣用句の知識を勉強しさえすれば、中国語検定準1級は合格できるだろうし。




・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・




何か集中できるものを見つけておかないとつらい。
それは、今、まさに、職場でのパワハラと吊るし上げを受けているから。

この1ヶ月ちょっと、休職をして、さらに仕事に戻してもらえない現状。
そして、毎日の叱責。

このつらい時期が早く過ぎないか、それを考えている。




思い返してみれば、
江戸川区で働いていた頃から整理整頓、掃除は苦手だった、
それから、江東区で働いていたときに、事務処理でミスをして、仕事を取られてしまった。

いったい、自分には何が足りなかったのだろうか。
どうして、他の人ができていることが、自分にはできないのだろうか。




明日から職場に行くのが、やはり、どうしても、苦痛になる。
いったい、どうして、こんなことになってしまったのだろうか。




悪い見本を見て、それを模倣する癖がついてしまったのだろうか。




確かに江戸川区時代は、暴力、暴言、公文書紛失、など、今では考えられないようなことが、もっと起こっていた。
しかし、そういうことを模倣して、何の疑問に思っていなかったのだとしたら、それは自分が悪いと気付くべきだろう。





・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・




数ヶ月前は、全く考えてもみなかった、
今、こんな事態になってしまったなんて。

数ヶ月前は、イケイケで、あれもこれもと、いろんなことをやりたいと思って、エキシビジョンに向けて頑張っていたのに。

それを全て取り上げられ、
そして、指導にも復帰できず、

いったい、何が悪かったのか。
あのとき、作品がすぐに見つかればよかったのか、
作品の提出遅れがなければよかったのか、
9月ごろ、体力がダウンしていたのを、いち早く回復していればよかったのか、


こんな吊るし上げの状態を受けて、
いつまでも続く、この苦しい状態。


考えたら、自分で選んだ、「来年もいたいです(異動しません)」の一言。
来年残留しても苦しいだけじゃないのかという思い。
でも、自分のことを慕っている子供たちのために居続けたいという思い。




いったい、何が原因でこんなことになってしまったんだろう・・・・
もっと、自分の行動や状況、状態に慎重になるべきだったんだろう。




・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・





ダウンロード



金曜日に病院に行って、また、木曜日、今度は上司同伴で行く。
もう、かれこれ、9月17日から、毎週のように病院に行っている。

もう、こりごりだ。


また、明日から仕事だ、
こんなに仕事がつらいなんて。
あんなに好きだった仕事だったのに、、、



実際に動くゲーム、このゲームをもとにして、Javaのゲームを書き換える計画/イラストの執筆依頼で、絵を描くためにGIMP2の機能を確認する/仕事での嫌な思い

ゲームができます。IEだと遅いかもしれません。反応しなかったら画面をクリックしてください。上下左右キーで移動、スペースでジャンプします。  

 このゲームは自作ではなく、拾いものです。 ソース元:http://d.hatena.ne.jp/nakamura001/20100309/1268100948 



Javaアプレットで書いたシューティングゲームをJavascriptに書き換えたいのだが、
現在の職場での状況下、私がゲームを作ったとしても、子どもたちに自由に見せて遊ばせてあげられない可能性があるので、ちょっと動き始めるのを待っています。

バカで無知な管理職が、「違法ソフトだ!」とか言いかねないからです。
本当にバカ。


Javascriptで動かしてプレイできるゲームを作る場合、以下のようなコードを書く必要がある。
 var ctx = document.getElementById('canvas').getContext('2d');
これは、画面に描画をするための文なんだけど、どうも、これをやはり書かないといけないらしい。




・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・




2016-06-05_164956.jpg


出版社よりイラスト執筆の依頼が来た。
どうも、今回は、アナログ(手描き)ではなく、CGで描いた方がよさそうだということが分かった。
GIMP2でどこまで可能か、
依頼されているイラストをどこまでGIMP2で表現できるか、調べることにした。

円や曲線の描画、指定範囲内のグラデーションによる塗りはできるみたいだ。
まず、依頼元から、どのイラストを描くのか、はっきりさせてから、その後で、どんどん描き始めようと思う。





【三国志】最も悲惨な死に方した人10選【ゆっくり解説】





いやあ、三国志の悲惨な氏にかたランキング、むごすぎ。
命の重さ、軽過ぎ。


曹操の食料係には同情するしかないものがある。






1時間ちょっとでわかる!無印時代の全戦闘力を徹底考察!



ナムの戦闘力が76、チャパ王の戦闘力が100なのは、大き過ぎる気がします。
パンプットの戦闘力が40と推定されていますが、ナムや、チャパ王も、このあたりな感じがします。






【スラムダンク】安西先生って何者?まるで成長していない・・・安西先生の熾烈な人生の全貌とは・・・【ゆっくり解説】




スラムダンク、私がHRTを好々爺さんと組んでいた頃、マンガの単行本を貸してくれて、毎日のように京成バスの中で読んでたっけな。

私が好きなマンガでした。





・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・




あの頃は、今のような仕打ちを受けるなんて、考えてもみなかった。
確かに、
児童養護施設では、精神的に追い詰められるような酷い仕打ちを受けた。
カナダのデイケアでも、マネージャーからキツイ仕打ちを受けていた。
江戸川区や江東区でも、隣の席の人物からパワハラを受けていた。

しかし、

今のこの仕打ちは、人生史上最大の試練と言えるぐらいの苦難だと思う。




自分の持ち場である部屋を複数の職員によって家宅捜索されて、ひきだしの中を隅々まで調べられた。
自分の担当していた行事を、何の相談も連絡も、報告もなく、一方的に縮小されて、それを教えてもくれず。
復帰して3週間立つのに、指導に戻らせてくれず。
掃除や事務処理だけする日々。

そして、毎日のように長時間にわたる管理職の叱責。
ストレスで心が擦り切れる日々。
朝、起きると、心が重たくて、職場に行くのがとても苦痛に感じる。



酒に依存しているけど、酒を飲むと、今度は下痢になってしまう始末。
今日だけでも、昼過ぎまでずっとキツイ下痢が30分に一度の感覚で襲ってきました。
とてもじゃないけど、外出なんてできない。
2年も禁酒していたのに、その自分を再び、酒に戻らせてしまう。
それだけの強烈なストレスが襲っているのです。



さすがに、ストレスの無い週末だけでも禁酒しないと、自分の内臓がもたない。
いつか、というか、すぐにでも禁酒を再開したいのだが。




・・・・・・・・・・・・・・・・・・・・・




いつもは反応が薄いベトナム人のシンママから、今日は何度もラインが来た。
そして、相手の方から通話をしようと言ってきた。

脈があるのかな・・・・

1時間ぐらい話した。
雑談程度だけど、
でも、相手は、持ち家を持ちたいかとか、結婚したら育児はどうするかとか、家計はどうするかとか聞いてきたので、真剣に考えようとしているみたいだった。




・・・・・・・・・・・・・・・・・・・・・・




何か熱中できることが無いと、どうしても、仕事の嫌なこととか、バカなパワハラ上司のこととか考えてしまうから。
だから、今回出版物にイラストを描く仕事が来たのは、ある意味、すごく良い気分転換になるのは確か。
そうでもないと、始終、仕事のことがエンドレスに脳内をめぐっていて、それだけでストレスになるから。



ついに!!出版社からイラスト執筆の依頼が来た!!!!!/仕事における人生最大の試練の日々

ダウンロード

ついに、イラスト執筆の依頼が出版社から来た!!!!!


夏ごろから、ずっといろいろな出版社に営業をしてまわっていた甲斐があった。


報酬は2万円。
イラストレーターとしての報酬としては安いものかもしれない。
しかし、実績を作っていくということに関しては、報酬の値段についてなんて文句は言えない。


これから1ヶ月かけてイラストを描いていく。
確実に自分の実績を積み上げていってやる!!!


そして、いつか、プロのイラストレーターとしてデビューできるように。



images_202210230856493e1.jpg




・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・




飲酒をどうしてもしてしまっている。
先週末に2日間禁酒をしたが、結局、仕事が始まってみると、多大なストレスで飲まざるを得ない状況になってしまっている。


管理職による長時間の叱責が毎日続く。
そして、本来の仕事である子どもの指導に戻らせてくれない。
10月3日から職場に戻ったというのに、もう、3週間も仕事をさせてくれない。

最初の1週間は休んでてできなかった成績付け、まあ、これは仕方無いとしよう。
しかしながら、その後の2週間は掃除や返却作業など、自分の本来の仕事である子どもの指導では無い仕事を延々とやらされ続けている。

正直、最近、ヒマになってきた。

しかし、油断していると、1時間におよぶ管理職の叱責タイムが始まり、そして、ストレスで潰される。確実に自分の胃腸がおかしくなっている。




人生最大の試練であることは言うまでもない。
児童養護施設で不名誉な扱いを受けた1年間は確かに、自分にとっての試練でもあった。
あの時とどちらが辛かっただろうか。




先週は18日火曜日に御茶ノ水でカウンセリングを受けてきた。
時系列的に真実を話すと、今回の件は確かに、管理職が理不尽であると理解を示してくれた。

そして、21日に精神神経科を受診する。
残念ながら、このときは何の所見も診断書も出してもらえなかった。
つまり、来週も同じ淡々とした事務仕事や掃除だけしかできないことが決まった。

これにはちょっと落胆した。

そして、また、その日、管理職から45分間に及ぶ叱責があった。



私のメンタルの原因は自分の鬱にあるのではない。確実にパワハラ上司によるものだ。
それを彼はわかっていない。

今の状況について考えること

今のブルーな状態は、けっして、鬱によるものだけではない、
パワハラ上司からの連日の叱責と過度な要求、そして、自分の指導が再開するめどが立たないことによるものだ。

以前の毎日スケボーを朝から練習していた日々に戻りたい。

カラオケでボイトレをしたり、絵を描いたり、猛烈に中国語を勉強していたあのころに戻りたい。

多分、自分の中で何か燃え尽きたものがあるのだろう。

パワハラ上司とのたたかい

DougBennett2146Semlin-640x477.jpg

2007年秋、
カナダのバンクーバーで、朝、鬱鬱としながら出勤のために歩いていたら、
とある家の住人から、「 Are you OK? 」と声をかけられた。


あのとき、私は上司から執拗なハラスメントを受けていたのだ。







どうして、自分はいつもパワハラの対象になってしまうのだろう。

おそらく、弱みを見つけやすい人間として相手から映っているのだろうと思う。




私が間違っているから、「正す」という相手の論理が常にまかり通る。
そして、私が落ち込む
さらに、その私を見て、相手はたたみかけてくる。
落ち込んで弱っている人間は、彼らにとって絶好の攻撃対象だからだ。




過去にも、
カナダのデイケアのマネージャー、
江戸川区の女剣戟、
江東区の女ハラッサー、
と、
何人ものハラッサーと出会ってきた。



今回の件は、カナダのマネージャーとの関係に似ている。
私が「正義感」をもってして対抗すると、相手は攻撃されたと思って逆上する。
そして、執拗に、私に対するハラスメントが日々のように続くのである。



そういった意味では、
今回のパワハラ上司は、私の人生史上最大の試練であるかもしれない。





しかし、考えようによっては良いのだ。
「家族」でないぶんだけ。
もしこれが、配偶者や親だったらどうだろうか。
逃げ場が無くなってしまう。

職場の上司はいつかは別れるのだから、
そのときまでの辛抱だと思えばいいのだ。





それにしても、カナダのデイケアで、
なんでああまでして働いていたのだろうか。
そうなんだ。
あのときは、
もし、辞めたら、もう職場のあてが無いと思ってたから、
だから、しがみついていたんだ。
本当は辞めても良かったのに。
でも、不思議なもので、一度パワハラの対象になると、逃げる意思さえ奪われてしまうんだ。


精神的に追い詰められるってやつだ。
そうなると、私のこころは操り人形の状態になってしまう。





「あなたのせいで鬱になったんだ」
って言っても、
「わたしは君のためを思って言ってるんだ!!!」
と、逆切れされる。そして、それは、彼の中では「本音」なのだ。
本気で自分が正しいことをしていると思っている。





私はもっと上手に立ち回らないといけないのかもしれない。
戦っていい相手と、
戦ったらいけない相手を見分ける、

近づいてはいけない相手を見分ける、

危険分子に近づかない、関係をもたない、弱みを見せない、






私は今の職場に依存し過ぎていたのかもしれない。
異動しても良かったのかもしれない。
いや、
今の状態だったら異動が正解だったのかもしれない。

もしくは、
そんなクソ上司のために大切な子どもたちとの関係を踏みにじられるのを受け入れる必要は無いのかもしれない。
つまり、
無視すること。
スルーすること。
相手にしないこと。





もっとも避けなければいけないことは、
大切な、自分の尊厳である、仕事とポジションを剥奪されること。
それだけは避けなければいけない。
それは、社会的な「氏」を意味しているし、
それこそ、人間的に氏んでしまうことを選ぶことになってしまうかもしれない。
それだけは避けなくては。





どうせ相手は人間の本質なんて見てない。
印象しか見てないんだから。
だから、演技でも、できる印象を見せていればいいんだ。

パワハラ上司から自分の尊厳を守るために、自分の仕事を守るために

1420424_20150615001411.jpg


昨日は長い一日だった。

私が2008年から通っているクリニックになかば強制的にパワハラ上司がのりこんできた。


そして、大勢の患者さんが待合室で待っているにも関わらず自分が言いたいことを長時間にわたって医師を拘束して大声で自分の言い分を叫び続けている。



彼ははっきり言って問題者だ。そして、まったく気付いていない。

「自分が問題者」であることに、
「自分がパワハラ加害者」であることに、
「自分が人を鬱にした原因」であることに、


全く気付いていない。

受付の人や看護師が困惑している。




・・・・・・





昨日は、午前中にやるべきことをやって、
そして、駅前の松屋でキムカル丼を食べて、
そして、13:30にはクリニックに並ぶ。

パワハラ上司が14:00にやってくる。
私は彼の当初穏やかだった態度に完全に騙された。

私と主治医が話しをし終えると、
パワハラ氏が医務室に入ってきて、
延々と大声で話し続ける。
明らかに困惑している看護師や患者。




そして、一度退室をして、駅近くの漫画喫茶で時間をつぶす。




16:30に再びクリニックにいく。
主治医は私に「1ヶ月か2ヶ月休職しませんか?他の病院に紹介状を書きますよ」
と、私の意志と事実に反したことを言い始めた。

完全にパワハラ上司の言いなりになっている。




絶対に、絶対に、!
二度と、!
休職なんてしたくない。そんなことされたら本当の鬱になって氏んでしまう。

なんとしてでもそれだけは避けないと。





頭の悪い人は「見た目」や「印象」で決め付ける。
事実よりも「思い込み」で決め付ける。
そして、それは必ずしも事実ではない。
そして、自分がやっていることで他者が困っていたとしても、彼は必ず言う、「君のことを思って言っているのに!!」「なんで分からないんだ!!」と。

彼の頭の中では、自分がやっていることが正義だからだ。

パワハラ加害者は常に同様のことを言う。
そして、相手が傷ついていたとしても、自分が正しいと思ってそれを相手に押し付ける。




私は彼の叱責のために毎日1時間以上拘束されている。
そして、それが過度なストレスになっている。
そして、鬱になる。
私の表情が暗くなると。


「ほら、私の言った通りじゃないか!!君はまだ回復していないんだよ!!だから休職しなさい!!!!」








だとしたら、
私は、自分の「印象」を自分で作り上げて「バカ頭上司」の考えを変えていくしかない。
あとは、申し訳ないけど、違うターゲットが現れるのを待つしかない。(その方には申し訳ないけど)





・・・・・・・・・・・




私のこの3年半は、確かに、仕事にまっとうにコミットしていなかった。いや、やっていたけど、ミスが結局目立ってしまったのかもしれない。
先は見えないけど、払拭していくしかない。





自分のことを慕っている子供たちがいるのに、
あんなバカな上司のために潰されるわけにはいかない。
そのためには、もっと上手く立ち回らないといけない。
もしかしたら、バカ上司と戦っちゃいけないのかもしれない。
次の「ターゲット」が現れるまで、距離をとらなきゃいけないのかもしれない。

少なくとも、
自分の大事な仕事を守るために、もっと作戦を立てて動かないといけない。
それは、発言、行動、仕事、それだけじゃなく、自分の表情や、印象も、
全て、自分を守るために、自分の仕事を守るために作戦を立てて上手に立ち回らないといけない。



新しく作ったゲーム(9年前にプログラムしたゲームの改変)とソースコードのアルゴリズム整理

game20221.png

今回も、一人一人に絵を描かせて、それをゲームにした。

ゲームのクオリティとしては、初代ファミコンのゼビウスかツインビー程度のもの。

プログラム自体は、私が数年前にプログラミングしたものを改変したものだ。



この夏休暇は、10時間ぐらい時間をかけてプログラムを改変し、
そして、子どもたちの絵を一つずつプログラムに取り込む作業をしていた。
なおかつ、いつまで経っても提出しない子どもがいたので、誰が、誰がまだ出していないのか確認する作業に本当に苦労した。

しかしながら、あと、4人取り込めば本当の意味でゲームが完成する。



そして、これから、このJavaアプレットのソースコードをJavascriptに書き換えるために、ソースコードのアルゴリズムを再整理していこうと思っている。

この下、ソースコード。



アプレットメインクラス

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package yokoshoot218.jp.ohtsuki.minigame;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.sound.sampled.Clip;


public class YokoShootMainApplet extends GameHoneGumiApplet {
public static final int GAMEN_W = 624;
public static final int GAMEN_H = 480;

BufferedImage charaimage1,charaimage2,charaimage3,tikeiimage, startimage, biBoss, biJiki, biItem,backimage1,bitimage,biBoss2,biBoss3,biBoss4,biBoss5,biBoss6,biBoss7,backgasimage,backimage2,backimage3,backimage4,backimage5,backimage6,kowareimage,barrierimage,loveimage;
        Jiki jiki;
        int zanki = 6;
        int iHappy = 0;        
        int iHeart = 0;           
        Bit bit;
        Boss boss;
        Barrier barrier;
        Boss2 boss2;
        boolean upkey, downkey, rightkey, leftkey, spacekey;
ArrayList jikitamas, tekis, tekitamas, bakuhatsus, items, kowares;
int rensya=0;
int tekitamarate = 100;
int score, highscore, stagenum=1;
Clip seClip1,seClip2,seClip3,seClip4,seClip5;
        int iBackgroundX = 0;
        int iBackgroundX2 = 0;
TikeiMap tikeimap;
        Koware koware;
        int iBossTairyoku = 20;
        int barrierup = 10;
        boolean barrierflag = false;
        int iGotItemNum = 0;

         public void init() {
super.init(GAMEN_W, GAMEN_H, "GAME");
setBackground(Color.BLACK);
                
try {
charaimage1 = ImageIO.read(getClass().getResource("chara01.PNG"));
                        charaimage2 = ImageIO.read(getClass().getResource("chara02.PNG"));
                        charaimage3 = ImageIO.read(getClass().getResource("chara03.png"));
        
                        bitimage = ImageIO.read(getClass().getResource("bit.png"));
                        backimage1 = ImageIO.read(getClass().getResource("bg1.png"));
                        backimage2 = ImageIO.read(getClass().getResource("bg2.png"));
                        backimage3 = ImageIO.read(getClass().getResource("bg3.png"));
                        backimage4 = ImageIO.read(getClass().getResource("bg4.png"));
                        backimage5 = ImageIO.read(getClass().getResource("bg5.png"));
                        backimage6 = ImageIO.read(getClass().getResource("bg6.png"));
                        backgasimage = ImageIO.read(getClass().getResource("backgas.png"));
tikeiimage = ImageIO.read(getClass().getResource("tikeidata01.PNG"));
                        barrierimage = ImageIO.read(getClass().getResource("barrier.png"));
                        kowareimage = ImageIO.read(getClass().getResource("tikeidata01.PNG"));
startimage = ImageIO.read(getClass().getResource("start.jpg"));
                        biBoss = ImageIO.read(getClass().getResource("boss.png"));
                        biBoss2 = ImageIO.read(getClass().getResource("boss2.png"));
                        biBoss3 = ImageIO.read(getClass().getResource("boss3.png"));
                        biBoss4 = ImageIO.read(getClass().getResource("boss4.png"));
                        biBoss5 = ImageIO.read(getClass().getResource("boss5.png"));
                        biBoss6 = ImageIO.read(getClass().getResource("boss6.png"));
                        biBoss7 = ImageIO.read(getClass().getResource("boss7.png"));
                        biJiki = ImageIO.read(getClass().getResource("jiki.png"));
                        biItem = ImageIO.read(getClass().getResource("power.png"));
                        loveimage = ImageIO.read(getClass().getResource("love.png"));
                        
} catch (IOException e) {
e.printStackTrace();
}
seClip1 = otoYomikomi("burst01.wav");
seClip2 = otoYomikomi("fm005.wav");
seClip3 = otoYomikomi("smoke03.wav");
                seClip4 = otoYomikomi("pow.wav");
                seClip5 = otoYomikomi("se_sac03.wav");
 
goStartGamen();
}

public void initStageStart() {
jiki = new Jiki(GAMEN_W/2,GAMEN_H/2,biJiki);
jikitamas = new ArrayList();
tekis = new ArrayList(); 
tekitamas = new ArrayList();
bakuhatsus = new ArrayList();
                items = new ArrayList();
                kowares = new ArrayList();
upkey=false; downkey=false; rightkey=false;
leftkey=false;
tikeimap = new TikeiMap(tikeiimage,"00" + stagenum + ".map","001.pat");
                koware = new Koware(tikeiimage,"00" + stagenum + ".map","001.pat");

                if (gamemainstate == GM_ZAKO) {
                   
midiseq.setTickPosition(0);
midiseq.start();
}

public void initStageClear() {
stagenum = stagenum+1;
                if(stagenum > 6)stagenum=1;
score = score + stagenum * 100;                
                if(score%1000 == 0)zanki++;

                
                iBackgroundX = 0;
midiseq.stop();
                iBossTairyoku = (40*stagenum)/2;
                }

public void initGameOver() {
if (score>highscore) highscore = score;
score = 0;
                iHappy = 0;
                iHeart = 0;
                
                iBackgroundX = 0;
                iBackgroundX2 = 0;
                iGotItemNum = 0;
                barrierup = 10;
                barrierflag = false;
midiseq.stop();
seClip3.setFramePosition(0);
seClip3.start();
                iBossTairyoku = 100;
                zanki--;
                gamemainstate = GM_ZAKO;
                
                stagenum++;
                if(stagenum >= 7)stagenum = 1;

}

public void keyPressedGameMain(int key) {
if (key==KeyEvent.VK_UP) upkey=true;
if (key==KeyEvent.VK_DOWN) downkey=true;
if (key==KeyEvent.VK_LEFT) leftkey=true;
if (key==KeyEvent.VK_RIGHT) rightkey=true;
//if (key==KeyEvent.VK_SPACE) spacekey=true;
            
                jiki.setKey(upkey, downkey);
}
public void keyReleasedGameMain(int key) {
if (key==KeyEvent.VK_UP) upkey=false;
if (key==KeyEvent.VK_DOWN) downkey=false;
if (key==KeyEvent.VK_LEFT) leftkey=false;
if (key==KeyEvent.VK_RIGHT) rightkey=false;
//if (key==KeyEvent.VK_SPACE) spacekey=false;

                jiki.setKey(upkey, downkey);
}

public void runStartGamen(Graphics g) {
g.drawImage(startimage,0,0,this);
                g.setFont(new Font("SansSerif",Font.PLAIN,24));
drawStringCenter("コントローラーの 1 のボタンをおすとはじまるよ",20,g);
}

public void runStageStart(Graphics g) {
g.setColor(Color.BLACK);
g.fillRect(0,0,GAMEN_W,GAMEN_H);
g.setColor(Color.CYAN);
g.setFont(new Font("SansSerif",Font.BOLD,60));
drawStringCenter("ステージ"+ stagenum,200,g);
drawStringCenter("ゲームスタート!",280,g);                
                spacekey=false;
}

public void runStageClear(Graphics g) {
g.setColor(Color.CYAN);
g.setFont(new Font("SansSerif",Font.BOLD,60));
drawStringCenter("ステージクリアー",200,g);
}

public void runGameMain(Graphics g) {
                
g.clearRect(0,0,GAMEN_W,GAMEN_H);
                iBackgroundX-=2;
                if (iBackgroundX < -1600) {                    
                iBackgroundX = 0;
                }
                if(stagenum == 1){
g.drawImage(backimage1 ,iBackgroundX,0,this);
g.drawImage(backimage1 ,iBackgroundX + 1600,0,this);
                }else if(stagenum == 2){
                g.drawImage(backimage2 ,iBackgroundX,0,this);
g.drawImage(backimage2 ,iBackgroundX + 1600,0,this);
                }else if(stagenum == 3){
                g.drawImage(backimage3 ,iBackgroundX,0,this);
g.drawImage(backimage3 ,iBackgroundX + 1600,0,this);
                }else if(stagenum == 4){
                g.drawImage(backimage4 ,iBackgroundX,0,this);
g.drawImage(backimage4 ,iBackgroundX + 1600,0,this);
                }else if(stagenum == 5){
                g.drawImage(backimage5 ,iBackgroundX,0,this);
g.drawImage(backimage5 ,iBackgroundX + 1600,0,this);
                }else{
        g.drawImage(backimage6 ,iBackgroundX,0,this);
g.drawImage(backimage6 ,iBackgroundX + 1600,0,this);
            }
                iBackgroundX2-=3;
                if (iBackgroundX2 < -1600) {
                      iBackgroundX2 = 0;
                }
g.drawImage(backgasimage,iBackgroundX2,0,this);
g.drawImage(backgasimage,iBackgroundX2 + 1600,0,this);


                
                Jiki jikiCheck = jiki.getTest();
                jikiCheck.move(upkey,downkey,leftkey,rightkey);   
                        
if(tikeimap.isAtari(jikiCheck.getx1(),jikiCheck.gety1())==true ||
tikeimap.isAtari(jikiCheck.getx2(),jikiCheck.gety2())==true) {
                    
                    jiki.osare();
    
}else if(koware.isAtari(jikiCheck.getx1(),jikiCheck.gety1())==true ||
koware.isAtari(jikiCheck.getx2(),jikiCheck.gety2())==true) {
                    
                    jiki.osare();
    
}
                else {
                    jiki.move(upkey,downkey,leftkey,rightkey);                    
                }
                
                if (jiki.isSotoNiDeta()) {
                    goGameOver();
                }
            if (spacekey == true && rensya==0){
jikitamas.add(new JikiTama(jiki.chara_x+36,
jiki.chara_y+24,charaimage1,12, 0));
                        
                        if (iGotItemNum >= 3) {
                            jikitamas.add(new
JikiTama(jiki.chara_x+36,jiki.chara_y+24,charaimage1, 12, -4));
                        }
                        if (iGotItemNum >= 4) {
                            jikitamas.add(new JikiTama(jiki.chara_x+36,jiki.chara_y+24,charaimage1, 12, 4));
                        }
                        if (iGotItemNum >= 5) {
                            jikitamas.add(new JikiTama(jiki.chara_x,jiki.chara_y+24,charaimage1, -12, -4));
                        }
                        if (iGotItemNum >= 6) {
                            jikitamas.add(new JikiTama(jiki.chara_x,jiki.chara_y+24,charaimage1, -12, 4));
                        }
                        if (iGotItemNum >= 8) {
                            jikitamas.add(new JikiTama(jiki.chara_x-24,jiki.chara_y+48,charaimage1, 12, 0));
                        }
                        if (iGotItemNum >= 10) {
                            jikitamas.add(new JikiTama(jiki.chara_x-24,jiki.chara_y-36,charaimage1, 12, 0));
                        }
                       
rensya = 30;
}
                         if (iGotItemNum >= 8) {  
                          bit = new Bit(jiki.chara_x-48,jiki.chara_y+48,bitimage);
                            bit.draw(g, this);

                        }
                         if (iGotItemNum >= 10) {
                            bit = new Bit(jiki.chara_x-48,jiki.chara_y-36,bitimage);
                            bit.draw(g, this);

                        }

                        if (iGotItemNum >= 15) {
                            if (!barrierflag) {
                                barrierup = 10;
                                barrierflag = true;
                            }
                            
                            barrier = new Barrier(jiki.chara_x+64,jiki.chara_y+6,barrierimage);
                            barrier.draw(g, this);
                        }


if (rensya>0) rensya = rensya-1;
                
jiki.draw(g,this);
                
Iterator it = jikitamas.iterator();
while(it.hasNext()==true){
JikiTama jt = (JikiTama)it.next();
jt.draw(g,this);
if(jt.isSotoNiDeta()==true) it.remove();
}
                
it = items.iterator();
while(it.hasNext()==true){
Item bh = (Item)it.next();
bh.draw(g,this);
if(bh.isSotoNiDeta()==true) it.remove();
}
                
it = bakuhatsus.iterator();
while(it.hasNext()==true){
Bakuhatsu bh = (Bakuhatsu)it.next();
bh.draw(g,this);
if(bh.isSotoNiDeta()==true) it.remove();
}

                if (gamemainstate == GM_ZAKO) {
                    
                    runGameMainZako(g);
                }else {
                    
                    runGameMainBoss(g);


                }

g.setColor(Color.WHITE);
g.setFont(new Font("SansSerif",Font.PLAIN,30));
                
    
                g.drawString("スコア"+iHappy,2,40);
                g.drawString("ボスのハート€"+iHeart, 2,80);
                
                g.setColor(Color.RED);
                
                g.fillRect(20, GAMEN_H - 5, iGotItemNum * 50, 15);

        }
public void runGameMainBoss(Graphics g) {

               if (boss == null) {
                   midiseq.stop();
                   midiYomikomi("bossbgm2.mid");
                   midiseq.setTickPosition(0);
                   midiseq.start();//2
                   if(stagenum == 1){
                    boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss3, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-10,10,50,0,-20,50,10,10,50");
                   }else if(stagenum == 2){
                    boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss4, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-5,5,50,0,-10,50,5,5,50,-3,3,50,0,-6,50,3,3,50");
                   }else if(stagenum == 3){
                    boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss5, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-15,0,50,15,0,50,0,-5,50,-15,0,50,15,0,50,0,10,50,-15,0,50,15,0,50,0,-5,50");
                   }else if(stagenum == 4){
                    boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss2, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-10,10,50,0,-20,50,10,10,50,-10,0,50,10,0,50,-10,0,50,10,0,50,-10,-10,50,0,20,50,0,-20,50,10,10,50");
                   }else if(stagenum == 5){
                    boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss6, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-15,2,50,15,-2,50,0,-5,50,-15,2,50,15,-2,50,0,10,50,-15,2,50,15,-2,50,0,-5,50");
                   }else{
                    boss = new Boss(GAMEN_W - 150, GAMEN_H/2 - 100, biBoss7, "-1,-3,50,-1,3,50,1,-3,50,1,3,50,-10,10,50,0,-20,50,10,10,50,-10,0,50,10,0,50,-10,0,50,10,0,50,-10,-10,50,0,20,50,0,-20,50,10,10,50,-1,-3,50,-1,3,50,1,-3,50,1,3,50,-15,0,50,15,0,50,0,-5,50,-15,0,50,15,0,50,0,10,50,-15,0,50,15,0,50,0,-5,50,-1,-3,50,-1,3,50,1,-3,50,1,3,50,-10,10,50,0,-20,50,10,10,50");        
                   }
                }
                
                boss.draw(g,this);
               

                if (Math.random()*tekitamarate<2){
tekitamas.add(new TekiTama(boss.chara_x-8, boss.chara_y+24,jiki.chara_x, jiki.chara_y, charaimage1));
}
                Iterator it3 = tekitamas.iterator();
                        while(it3.hasNext()==true){
TekiTama tt = (TekiTama)it3.next();
if(tt.isAtari(jiki)){
                            
                            iHappy += 1;
                            iHeart += 1;
                            seClip5.stop();
seClip5.setFramePosition(0);
                                seClip5.start();
                              
                         
}
}
                it3 = tekitamas.iterator();
while(it3.hasNext()==true){
TekiTama tm = (TekiTama)it3.next();
tm.draw(g,this);
if(tm.isSotoNiDeta()==true) it3.remove();
}
                
                
                Iterator it2 = jikitamas.iterator();
                while(it2.hasNext()==true){
                        JikiTama jt = (JikiTama)it2.next();
                        if(boss.isAtari(jt)==true) {
                                bakuhatsus.add(new Bakuhatsu(jt.chara_x, jt.chara_y, charaimage1));

                                it2.remove();
                                iBossTairyoku--;
                                score = score+10;
                                if(score%1000 == 0)zanki++;

                                seClip1.stop();
                                seClip1.setFramePosition(0);
                                seClip1.start();
                                break;
                        }
                }
                
                if(boss.isAtari(jiki)){
                    
                    if(barrierflag){
                                barrierup -=0;                                 
                                if(barrierup <= 0){
                                barrierflag = false;

                                }
                    }                                
                    if(!barrierflag){
                        iGotItemNum -= 0;                        
                        if(iGotItemNum < 0){
                               
                            }
                        }
                }
                if(iHeart > 30){
                    boss = null;
                    midiseq.stop();
                      
                    midiYomikomi("bgm1.mid");
                    midiseq.setTickPosition(0);
                    gamemainstate = GM_ZAKO;
                    iHeart = 0;
                    goStageClear();
                    }
        }
public void runGameMainZako(Graphics g) {
                
                if(stagenum == 0 || stagenum == 1){
                    
                    ArrayList al = tikeimap.getNewTeki(charaimage2);
                    if (al.size()>0) tekis.addAll(al);
                }else if(stagenum == 2 || stagenum == 3){
                    
                    ArrayList al = tikeimap.getNewTeki(charaimage1);
                    if (al.size()>0) tekis.addAll(al);
                }
                else{
                    
                    ArrayList al = tikeimap.getNewTeki(charaimage3);
                    if (al.size()>0) tekis.addAll(al);
                }

Iterator it = tekis.iterator();
while(it.hasNext()==true){
Teki tk = (Teki)it.next();
if (Math.random()*tekitamarate<0.0){
                                tekitamas.add(new TekiTama(tk.chara_x-8, tk.chara_y+24,
jiki.chara_x, jiki.chara_y, charaimage1));
seClip2.stop();
seClip2.setFramePosition(0);
seClip2.start();
}
}
                Iterator it4 = kowares.iterator();
while(it4.hasNext()==true){
Koware ko = (Koware)it4.next();

}

tikeimap.draw(g,this);
it = tekis.iterator();
while(it.hasNext()==true){
Teki tk = (Teki)it.next();
tk.draw(g,this);
if(tk.isSotoNiDeta()==true) it.remove();
}
it = tekitamas.iterator();
while(it.hasNext()==true){
TekiTama tm = (TekiTama)it.next();
tm.draw(g,this);
if(tm.isSotoNiDeta()==true) it.remove();
}
it = tekis.iterator();
while(it.hasNext()==true){
Teki tk = (Teki)it.next();
Iterator it2 = jikitamas.iterator();
while(it2.hasNext()==true){
JikiTama jt = (JikiTama)it2.next();
if(tk.isAtari(jt)==true) {
                                   
                                    bakuhatsus.add(new Bakuhatsu(tk.chara_x, tk.chara_y, charaimage2));
                                    
                                        bakuhatsus.add(new Bakuhatsu(tk.chara_x, tk.chara_y, charaimage1));
                                    
                                            if (Math.random()*10<6){
                                                items.add(new Item(tk.chara_x, tk.chara_y, biItem));
                                            }
it.remove();
it2.remove();
score = score+10;
                                        if(score%1000 == 0)zanki++;
                                       
seClip1.stop();
seClip1.setFramePosition(0);
seClip1.start();
break;
}
}
}

it = items.iterator();
while(it.hasNext()==true){
Item tk = (Item)it.next();
if(tk.isAtari(jiki)){
                                
                                it.remove();
                                
                                iGotItemNum++;
                                if(iGotItemNum > 15)iGotItemNum = 15;
                                score = score+10;                
                                if(score%1000 == 0)zanki++;

seClip4.stop();
seClip4.setFramePosition(0);
                                seClip4.start();

}
}
                
it = tekis.iterator();
while(it.hasNext()==true){
Teki tk = (Teki)it.next();
                        
                        tk.isAtari(jiki);
if(tk.isAtari(jiki)){
                            it.remove();
                            
                            
                            iGotItemNum++;
                            if(iGotItemNum > 15)iGotItemNum = 15;
                            seClip5.stop();//
                            seClip5.setFramePosition(0);
                            seClip5.start();
                            iHappy += 1;
                            if(barrierflag){
                                barrierup -=0;                                 
                                if(barrierup <= 0){
                                barrierflag = false;

                                }
                            }
                                if(!barrierflag){
                                iGotItemNum -= 0;
                                if(iGotItemNum < 0)
break;
                                }
                            
}
}
it = tekitamas.iterator();
while(it.hasNext()==true){
TekiTama tt = (TekiTama)it.next();
if(tt.isAtari(jiki)){
                            
                             if(barrierflag){//2019114hazusu
                                barrierup -=1;
                                 if(barrierup <= 0){
                                barrierflag = false;
                                
                                }
                            }
                                if(!barrierflag){
                                iGotItemNum -= 1;
                                if(iGotItemNum < 0)
break;
        }
                          
                    }
}


if(tikeimap.isMapEnd()==true) gamemainstate = GM_BOSS;

   
}

public void runGameOver(Graphics g) {
            if(zanki<0){                
                stagenum = 1;
                
                zanki = 6;
            }
g.setColor(Color.RED);
g.setFont(new Font("SansSerif",Font.BOLD,80));
drawStringCenter("ゲームオーバー",220,g);
g.setFont(new Font("SansSerif",Font.PLAIN,24));
drawStringCenter("④ のボタンをおしてください,300,g);
}

}



/*アルゴリズム*/

main appletクラス アルゴリズムの整理
importの宣言
GameHoneGumiAppletクラスの継承
 画面は横624ピクセル
 画面は縦480ピクセル
画像の追加
変数の宣言
init関数
 画面の大きさ・色の定義
 敵キャラクター、背景などの読み込み
 サウンドの読み込み
 goStartGamen関数の開始
initStageStart関数
 自機、弾、敵、敵の弾などの生成
 キーイベントをfalseにする
 地形マップの生成(別ファイルに地形データがある)
 もしgamemainstateがGM_ZAKOならBGMを最初から開始する
initStageClear関数
 ステージ数、スコアなどの定義
 iBackgroundXが0ならBGMを停止する
 ボスの体力の定義
initGameOver関数
 ゲームオーバーになったら0にする変数を定義
keyPressedGameMain関数
 キーイベント処理
keyReleasedGameMain関数
 キーイベント処理
runStartGamen関数
 初期画面の描画
runStageClear
 ステージクリア画面の描画
runGameMain関数
 画面を再生成する
 背景を2ピクセルずつ動かす
 1600ピクセルになったらiBackgroundを0にする
 ステージによる背景の定義
 tikeimap.isAtari 自機が背景の壁に当たっているかチェックする
  当たっていれば押されたと判定
  自機が画面の外に押されたらgoGameOver(ゲームオーバー)
 もし、spacekeyがtrueで、rensyaが0なら弾を生成する
 iGotItemNumの数値によって発射する弾の数を増やす、ビットやバリアーを増やす
 rensyaを30にする(弾を発射する頻度)
 rensyaが0より大きければ-1する
 自機の描画
 Iterator 自機の弾の生成、画面の外に出たら消す
 Iterator アイテムの生成、画面の外に出たら消す
 Iterator 爆発画面の生成、画面の外に出たら消す
 もし、gamemainstateがGM_ZAKOなら
  runGameMainZakoを開始
 そうでなければ、
  runGameMainBossを開始
 画面内の文字の描画
 public void runGameMainBoss関数
  bossがnullならば
  ボスのBGMを流す
  ステージによってそれぞれのボスを描画する
  ボスの動きの定義
  ボスの描画
  ボスの弾の生成
  Iterator 敵の弾の生成
   もし、ボスの弾と当たっていたら得点を増やす、サウンドを鳴らす
   ボスの弾が外に出たら消す
   自機の弾とボスが当たったら爆発を描画
   ボスの体力の処理
   ボスと当たったらバリアーの減少
   ハートの数が30以上ならば
    bossをnullにする
    BGMを止める
    gamemainstateをGM_ZAKOにする
    goStageClear関数の開始
  public void runGameMainZako関数の開始
   tikeimap(地形マップ)から敵データを読み込む
   敵の弾の生成
   BGMを流す
   壊れる壁の生成
   tikeimap(地形マップ)の描画
   敵の描画
   画面の外に出たら消す
   敵の弾の描画
   画面の外に出たら消す
   自機の弾と敵が当たったら爆発を生成
   敵を消去
   サウンドを流す
   アイテムの生成
   自機と当たったら消す
   スコアを増やし、1000点ごとにzankiを増やす
   敵と自機が当たったらバリアーの減少の処理
   tikeimap.isMapEndがtrueならばgamemainstateをGM_BOSSにする
public void runGameOver関数
 ゲームオーバー画面の描画



/*ゲーム骨組みソース*/

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package yokoshoot218.jp.ohtsuki.minigame;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Insets;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferStrategy;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiUnavailableException;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.JApplet;
import javax.swing.JFrame;


public abstract class GameHoneGumiApplet extends JApplet implements Runnable  {
public static final int GS_STARTGAMEN = 0;
public static final int GS_STAGESTART = 1;
public static final int GS_STAGECLEAR = 2;
public static final int GS_GAMEOVER = 3;
public static final int GS_GAMEMAIN = 4;
        
        public static final int GM_ZAKO = 0;
        public static final int GM_BOSS = 1;

private int gamestate;
        protected int gamemainstate;
//public JFrame frame1;
//public BufferStrategy bstrategy;
public Sequencer midiseq = null;
        public Sequencer midiseq2 = null;
private int waittimer;
public void init(int w,int h, String title){
//frame1 = new JFrame(title);
//frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(Color.WHITE);
//setResizable(false);
setVisible(true);
Insets insets = getInsets();
setSize(w + insets.left + insets.right,
h + insets.top + insets.bottom);
//frame1.setLocationRelativeTo(null);
//frame1.createBufferStrategy(2);
//bstrategy = frame1.getBufferStrategy();
//frame1.setIgnoreRepaint(true);
                   requestFocusInWindow(); 
                
addKeyListener(new GameHoneGumiApplet.MyKeyAdapter());
                
                
                Thread myThread = new Thread(this);
                myThread.start();
}
public void goStartGamen(){
gamestate = GS_STARTGAMEN;
                gamemainstate = GM_ZAKO;
//Timer t = new Timer();
//t.schedule(new GameHoneGumiApplet.MyTimerTask(), 10, 30);
}
public void goStageStart(){
initStageStart();
waittimer = 100;
gamestate = GS_STAGESTART;
}
public void goStageClear(){
initStageClear();
waittimer = 100;
gamestate = GS_STAGECLEAR;
}
public void goGameMain(){
gamestate = GS_GAMEMAIN;
}
public void goGameOver(){
initGameOver();
gamestate = GS_GAMEOVER;
}
public abstract void initStageStart();
public abstract void initStageClear();
public abstract void initGameOver();
public abstract void keyPressedGameMain(int keycode);
public abstract void keyReleasedGameMain(int keycode);
public void drawStringCenter(String str, int y, Graphics g) {
int fw = getWidth() / 2;
FontMetrics fm = g.getFontMetrics();
int strw = fm.stringWidth(str) /2 ;
g.drawString(str,fw-strw,y);
}
public Clip otoYomikomi(String fname) {
Clip clip = null;
try {
AudioInputStream aistream = AudioSystem.
getAudioInputStream(getClass().getResource(fname));
DataLine.Info info = new DataLine.Info(Clip.class, aistream.getFormat());
clip = (Clip)AudioSystem.getLine(info);
clip.open(aistream);
} catch (UnsupportedAudioFileException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (LineUnavailableException e) {
e.printStackTrace();
}
return clip;
}
  public void midiYomikomi(String fname) {
if (midiseq == null){
try {
midiseq = MidiSystem.getSequencer();
midiseq.open();
} catch (MidiUnavailableException e1) {
e1.printStackTrace();
}
}
try {
Sequence seq = MidiSystem.getSequence(getClass().getResource(fname));
midiseq.setSequence(seq);
} catch (InvalidMidiDataException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public abstract void runStartGamen(Graphics g);
public abstract void runStageStart(Graphics g);
public abstract void runStageClear(Graphics g);
public abstract void runGameMain(Graphics g);
public abstract void runGameOver(Graphics g);

private class MyKeyAdapter extends KeyAdapter{
public void keyPressed(KeyEvent ev) {
if (gamestate == GS_GAMEMAIN){
keyPressedGameMain(ev.getKeyCode());
}
}
public void keyReleased(KeyEvent ev) {
int keycode = ev.getKeyCode();
switch(gamestate){
case GS_GAMEMAIN:
keyReleasedGameMain(keycode);
break;
case GS_STARTGAMEN:
if (keycode == KeyEvent.VK_P) goStageStart();
break;
case GS_GAMEOVER:
if (keycode == KeyEvent.VK_R) goStartGamen(); }
}
}
        
        public void run() {
            try {
                while(true){
                    repaint();
                    Thread.sleep(30);
                }
            }catch(Exception e){}
        }
        
        public void paint(Graphics g) {
            
            Dimension size = getSize();
            
            Image back = createImage(size.width, size.height);
            
            Graphics buffer = back.getGraphics();
Insets insets = getInsets();
buffer.translate(insets.left, insets.top);
switch(gamestate){
case GS_STARTGAMEN:
runStartGamen(buffer);
break;
case GS_STAGESTART:
runStageStart(buffer);
waittimer = waittimer-1;
if (waittimer < 0) goGameMain();
break;
case GS_STAGECLEAR:
runStageClear(buffer);
waittimer = waittimer-1;
if (waittimer < 0) goStageStart();
break;
case GS_GAMEMAIN:
runGameMain(buffer);
break;
case GS_GAMEOVER:
runGameOver(buffer);
break;
}
                                g.drawImage(back, 0, 0, null);
g.dispose();
}

}


/*アルゴリズム整理*/

importの宣言
public abstract class GameHoneGumiApplet extends JApplet implements Runnable関数
 ステージ画面の定義(0~4)
 ゲームモードの定義(GM_ZAKO GM_BOSS)
  midiseq(MIDI音源)をnullにする
 waittimerの宣言
public void init関数
 画面の設定
 キーリスナーの追加
 スレッドの生成
 スレッドの開始
public void goStartGamen関数
 スタート画面の開始
public void goStageStart
 initStageStart関数
public void goStageClear
  initStageClear関数
 waittimerを100にする

public void goGameMain

public void goGameOver関数
 initGameOver関数

public abstract void initStageStart();
public abstract void initStageClear();
public abstract void initGameOver();
public abstract void keyPressedGameMain(int keycode);
public abstract void keyReleasedGameMain(int keycode);

public void drawStringCenter関数
 文字の描画の設定

public Clip otoYomikomi関数
 Clipをnullにする
 音響ファイル(効果音)の読み込み

public voidmidiYomikomi関数
 midi音源の読み込み(BGM)

public abstract void runStartGamen(Graphics g);
public abstract void runStageStart(Graphics g);
public abstract void runStageClear(Graphics g);
public abstract void runGameMain(Graphics g);
public abstract void runGameOver(Graphics g);

private class MyKeyAdapter extends KeyAdapter関数
 キーイベント
 gamestateによってゲームの画面を変える

public void run関数
 スレッドを30ミリ秒ごとにsleepして再描画

public void paint関数
 画面の描画の設定
 gamestateによってステージを変える



シンママと3歳半の娘と葛西臨海公園に行く、そっけないシンママの態度が気になる/老後のベトナム移住への夢/USBメモリがクラッシュする、そして、10時間の復旧作業、それから、アマゾンにクレームの電話を入れる

kasarin.jpg


昨日、ベトナム人のシンママと、3歳半の娘と葛西臨海公園に行った。


娘は人懐っこいんだけど、
ママが結構、無言で、そっけない。
「脈無いのかな?」
と不安になる自分。


ベトナム人で日本語が不自由だから、口数が少ないのかな。


せめて、笑顔でいてくれたらいいのに。




11時に葛西臨海公園駅で待ち合わせ。
相手は娘と自転車で来ました。

それから、園内バスに乗って。

チーズドックを食べて。

そして、葛西臨海水族園に行きました。

その後、近くの広場で休憩をして解散。




私は言いました。
ホーチミンに暮らしても良いと。
ベトナム語を勉強しても良いと。

そしたら、ちょっと仏頂面のシンママにも表情が見えました。


本気です。
本気でホーチミンに暮らしても良いと思ってます。
シンママと結婚したら、正式にベトナムで暮らせますから。




というのも、私の老後の資金が不安で。
ベトナムは当然日本より安いので。
そういった意味合いでベトナムで老後(60歳以降)を過ごすことを考えています。



多分、年金はベトナムでも受け取れるでしょうし。
日本人向けの医療機関や働き口もあるでしょうし。

私は、英語と中国語ができるので多分、仕事も見つけやすいでしょうし。
もし、本気でベトナムに暮らすんだとしたら、もちろん、100%本気でベトナム語を勉強しますよ。


英語や、中国語をマスターした自分ですし。
韓国語もそれなりに勉強した自分ですから。
ベトナム語もいけるんじゃないかと考えています。


それに、ベトナム語がもっと分かれば、今は仏頂面で無口なシンママともっと交流できるかもしれないし。

ちなみに、オンライン中国語サイトのCCレッスンには、ベトナム語を教えてくれる講師もいます。



英語、中国語、韓国語、ベトナム語を話せたら、「ペンタリンガル」ですね。

(モノリンガル→バイリンガル→トリリンガル→クワドリリンガル→ペンタリンガル(5ヶ国語)





・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・




hukkyuu.jpg


大事なUSBメモリがクラッシュしました。
パソコンに差し込んでも、読み込めません、フォーマットしてください。ってなってしまう。

それで、いま、復旧天使っていうソフトで復旧作業をしている。


10時間ぐらいかかっている。



そして、アマゾンにクレームの電話を入れました。
そしたら、同じ金額のアマゾンギフトクーポンをもらえるとのこと。
そして、USBメモリーは返品しないで良いとのことでした。




まあ、必要なデータが復旧してくれれば、私としては問題が無いのですが。


安倍さんの国葬、安倍さん、日本のために本当にありがとう/鬱からの復帰、仕事への不満/職場での韓国語翻訳デビュー


24年ぶりの大危機です




とにかく、株価が暴落して、私のダブルインバースが上昇して欲しいです。
・・・・お願い。




安倍元総理 国葬【ノーカット】





安倍さんが亡くなったとき、本当に悲しかった。
安倍さん、大好きだった。
本当に、死んで欲しくなかった。

安倍さん、今まで、ありがとう。
さようなら。
日本をありがとう。



でも、昨日、銃で狙撃した犯人に報復するなんてニュースでやっていたけど、
それは違うんじゃないかなと思う。

そんなことしても誰も幸せにならない。


国葬に対する是非はあったけど、
私は国葬で良かったと思う。
それは、日本のためにがんばってくれた人のための敬意だから。



あと、警察の警備が甘かったっていう批判。
確かにそれは否めない。
でも、これまでだって、安倍さんは街頭演説をたくさんしてきたわけだし。
それを今回のことを切り取って警察をバッシングするのいかがなものかとは思う。

日本は平和な国でこれまでも警察がそれを守ってきてくれたわけだし。
確かに、警備が甘かったのだろうけど。


とにかく、起こってしまったことについては残念です。





あきえ夫人。かわいそう。




・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・




鬱病から復帰しました。
先週は1週間、身辺の整理を中心にしてました。
今回のことがあって、管理職や主任が私の仕事のやり方にあれこれと介入されて、本当にイラっとすることが多く、
怒りすら覚えました。
自分の専門職としての尊厳を踏みにじられたような気持ちにすらなりました。

私の仕事の主体性はいったいどうなったの?
若手の新人職員じゃないんだけど。
あれこれ言われて、本当に、一人になったときに泣いてしまった。
もう、こんなの嫌だ。





また、アルコールを飲んでしまっています。
そして、胃腸がぎゅるぎゅるになっています。
鬱が治ったら、気持ちを切り替えて禁酒をします。




・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・



昨日、職場で「韓国語で資料の翻訳をして欲しい」と言われた。
それはうれしいなあ。
英語、中国語に続いて韓国語でも活躍できれば。


また、これから自分の可能性は伸ばしていきたいと思います。


食欲が戻った。/葛西でシンママとのデート

kimukaru.jpg


鬱で休職中の最終日、

胃部不快感のあるレクサプロを辞めてみたら、朝から食欲があった。

レクサプロを辞めて正解だった。




食欲が出てきた。
朝から、松屋のキムカル牛丼を頼む。
美味しい。

こんなに美味しいなんて。




そして、葛西に行ってベトナム人の女性と3歳半の娘とジョナサンに行く。
そこでもササミのフライを食べた。


食欲は戻ってきた。
レクサプロを辞めて正解だった。




3歳半の娘はとてもかわいくて、人懐っこかった。




その後、セブンのからあげ棒を2本。
もう、大分、食欲は戻った。

家の大掃除がついに完了、しかし、鬱は胸のもやもやが残る

月曜日から仕事に復帰できるんだろうか。

顔の辺りがもやもや、しわしわ、して

それでも、
気になってた、肋骨の痙攣はいつのまにか消えてたけど。



きょうは大掃除の総まとめをした。


本当に部屋がきれいになった。





パソコンのデータを整理して、
部屋中の要らない物を大量に捨てて、
本を大量に捨てて、
シュレッダーにかけて、
黒歴史を処分して、
掃除機をかけて、
古いパソコンとプリンタをリネットジャパンに持っていってもらって、


ようやく、この部屋はきれいになった。






これ以上、家でもやもやしてても、余計に鬱に悪いだけだし、
だから、思い切って、職場に行こう。って。




今週はじめにあったシンママとの離縁。
悲しい電話。
そして、焦り。

焦って見つけた次の出会い。

33歳のベトナム人。
まだ、確実につながっていない。

でも、この出会いは手放したくない。






手を握りたい。
触れたい。
愛したい。

大掃除、心の掃除、鬱

今日一日で、大分大掃除が進んだ。


そして、ぐったりした。


鬱の自分をこき使ったため、かなり心がしんどくなった。


それでも、明日、ちょっとと、日曜日に掃除をしたら、大分良い感じになるだろうと思う。


明日、午後、メンタルクリニックに行く。


体力的にはまだまだ回復していないけど、大分心は軽くなった。



物がたくさんあるのは良くない。
特に、鬱気質の人にとっては、物がたくさんあるっていうのは、気持ちが滅入る原因になる。
さっぱりしていて、ものが少ない方が気持ちにはよいのだと思う。




さて、明日はメンタルクリニックに行く日。
お風呂に入って、ヒゲをそらなきゃ。



そして、最後に残った日曜日で最後の大掃除をしよう。



そうしたら、自分が生まれ変わったようになるに違いない。

鬱と向き合いながら、1日家の掃除。新しく知り合ったベトナム人の女性

ベトナム人の33歳の女性。




まだ、つながっていない。

頑張って相手の心をつかまないと。



自分がうじうじしているから、相手から愛想をつかされるってことを自覚しないといけない。





前の彼女。
36歳のシンママ。

イチゴ狩りに行って、
葛西臨海公園に行って、
光が丘公園に行って、


そして、子どもたち、
4歳の娘と、6歳の息子から好かれていた。
しかし、
今週の電話、
もう、会うのは辞めようと思う。

辛らつな一言。
私に対するダメ出し。
そして、終わった。


・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・



さて、
鬱の治療をしながら、この一日が過ぎていく。

孤独というものは、鬱によくない。




今日は一日掃除をしていた。
何年も着なかった服。
大掃除。
ゴミ捨て。
そして、シュレッダー。
黒歴史を処分。
大量のゴミ。



延々と終わらない掃除。
また、今日も、これで終わる。







鬱になって、何か気がついたことがある。
いろいろと。
人とのつながりの大切さ。
何事もいそいじゃいけないということ。
身の回りを常に整理整頓・掃除していないといけないということ。