https://github.com/takishita2nd/FarmGame
とりあえず、ボタンを配置してみた。
ボタンは下記リンク先のフリー素材を使用しています。
https://kopacurve.blog.fc2.com
ボタン+テキスト配置で作成したけど、たぶん、文字の入ったボタンを作った方が良いような気がする。
位置合わせがめんどくさい。
あ、そうそう、今回はAltseed2を使用しています。
.NEt Coreで動作するゲーム用ライブラリです。

https://github.com/takishita2nd/FarmGame

とりあえず、ボタンを配置してみた。
ボタンは下記リンク先のフリー素材を使用しています。
https://kopacurve.blog.fc2.com
ボタン+テキスト配置で作成したけど、たぶん、文字の入ったボタンを作った方が良いような気がする。
位置合わせがめんどくさい。
あ、そうそう、今回はAltseed2を使用しています。
.NEt Coreで動作するゲーム用ライブラリです。

とりあえず、こんなものをサクッと考えてみた。

こんな感じで、着手開始します。


騙されるか!
まず、ツッコミどころ3つ。
一つ目は、自分は今(たぶん5年以上)NTTドコモユーザーではない。
なので、いまさら利用料金云々言われることはあり得ない。
そして、二つ目は発信元電話番号である。
このような重要なメッセージが携帯電話の番号から掛かってくるわけが無いだろう。
そして三つ目、同じようなメッセージが以前にも届いてきたのである。

微妙に発信元番号と連絡先番号を変えている。
本当に重要なメッセージを繰り返し通知するのならば同じ連絡先になるはずである。
完全に墓穴掘ってるね。
おそらくですが、オイラの使用している電話番号が元々ドコモでもらった電話番号だからと言うのがあると思います。
ケータイの電話番号は、キャリア毎に使用できる番号が割り当てられていて、Webのツールを使えば、その番号がどのキャリアか、というのが解るようになっています。
ただし、これはあくまでも目安であって、確実では無い。
なぜなら、ナンバーポータビリティでキャリアを変えてしまえば、上のようなツールを使っても正確にキャリアを特定することができなくなったのです。
オイラの電話番号が元々ドコモの番号だったからドコモからの請求を装ってメッセージを投げてきたのだろう。
ちなみに、オイラの現在のキャリアは楽天モバイルである。
さらに言うと、連絡先に電話かけて文句言ってやろうか、と思っても、連絡先は委託されたコールセンターなので、あまり意味は無いし、自身の番号が有効である事が相手に解ってしまうので、スルーするのがいちばんよいです。

https://github.com/takishita2nd/cocos2d-x_sample
こんなかんじになりました。
今回はスクロール処理にもう少し手を加えて、
スクロールしすぎないようにストッパ処理を追加しました。
if(questListMenu.isShow)
{
// Yの差分だけメニューを動かす
float divY = touch->getLocation().y - keepPosition.y;
auto visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
if(questListMenu.questListMenu[0].parts.point.y - questListMenu.questListMenu[0].parts.size.height + divY < visibleSize.height)
{
for(int i = 0; i < QUEST_NUM; i++)
{
questListMenu.questListMenu[i].parts.point = Vec2(questListMenu.parts.point.x, questListMenu.parts.point.y - questListMenu.questListMenu->parts.sprite->getContentSize().height * (i + 1));
questListMenu.questListMenu[i].parts.sprite->setPosition(questListMenu.questListMenu[i].parts.point);
questListMenu.questListMenu[i].questName.point = Vec2(questListMenu.questListMenu[i].parts.point.x + questListMenu.questListMenu[i].parts.size.width / 30.0, questListMenu.questListMenu[i].parts.point.y);
questListMenu.questListMenu[i].questName.label->setPosition(questListMenu.questListMenu[i].questName.point);
}
}
else if(questListMenu.questListMenu[QUEST_NUM - 1].parts.point.y + divY >= origin.y)
{
int listcount = 0;
for(int i = QUEST_NUM - 1; i <= 0; i--)
{
questListMenu.questListMenu[QUEST_NUM - 1].parts.sprite->setPosition(questListMenu.questListMenu[i].parts.point.x, questListMenu.questListMenu[0].parts.point.y * listcount + origin.y);
questListMenu.questListMenu[QUEST_NUM - 1].parts.point.y = questListMenu.questListMenu[0].parts.point.y * listcount + origin.y;
questListMenu.questListMenu[QUEST_NUM - 1].questName.label->setPosition(questListMenu.questListMenu[i].questName.point.x, questListMenu.questListMenu[0].parts.point.y * listcount + origin.y);
questListMenu.questListMenu[QUEST_NUM - 1].questName.point.y = questListMenu.questListMenu[0].parts.point.y * listcount + origin.y;
listcount++;
}
}
else
{
for(int i = 0; i < QUEST_NUM; i++)
{
questListMenu.questListMenu[i].parts.sprite->setPosition(questListMenu.questListMenu[i].parts.point.x, questListMenu.questListMenu[i].parts.point.y + divY);
questListMenu.questListMenu[i].parts.point.y = questListMenu.questListMenu[i].parts.point.y + divY;
questListMenu.questListMenu[i].questName.label->setPosition(questListMenu.questListMenu[i].questName.point.x, questListMenu.questListMenu[i].questName.point.y + divY);
questListMenu.questListMenu[i].questName.point.y = questListMenu.questListMenu[i].questName.point.y + divY;
}
}
keepPosition.y += divY;
}
考え方としては、
リストの先頭が画面上部のサイズから下に移動しそうなときは初期位置に設定する、
リストの最後が画面の下から上にいs¥どうしそうなときは下からリストを並べる、
といった感じです。
じゃあ、次はタップで選択処理だな。

Chain of Responsibilityのサンプルコードです。
package org.example.chainofresponsibility;
public class Question {
public int level;
public Question(int level){
this.level = level;
}
}
package org.example.chainofresponsibility;
public abstract class Handler {
private Handler next;
public Handler setNext(Handler next)
{
this.next = next;
return next;
}
public final void request(Question question)
{
if(judge(question)) {
// 処理完了
} else if(next != null) {
next.request(question);
} else {
// 処理不可能
}
}
protected abstract boolean judge(Question question);
}
package org.example.chainofresponsibility;
public class ConcreteHandler1 extends Handler {
@Override
protected boolean judge(Question question) {
if(question.level <= 1) {
return true;
} else {
return false;
}
}
}
package org.example.chainofresponsibility;
public class ConcreteHandler2 extends Handler{
@Override
protected boolean judge(Question question) {
if(question.level <= 2) {
return true;
} else {
return false;
}
}
}
package org.example.chainofresponsibility;
public class Main {
public static void main(String[] args)
{
Handler handler1 = new ConcreteHandler1();
Handler handler2 = new ConcreteHandler2();
handler1.setNext(handler2);
Question question = new Question(1);
handler1.request(question);
}
}
Chain of Responsibilityは処理を行う人(Handler)を数珠つなぎに配列しておき、リクエスト(Question)に対して先頭のHandlerから処理が可能かどうかを判定(judge)し、処理できない物であれば後ろのHandlerにまる投げする、という仕組みです。
なので、あらかじめHandlerを継承しているConcreteHandlerを作成して数珠つなぎを作っておく必要があります。
ConcreteHandlerにてjudge=trueならば、渡されたquestionを適切に処理し、judge=falseならば、そのquestionを後ろのConcreteHanderに渡します。


ロードボタンは何も実装していないので、何も置きませんが、
新規ゲームを選択すると、フェードイン、フェードアウトがかかって前回まで作成した画面に遷移します。
class TitleScene : asd.Scene
{
private asd.Layer2D layer = null;
private asd.TextureObject2D _newgame = null;
private asd.TextureObject2D _load = null;
private asd.Texture2D newgame1Image = asd.Engine.Graphics.CreateTexture2D("newgame1.png");
private asd.Texture2D newgame2Image = asd.Engine.Graphics.CreateTexture2D("newgame2.png");
private asd.Texture2D load1Image = asd.Engine.Graphics.CreateTexture2D("load1.png");
private asd.Texture2D load2Image = asd.Engine.Graphics.CreateTexture2D("load2.png");
private const int buttonWidth = 330;
private const int buttonHeight = 80;
public TitleScene()
{
}
protected override void OnRegistered()
{
layer = new asd.Layer2D();
AddLayer(layer);
// 下地
var background = new asd.GeometryObject2D();
layer.AddObject(background);
var bgRect = new asd.RectangleShape();
bgRect.DrawingArea = new asd.RectF(0, 0, 1900, 1000);
background.Shape = bgRect;
// 北海道の背景
var hokkaido = new asd.TextureObject2D();
hokkaido.Texture = asd.Engine.Graphics.CreateTexture2D("101.png");
hokkaido.Scale = new asd.Vector2DF(1.5f, 1.5f);
layer.AddObject(hokkaido);
// タイトル
var title = new asd.TextureObject2D();
title.Texture = asd.Engine.Graphics.CreateTexture2D("title.png");
title.Position = new asd.Vector2DF(250, 200);
layer.AddObject(title);
// 新規ゲームボタン
_newgame = new asd.TextureObject2D();
_newgame.Texture = newgame1Image;
_newgame.Position = new asd.Vector2DF(150, 450);
layer.AddObject(_newgame);
// ロードボタン
_load = new asd.TextureObject2D();
_load.Texture = load1Image;
_load.Position = new asd.Vector2DF(500, 450);
layer.AddObject(_load);
}
protected override void OnUpdated()
{
asd.Vector2DF pos = asd.Engine.Mouse.Position;
if(isOnMouse(pos, _newgame))
{
_newgame.Texture = newgame2Image;
}
else
{
_newgame.Texture = newgame1Image;
}
if (isOnMouse(pos, _load))
{
_load.Texture = load2Image;
}
else
{
_load.Texture = load1Image;
}
if (asd.Engine.Mouse.LeftButton.ButtonState == asd.ButtonState.Push)
{
if (isOnMouse(pos, _newgame))
{
var scene = new MainScene();
asd.Engine.ChangeSceneWithTransition(scene, new asd.TransitionFade(1.5f, 1.5f));
}
}
}
private bool isOnMouse(asd.Vector2DF pos, asd.TextureObject2D button)
{
if (pos.X > button.Position.X && pos.X < button.Position.X + buttonWidth
&& pos.Y > button.Position.Y && pos.Y < button.Position.Y + buttonHeight)
{
return true;
}
return false;
}
}


こないだツルハドラッグのワゴンセールで見つけて買って、茹でた冷凍うどんにかけて食べてみたのですが、
これがなかなか美味しかった。
具麺シリーズは何種類か合って、
https://www.kikkoman.co.jp/kikkoman/gumen/index.html
味を変えれば冷凍うどんがいくらでも食べられるということです。
冷凍うどんの美味しい食べ方を研究してきたオイラにとってはもってこいの食材なのですが。
でも、ワゴンセールと言うことは、品物入れ替えが行われたことなので、ツルハドラッグでは手に入らなくなるのだろう。
と言うことは通販で買うしか無いのか。
通販は、北海道の送料が思った以上にかかるので、大量買いしないと明らかに損なので・・・
うむ、困った。
タレを自分で作ろうか?


先週は膝を悪くしてお仕事お休みしていたのですが、
今週からお仕事再開です。
膝の痛みは、薬を飲んだ後は痛みが和らぐのですが、飲むのを止めるとまた痛み出しました。
よくわかんねっす。
何か根本的な原因があって、それを取り除かないとダメっぽいかもしれない。
そうそう、それと、オイラの担当区域外で、やらかした人がいるみたいです。
やらかしたというのは、配っちゃいけないお宅に配ってしまったと言うことです。
その問題が発生したのは担当区域外なので、もちろんオイラには全く問題無いのですが、
念のため、その区域に行っていないと言う証拠が欲しいなぁと思いまして、
Google FitでGPSのデータを元に移動履歴を地図に出すことができます。

この画面を下に引っ張ると、地図が出てきます。(見せられないよ!)
それをスクショで保持っておこうと。
何かあったときに「行っていない証拠」として提出できるようにしておこうと思います。
では、来週も頑張ります。

コロナ禍で「不景気」なニュースが相次ぐ一方で、1月8日には日経平均株価が大幅高となり2万8000円を突破、実に30年ぶりの高値をつけました。どうしてこんなに株が上がっているのでしょうか。(20代・男性…
【台北=中村裕】自動車を中心に世界で半導体が足りないなか、独米日など各国政府が台湾当局に半導体増産などの協力を要請していることが、24日わかった。米国による対中制裁や自動車市場の急回復による半導体需給の逼迫ぶりを裏づけた。半導体不足による自動車の減産が長引けば、世界経済の波乱要因にもなりかねない。台湾当局の関係者は24日、「自動車用の半導体が世界で不足しており、昨年末から各国の外交ルートを通じ
日本経済新聞社がまとめた2020年度の設備投資動向調査(20年11月末時点の修正計画)で、全産業の投資額が当初計画(同6月末時点)に比べて2・9%減る見通しだ。減少幅はデータのある1990年以降で最大となる。新型コロナウイルス禍が響いた。一方、脱炭素や医療、デジタル化など成長領域で投資を積み増す企業も目立つ。調査は上場企業と資本金1億円以上の有力企業958社を対象に集計した。11月末までの修正
家計をもう見直しするところが自分では見当たりません皆さんから寄せられた家計の悩みにお答えする、その名も「マネープランクリニック」。今回の相談者は、体調を壊し療養後に仕事を再開したという42歳の一人暮らしの女性です。毎月の収支に余裕がなく、老後も不安だといいます。ファイナンシャル・…
ラクしておいしいもの食べたい!リモートワークの合間にちょちょっとおいしいご飯を作りたい。でも一人暮らしだから、作る量も、手間も、洗い物もうまいこと減らしたい。そんなわがままなギズ編集部員たちが最近「いいじゃん!」と思った調理ガジェットを紹介します。
中央銀行が発行するデジタル通貨(CBDC)の開発や研究が、各国で加速している。先行する中国は2022年の発行を目指し、日本銀行も今春にも実証実験に着手する。今後の動向次第では、金融システムや国際的な…
イオンはグループの食品調達を一本化する。金額は2023年度には2兆円にのぼる。業務の効率化を進め仕入れ価格を抑え、今後の値下げなどに備える。新型コロナウイルスの感染拡大で消費者の節約志向が強まっており小売り各社は対応を迫られそうだ。イオンの連結売上高は8兆6042億円(20年2月期)と、国内小売りで最大規模で、食品仕入れ額は約4兆円に上る。このうち約半分にあたる飲料や即席麺、調味料や冷凍食品な
au Webポータル
企業年金とは、会社や個人事業主が従業員の退職後の生活安定を目的として行う企業内の私的年金制度です。もともと、「退職金」を分割して受け取るところから始まったといわれており、一時金として受け取ることもで
ベンツA・B・Cクラス、およびBMW1・2・3シリーズの現行型&先代の中古車を対象に「今、実は買い得なモデルはどれなのか?」を検証。実はそこまで高額じゃない!!?
#メルセデス・ベンツ #BMW
銀行に行けば無料で預金口座を開いて通帳を手にでき、口座は無料で維持される。そんな常識が崩れ始めた。みずほ銀行は新たに口座を開く人が紙の通帳を希望する場合、1冊当たり1100円の手数料を18日から徴収し始めた。三井住友銀行は4月から、新設の普通預金口座に紙の通帳を付けると年550円の手数料を取る。通帳を有料化するからにはデジタル化やサービス向上にもしっかり取り組み、利用者が納得感を得られるものに
オセロ・中島知子と谷原章介の破局理由についてリアルライブが報じた。中島が結婚と子どもを望み、意見の衝突があったようだと芸能ライター。仕事を優先したいという谷原に対し、自ら別れを告げたともいわれているそう
全てがパソコンやスマホでできる時代。でも、便利さの裏には思わぬ落とし穴が…=metamorworks/stock.adobe.com
パソコンやスマホが得意で、趣味や投資などにも積極的な「アクティブ
国会で審議入りする新型コロナウイルス対策の特別措置法改正案で、政府は営業時間の短縮などの命令に従わない事業者に対する過料を設けた。現行法でも時短や休業の要請に応じなければ知事は店名を公表することができるが、ペナルティーを強めようとする政府に対し、飲食店の関係者からは「経営の支援拡充が先ではないか」
スーパーの閉店間際といえば惣菜や生鮮食品の割引タイムとなるわけですが、刺身をまとめ買いするなんて方も多いのではないでしょうか。そんなスーパーの刺身を、劇的に美味しくする方法を秒刊SUNDAYが紹介しています。その方法が、こちら。
■材料
お刺…
昨年10月に発表されたロールスロイス「ゴースト」。お値段3590万円! 最大出力571ps!! 最新の技術が詰め込まれたロールスロイスを自動車評論家 飯田裕子氏が試乗、その進化を確かめた!
スターフライヤーは、北九州〜沖縄/那覇線の運航を再開する。 運航日は4月28日〜5月10日、7月21日〜8月30日、9月17日〜27日。8月6日〜16日は1日2便、それ以外は同1便を運航する。
■尼崎信用金庫理事長 作田誠司さんに聞く
兵庫県には全国4位の11信用金庫があり、信金王国と称される。その中で、預金・融資量とも最大の尼崎信用金庫(尼信、尼崎市)が今年、創業100年を迎える。
ビットコインなどの仮想通貨を取り扱う大手取引所コインチェックが、約3年ぶりのCM再開に込めた想いを明かした。
教育現場への情報通信技術(ICT)導入を加速させようと、千葉県教委と日本マイクロソフト(東京都港区)は22日、オンライン形式で連携協定を結んだ。4月をめどに、ウェブ上で会話などができるサービス「T