「run」を含む日記 RSS

はてなキーワード: runとは

2019-05-31

"REVOLUTION WILL NOT BE TELEVISED" by Gil Scott-Heron, 1970

You will not be able to stay home, brother

You will not be able to plug in, turn on and cop out

You will not be able to lose yourself on skag and skip out for beer during commercials

Because the revolution will not be televised.

The revolution will not be televised.

The revolution will not be brought to you by Xerox in 4 parts without commercial interruptions

The revolution will not show you pictures of Nixon blowing a bugle and leading a charge by John Mitchell, General Abrams and Mendel Rivers to eat hog maws confiscated from a Harlem sanctuary

The revolution will not be televised.

The revolution will not be brought to you by the Schaefer Award Theatre and will not star Natalie Woods and Steve McQueen or Bullwinkle and Julia

The revolution will not give your mouth sex appeal

The revolution will not get rid of the nubs

The revolution will not make you look five pounds thinner

Because the revolution will not be televised, brother.

There will be no pictures of you and Willie Mae pushing that shopping cart down the block on the dead run

Or trying to slide that color TV into a stolen ambulance

NBC will not be able predict the winner at 8:32 on reports from 29 districts

The revolution will not be televised.

There will be no pictures of pigs shooting down brothers in the instant replay

There will be no pictures of Whitney Young being run out of Harlem on a rail with brand new process

There will be no slow motion or still life of Roy Wilkens strolling through Watts in a Red, Black and Green liberation jumpsuit that he had been saving for just the proper occasion.

The revolution will not be televised.

Green Acres, The Beverly Hillbillies and Hooterville Junction will no longer be so goddamned relevant

And women will not care if Dick finally screwed Jane on Search for Tomorrow

Because Black people will be in the street looking for a brighter day

The revolution will not be televised.

There will be no highlights on the eleven o'clock news

And no pictures of hairy armed women liberationists and Jackie Onassis blowing her nose

The theme song will not be written by Jim Webb or Francis Scott Keys, nor sung by Glen Campbell, Tom Jones, Johnny Cash or Englebert Humperdink

The revolution will not be televised.

The revolution will not be right back after a message about a white tornado, white lightning, or white people

You will not have to worry about a dove in your bedroom, a tiger in your tank, or the giant in your toilet bowl

The revolution will not go better with Coke

The revolution will not fight the germs that may cause bad breath

The revolution will put you in the driver's seat.

The revolution will not be televised

Will not be televised

Will not be televised

Will not be televised

The revolution will be no re-run, brothers

The revolution will be live.

2019-04-29

i☆Risちゃんはすごいという話

私はi☆Risオタクです。

これを読んでいる人にどうしてもi☆Risちゃんライブに来てほしいので、書きます


まず、何も知らない方へ。

i☆Risアイリス)とは「アイドル声優ハイブリッドユニット」です。

メンバー6人が女性声優として個々で活動しながら、アイドルとしても全力でライブを行うことをコンセプトとして結成されたユニット

声優アイドル売りやアイドル声優デビューとはひと味違い、どちらも本職です。

ここでは「アイドルとしてのi☆Risちゃん」を主に書いていきます

簡潔にメンバーを紹介します。

さきさまこと山北早紀(やまきたさき)さん。

最年長リーダーでおっとりしていますが、ギャグのキレがすごくて変わってる人。グリーン担当

ゆうちゃんセリコこと、芹澤優(せりざわゆう)さん。

その人気は間違いなく一番。表情のくるくる変わるパフォーマンスは見ものです。ブルー担当

みこと茜屋日海夏あかねやひみか)さん。

本名です。存在美術のビューティウーマン筋肉量優勝のダンスリーダー。パープル担当

わかちーこと、若井友希(わかいゆうき)さん。

歌唱力がエグい。作詞作曲もこなi☆Risの愛され末っ子で、ダントツちいちゃい。レッド担当

みゆたんこと、久保田未夢(くぼたみゆ)さん。

あざとかわいさで右に出るものはありません。一本芯の通ったっょぃプリンセスオレンジ担当

ずっちゃんこと、澁谷梓希(しぶやあずき)さん。

声優アイドル以外にもマルチ活躍、なんかイケメンいるなと思ったらこの人。イエロー担当

以上この6人でi☆Risです。個性的ですね。覚えやすいと思います

ちらっと画像見てもらえばわかると思うんですけど、美少女なんですね。顔面偏差値が高い。顔が良い×6。

今年の7月7日で結成7周年を迎え、メンバー一人も欠けず増えずで7年間フルスロットル活動してます

こんなに可愛い子揃いなんですけどなんと、パフォーマンスヤバイです。



○歌が上手い

歌が上手いです。

この6人は7年前のアニソンヴォーカルオーディション、のちにWake Up,Girls!Run Girls,Run!を生み出したオーディション第一合格者です。

キラキラしたアイドルソングから扇情的ダンスミュージックまで、楽曲の幅は広く、どんな曲も表現します。

特に元々歌手志望の若井さんは、2月放送されたTHEカラオケ☆バトルで好成績を残すほどの歌唱力

ハモリの精度は声優ユニットでも随一。何億回聴いても圧倒されます

歌の上手さを感じられるオススメ曲をまとめておきますので、お時間あればぜひ聴いてみてください。

Goin'on(11thシングルGoin'on」、2ndアルバムTh!s !s i☆Ris!!!」収録)

・My Bright...(若井ソロ、2ndアルバムTh!s !s i☆Ris!!!」収録)

・Daily Berry!!(3rdアルバム「WONDERFUL PALETTE」収録)

卒業式(16thシングル「Changing point」収録)



ダンスが上手い

ダンスやばいです。

所詮声優でしょアイドルでしょと言われることもありますが、そのパワフルさたるや業界人も驚くほど。元々ダンスやってる人たちだと思ってた、という方もよく見かけますが全員が未経験でした。

振り付けほとんどの曲を同じダンサーの方が担当されており、メチャクチャかわいくてこっちが照れるような振りから、キレッキレのかっこいい振りまで見飽きることがありません。フォーメーションの変動も気持ちいいです。

メンバー全員が出演するアニメプリパラ」のライブイベントでは、演じるキャラクターに合わせて同じ振りでも動きが変わっていたりして、表現へのこだわりもすごい。

特に今年の「i☆Ris 5thLiveTour FEVER」はやばいです。声優アイドルユニットなのに、ダンスオンリーパートがあるんです。もはや表現団体です。

かわいい女の子が歌って踊る姿、見ているだけで元気になりますね。

avex公式YouTubeダンスMV(通常のMVではなく定点カメラで全体のダンスの動きを見ることができるもの)が上がっているので、ご覧になってみてください。全部良いのでオススメは決めかねますが、「ドリームパレード」のラインダンスは必見です。



ライブに来てほしい

歌が上手いならCDを聴けばいいし、ダンスが見たいなら動画円盤再生すればいいですよね。

でも、i☆Risちゃんの最大の魅力って「生のライブ」なんです。

生で聴く声の圧力。生だからわかるパワフルな動き。大きなステージの上で身体いっぱい表現している女の子たち。その目で見なきゃわかりません。

なんてったって彼女たちはアイドルですから、その表現ファンに届けてくれますファンの目を見てくれます

一度でもレスをもらったら抜け出せません。あんなにキラキラ笑顔で指を差されたら一生の思い出になります

抵抗があるのはわかりますちょっと調べればi☆Risオタクは厄介多いみたいなのたぶん出てきますよね。

実際、アニメオタク敬遠するイェッタイガーとかジャージャーとか当たり前にあります前奏などで入れるコールのこと)。

私も初めてライブに行くとき絶対そんなの言わないと思ってました。何言ってるかわかんないし、謎すぎてきもいし。

ライブ自体、ど田舎地方民の私にとってそれは都会の人のものでした。一年に一度ツアー地元に来てくれるときに行ければ十分だと。

しかし、ツアーに行って、武道館ライブに行って、リリースイベントに行ってまたツアーがあって……現場に行く回数が増えるたび、もっと行きたい、もっと彼女たちを応援したい、現場楽しい!と思えるようになりました。

今となっては月2以上のペースで推しに会いに行ってますし、コールに関してはメンバー肯定的なのもありライブを盛り上げるひとつ文化と考えています

それほど楽しいんです。「また来たい」と思わせる力が、彼女たちのパフォーマンスにあるんです。


最後に。

声優としての実力を伸ばし、個々が忙しくなってきた今、i☆Risとして単独ライブがあるのは4月6月ツアー期間と11月デビュー記念など、ほんのわずかです。

まりi☆Risライブに行くなら今がチャンスなんです。

来年も当たり前にツアーがあると思っていたら、もしかしたらないかもしれない。このご時世、いつ活動が終わってもおかしくはありません。

もし行きたいと思っている方がいるのなら、来てください。

チケットとれます。探したら余らせてる人が良い席を譲ってくれることもありえます

曲を全部覚える必要はありません。コールも覚えなくて大丈夫です。推しが決まってなくてもいい。余力があれば、今回のツアー過去公演のセットリストを予習しておくとより楽しめるかもしれません。

今、全力で輝いているi☆Risに会いに来てください。

よろしくお願いします。



i☆Ris 5thLiveTour FEVER

5月4日(土) 宮城公演(日立システムホール仙台) 15:00〜/19:00〜

5月6日(月) 大阪公演(ZeppNamba) 15:00〜/19:00〜

5月11日(土) 愛知公演(日本特殊陶業市民会館ビレッジホール) 15:00〜/19:00〜

5月19日(日) 北海道公演(Zepp Sappopo) 14:30〜/18:30〜

5月25日(土) 神奈川公演(関内ホールホール) 15:00〜/19:00〜

6月1日(土) 東京公演(中野サンプラザ) 15:00〜/19:00〜

2019-03-30

You asked me once what running is.

You said you wanted to know what it is.

The answer is you.

It's you.

Well?

Did you get to see the top?

How the new team?

It's stronger than back then.

Really?

You can't back in time.

Just as old records are overwritten, we keep moving forward.

Sometimes it makes me sad, but that's...

The wind is blowing.

And we defy it by running.

Believing the answer we seek lies ahead.

What is strength?

What is running?

What is living?

It's all beyond the wind.

Hope resides within our hearts.

Look. The road is right before your eyes.

So we run again today.

We'll run to the edges of the earth.

Hey, do you like running?

From the line of "Run with the Wind".

Yes, I like running!

We're running to the future to make it together.

2019-03-06

Because waiting for me.

Just because there're all waiting for me.

From the line of "Run with the wind".

2019-02-25

anond:20190225091610

45歳173㎝83kg (2018年10月)が、毎日1時間時速6キロで歩いて4カ月。

ようやく80kg代に突入したよ。

歩く距離と速さは、「Nike Run Club」というアプリで計ってる。

体重オムロンスマホ連動の体重計で記録してる。

2019-01-16

Watching "Run with the Wind".

I'm watching myself.

2019-01-03

anond:20190103184241

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//

	int blocks[100][100];

	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		x = 0;
		y = 0;
		boxType = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		for(int x = 0 ; x < 100 ; x++)
		{
			for (int y = 0; y < 100; y++)
			{
				blocks[y][x] = 0;
			}
		}

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int x;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 100 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	int boxType;

	BOOL WriteBoxOLDBox()
	{
		int width = 24;

		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 48));
		for (int y = 0; y < 30; y++)
		{
			for (int x = 0; x < 8; x++)
			{
				if (blocks[y][x] == 0)
				{
					continue;
				}

				RECT Rect = { 0,0,48,48 };
				BOOL ret;

				Rect.left = width * x + 1;
				Rect.right = width * (x + 1) - 1;
				Rect.top = width * y + 1;
				Rect.bottom = width * (y + 1) - 1;

				ret = FillRect(hdc, &Rect, hBrush);


			}
		}

		DeleteObject(hBrush);

		return FALSE;
	}


	BOOL WriteBox()
	{
		WriteBoxOLDBox();

		switch (boxType)
		{
		case 0:
			return WriteBoxI();
		case 1:
			return WriteBoxL();
		case 2:
			return WriteBoxZ();

		}

		return TRUE;
	}

	BOOL WriteBoxZ()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left += width;
		Rect.right += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);


		DeleteObject(hBrush);

		return TRUE;
	}


	BOOL WriteBoxL()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 246 , 48));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) -1 ;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) -1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top    += width; 
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left   += width;
		Rect.right  += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL WriteBoxI()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB( 246 , 48 , 48));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		//Rect.left   += width;
		//Rect.right  += width;
		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL SaveBoxI()
	{
		blocks[y  ][x] = 1;
		blocks[y+1][x] = 1;
		blocks[y+2][x] = 1;
		blocks[y+3][x] = 1;
		return TRUE;
	}


	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		if (x > 8) {
			x = 0;
		}
		if (x <0) {
			x = 8;
		}
		if (y > 20) {
			switch (boxType)
			{
			case 0:
				SaveBoxI();
				break;
			case 1:
				break;
			case 2:
				break;
			}

			y = 0;
			boxType++;
			if (boxType > 2)
			{
				boxType = 0;
			}
		}

		this->WriteBox();

		return TRUE;
	}



	BOOL OnKey(WPARAM wParam)
	{
		if (wParam == VK_LEFT)
		{
			x++;
		}
		if (wParam == VK_RIGHT)
		{
			x--;
		}
		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
		break;
	case WM_KEYDOWN:
		{
			MyWindow *target = MyWindow::find(hWnd);
			target->OnKey(wParam);
		}
	break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

anond:20190103170543

テトリス

落ちてくるブロックの描き方

わかりやす関数化してみた

まずはブロックの種類は3種類

 

WriteBoxLとWriteBoxIとWriteBoxZ

の違いをよく見比べて

自力で違いがわかれば

プログラマーにはなれるとおもう

とはいえ、コレを自力でわかるならもっと儲かる仕事あるとはおもうけどな

 

	BOOL WriteBox()
	{
		switch (boxType)
		{
		case 0:
			return WriteBoxI();
		case 1:
			return WriteBoxL();
		case 2:
			return WriteBoxZ();

		}
	}
// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		x = 0;
		y = 0;
		boxType = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int x;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	int boxType;

	BOOL WriteBox()
	{
		switch (boxType)
		{
		case 0:
			return WriteBoxI();
		case 1:
			return WriteBoxL();
		case 2:
			return WriteBoxZ();

		}
	}

	BOOL WriteBoxZ()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left += width;
		Rect.right += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);


		DeleteObject(hBrush);

		return TRUE;
	}


	BOOL WriteBoxL()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) -1 ;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) -1;

		ret = FillRect(hdc, &Rect, hBrush);


		Rect.top    += width; 
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.left   += width;
		Rect.right  += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL WriteBoxI()
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));

		int width = 24;

		RECT Rect = { 0,0,48,48 };
		BOOL ret;

		Rect.left = width * x + 1;
		Rect.right = width * (x + 1) - 1;
		Rect.top = width * y + 1;
		Rect.bottom = width * (y + 1) - 1;

		ret = FillRect(hdc, &Rect, hBrush);


		//Rect.left   += width;
		//Rect.right  += width;
		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		Rect.top += width;
		Rect.bottom += width;
		ret = FillRect(hdc, &Rect, hBrush);

		DeleteObject(hBrush);

		return TRUE;
	}


	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		if (x > 8) {
			x = 0;
		}
		if (x <0) {
			x = 8;
		}
		if (y > 8) {
			y = 0;
			boxType++;
			if (boxType > 2)
			{
				boxType = 0;
			}
		}

		this->WriteBox();

		return TRUE;
	}



	BOOL OnKey()
	{
		x++;
		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
		break;
	case WM_KEYDOWN:
		{
			MyWindow *target = MyWindow::find(hWnd);
			target->OnKey();
		}
	break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

「いろんな「」のコーナー」のコーナー

エヴァンジュリン以外の30人にも続編を考えてあげよう」のコーナー

光る風から続いているハッピー誘って、君のもとへLOVEドライブ行こう

どうも、好きなネギま声優こやまきみこです。

作品では、二つの社会にわたって多くの登場人物存在する。一つは表の世界、すなわち我々の社会のものである日本教師として赴任した主人公ネギ・スプリングフィールドは、魔法使いとしての正体を隠したままA組の31人の生徒と出会うことになる。生徒の多数は一般人であるが、ネギの正体を知ってしまものもおり、魔法使い世界に関わりをもつことになる。

です!

「『キツツキは嘘つきだから気をつけて』という歌詞差別表現である」のコーナー

それにあなた名前真綾であって、しおりではないでしょ! 嘘つきなのはあなたの方じゃないか

かに嘘つきのキツツキもいるかもしれませんが、全てのキツツキが嘘つきのわけがありません。

なので、そのような歌詞主語が大きすぎます

そもそも動物動物という種でくくること自体差別的な表現なのです。

そこで、たった一人にのみ該当する小さい主語を使った「キツツキは嘘つきだから気をつけて」に変わる新しい歌詞を考えてみました。

ネクソンを買うぐらいなら他にいい買い物があるんじゃないの? そんなことない!」のコーナー

ネクソン? いい思い出がなにもないなあ。

でも、このいい思い出でない思い出もまた、今の自分を形作っているのだから過去否定するのはよくないと思います

そこで、買おうとしている数々の企業ネクソンのいいところを教えてあげましょう。

「「色彩」ってすげえいい曲だけどそれを満喫するためだけにFGO課金するのは躊躇しちゃうなあ。そうだ! 坂本真綾について詳しくなろう!!!」のコーナー

貧困層にとってはFGOは怖くて近寄れません。

そこで、FGOプレイしなくても色彩を満喫するために、坂本真綾のことを教えてください。

目標は、浅野真澄を超える坂本真綾ファンです。

もしくは鈴村健一を超える坂本真綾旦那です。

「「愛があって夢があってだけど、変わらぬ思いを重ねて、あなたと行きたいのふぉーえばふらまーいらーーぶ。髪をほどいて見上げるオリオンあなたは遠く感じる。打ち消すように」の打ち消すようにの時に唱える打ち消し呪文を考えよう」のコーナー

意思の力? 目くらまし? 呪文貫き? そんなな呪文じゃ南央美さんの自意識は打ち消せません。

南央美さんも満足するような格好いい打ち消し呪文を教えてください。

「「帰る家さえ見失う私の胸で眠れ、私の胸で眠れ」の私とはセシリーにとっての誰だったのか!」のコーナー

誰だったんでしょうね?

「きんぎょ注意報の好きなキャラクタを教えてください」のコーナー

僕は葵ちゃんです。

「じゃあ「私のすてきなピアニスト」の話だけしようぜ!」のコーナー

このコーナーは、魔法の天使クリィミーマミ第46話私のすてきなピアニストに関することだけを募集しています

魔法の天使クリィミーマミ第46話私のすてきなピアニストの話だけをしてください。

それ以外のメールは何があっても読みません。

プリクラを開発したこと宝くじにあたったようなものなら、P4という面白ゲームを開発したことは何にあたるのか考えてみよう!」のコーナー

アトラスゲームはどれも面白いなあ。

とくにペルソナ4

僕はペルソナ4が大好きなんだ!

まずなんといっても、声優さんが可愛い

堀江由衣さんに釘宮理恵さんに小清水亜美さんに山口勝平さん! どの声優さんもとってもキュート可愛いですよね。

P4Dで恋する名探偵フルバージョンが聞けるかと思ったのに聞けなくてとっても残念でした!!!

堀江由衣さんの楽曲の中でも僕は一番好きなんですよね恋する名探偵

そうえば、僕、グランブルーファンタジー堀江由衣さんの限定キャラ無料ガチャで引いたんですよ! すごくないです?

これもう、俺と堀江由衣シンクロ率が極限まであがっており、俺自身田村ゆかりであり、俺と堀江由衣やまなこからだと思うんですよ?

そこで、俺と田村ゆかり共通点を教えてください。

はやく、世界一かわいくなりたーーーい。

「「じゃあエンジェルビーツはどうしてたらよかったんですか!?」のコーナーの答えは「関根入江百合を濃厚に描く」で決定しているので「好きなガルデモの曲を募集します」」のコーナー

僕はRun With Wolvesです。

エンジェルビーツ面白かったと思うけど、今もう展開してるのは漫画版だけなんですよねえ。

いや、漫画版に不平不満はないよ。

ないけど、やっぱり、あの「声優のわちゃわちゃ感」が重要コンテンツだったと僕は思うのだけど。

うーん、難しかったなあ。

今、Re:ゼロWeb小説版読んでるけど、アニメ版結構違うんだね。ラム事務的に手コキされる同人誌よみたーい

よみたーい

anond:20190101175055

テトリス風?プログラムに向けて

第何回だろうな

キー入力を追加した

まだ、何を押してもブロックが右に移動するだけ(右端にいくと左にワープ

タイマー自動落下

 

でもまぁ ここまでサンプルがあるとほぼテトリスは見えてきた

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		x = 0;
		y = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int x;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48*9,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));
		RECT Rect = { 0,0,48,48 };
		Rect.left = 48 * x;
		Rect.right = 48 * (x+1);
		Rect.top = 48 * y;
		Rect.bottom = 48 * (y+1);
		if (x > 8) {
			x = 0;
		}
		if (x <0) {
			x = 8;
		}
		if (y > 8) {
			y = 0;
		}
		BOOL ret = FillRect(ps.hdc, &Rect, hBrush);
		DeleteObject(hBrush);

		return TRUE;
	}

	BOOL OnKey()
	{
		x++;
		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
		break;
	case WM_KEYDOWN:
		{
			MyWindow *target = MyWindow::find(hWnd);
			target->OnKey();
		}
	break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

2019-01-01

anond:20190101174626

こんな感じ

GetMessageの上にタイマーも扱える

MsgWaitForMultipleObjectsExを追加

GetMessageだとタイマーを処理できないのでPeekMessageに変更

>なぜかは ちょっと考えると面白い

Getとき必要なかった 終了処理を追加

msg.message == WM_QUIT

この部分 QUITメッセージが来たら終了する

obj == WAIT_TIMEOUT

タイマーを追加

y++で高さを変更してから

作画を呼ぶ

こんだけ

<が<

>が&GT

&が&

にかわっちゃってるので各自で置換してね

	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}

anond:20190101172100

タイマーを使ったアニメーションを付けた

// WindowsProject7.cpp: アプリケーションエントリ ポイント定義します。
//

#include "stdafx.h"
#include "WindowsProject7.h"

#define MAX_LOADSTRING 100

// グローバル変数:
HINSTANCE hInst;                                // 現在インターフェイス
WCHAR szTitle[MAX_LOADSTRING];                  // タイトル バーテキスト
WCHAR szWindowClass[MAX_LOADSTRING];            // メイン ウィンドウ クラス名

// このコード モジュールに含まれ関数宣言転送します:
//ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

#include <list>

class MyWindow;
	
std::list< MyWindow *> windows;

class MyWindow
{
public:

	HWND hWnd;



	MyWindow()
		:hWnd(NULL)
	{
		windows.push_back(this);
	}

	virtual ~MyWindow()
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			if (*it == this)
			{
				windows.erase(it);
				break;
			}
		}
	}

	static MyWindow * find(HWND key)
	{
		std::list< MyWindow *>::iterator it;
		for (it = windows.begin(); it != windows.end(); it++)
		{
			MyWindow *target = *it;

			if (target->hWnd == key)
			{
				return target;
			}

		}

		return NULL;
	}



	//
	//  関数: MyRegisterClass()
	//
	//  目的: ウィンドウ クラス登録します。
	//
	ATOM MyRegisterClass(HINSTANCE hInstance)
	{
		WNDCLASSEXW wcex;

		wcex.cbSize = sizeof(WNDCLASSEX);

		wcex.style = CS_HREDRAW | CS_VREDRAW;
		wcex.lpfnWndProc = WndProc;
		wcex.cbClsExtra = 0;
		wcex.cbWndExtra = 0;
		wcex.hInstance = hInstance;
		wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT7));
		wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
		wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
		wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT7);
		wcex.lpszClassName = szWindowClass;
		wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

		return RegisterClassExW(&wcex);
	}

	//
	//   関数: InitInstance(HINSTANCE, int)
	//
	//   目的: インスタンス ハンドルを保存して、メイン ウィンドウ作成します。
	//
	//   コメント:
	//
	//        この関数で、グローバル変数インスタンス ハンドルを保存し、
	//        メイン プログラム ウィンドウ作成および表示します。
	//
	BOOL InitInstance()
	{
		hInst = hInstance; // グローバル変数インスタンス処理を格納します。

		ATOM c = MyRegisterClass(hInstance);
		y = 0;

		hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

		if (!hWnd)
		{
			return FALSE;
		}

		return TRUE;
	}

	BOOL ShowWindow()
	{
		BOOL ret;
		ret = ::ShowWindow(hWnd, SW_SHOW);
		::UpdateWindow(hWnd);

		return ret;
	}


	HINSTANCE hInstance;
	MSG msg;
	BOOL run;
	int y;
	BOOL Main()
	{

		HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT7));
		run = true;
		int rc;
		// メイン メッセージ ループ:
		while (run)
		{
			DWORD obj = MsgWaitForMultipleObjectsEx(0, NULL,  100 , QS_PAINT| QS_ALLEVENTS,0);
			if (obj <= WAIT_OBJECT_0)
			{
				while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
				{
					if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
					{
						TranslateMessage(&msg);
						DispatchMessage(&msg);
					}
					if (msg.message == WM_QUIT) {
						run = FALSE;
					}
					if (msg.message == WM_CLOSE) {
						run = FALSE;
					}

				}
			}
			else if (obj == WAIT_TIMEOUT)
			{
				y++;
				PAINTSTRUCT ps;
				HDC hdc = BeginPaint(hWnd, &ps);
				this->OnPaint(ps);
				EndPaint(hWnd, &ps);
				::UpdateWindow(hWnd);
				RECT Rect2 = { 0,0,48,48 * 8 };
				InvalidateRect(hWnd, &Rect2, TRUE);
			}
			else if (obj == WAIT_FAILED)
			{
				rc = GetLastError();
			}
			else {

			}
		}


		return TRUE;

	}

	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));
		RECT Rect = { 0,0,48,48 };
		Rect.top = 48 * y;
		Rect.bottom = 48 * (y+1);
		if (y > 8) {
			y = 0;
		}
		BOOL ret = FillRect(ps.hdc, &Rect, hBrush);
		DeleteObject(hBrush);

		return TRUE;
	}


};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: ここにコードを挿入してください。

    // グローバル文字列初期化しています。
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_WINDOWSPROJECT7, szWindowClass, MAX_LOADSTRING);
    //MyRegisterClass(hInstance);



	MyWindow win;



	win.hInstance = hInstance;

	// アプリケーション初期化を実行します:
	if (!win.InitInstance())
	{
		return FALSE;
	}

	BOOL ret;

	win.ShowWindow();

	ret = win.Main();

	if (ret)
	{
		return 0;
	}else {
		return (int)win.msg.wParam;
	}



}






//
//  関数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    メイン ウィンドウメッセージを処理します。
//
//  WM_COMMAND  - アプリケーション メニューの処理
//  WM_PAINT    - メイン ウィンドウの描画
//  WM_DESTROY  - 中止メッセージを表示して戻る
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 選択されたメニューの解析:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);

			MyWindow *target = MyWindow::find(hWnd);
			target->OnPaint(ps);


            // TODO: HDC を使用する描画コードをここに追加してください...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// バージョン情報ボックスメッセージ ハンドラーです。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

2018-12-22

anond:20180611181350

切り方は

ラン・ドグ・シャ

run dog cat

ではないか

2018-12-02

Completely run out of my patience with idiot .

I have to make my job and my days without idiot.

2018-11-07

Bomb A Head! 生誕20周年記念盤

1. Bomb A Head! (オリジナル) (TVヴァージョン)

2. Bomb A Head! (インストゥルメンタル)

3. Bomb A Head! (12MIX)

4. Bomb A Head! (The Remix)

5. Bomb A Head! (EXTENDED MIX) (ピストン西沢MIX)

6. Bomb A Head! (m.c.A・T The@Special Primal Live Ver.) (ライブ収録)

7. Bomb A Head!V

8. Bomb A Head! (RAVEMAN mix)

9. Bomb A Head! (AAAヴァージョン)

10. Bomb A Head! (ボサノバヴァージョン)

11. Bomb A Head! (アカペラ) (ボーナストラック)

愛のメモリー(発売35周年 アニバーサリーエディション)

1. 愛のメモリー 2012 ver.

2. 愛のメモリー Bossa ver.

3. 愛のメモリー アルバム「OLD FASHION LOVE SONG」 【2000.11.29 Release】

4. 愛のメモリー アルバム「My Favorite Songs」 【2005.11.2 Release】

5. 愛のメモリー 2009 アルバムYes We Can!!」 【2009.5.27 Release】

6. 愛のメモリー 21 アルバム「OLD FASHION LOVE SONG」 【2000.11.29 Release】

7. 愛のメモリー アルバムMemories of love」 【1994.11.2 Release】

8. 愛のメモリー シングル「愛と復讐の嵐」

9. 愛のメモリー DVD「Emotional Live

10. 愛のメモリー アルバムTIME

11. 愛のメモリー シングル

12. 愛の微笑 (愛のメモリー原曲) 【1975】

13. 愛のメモリー 2012 ver.

14. 愛のメモリー Bossa ver.

Love Somebody 完全盤(初回限定盤)(DVD付)

1. Love Somebody (CINEMA Version IV) (初CD化)

2. Love Somebody (CINEMA Version III) (初CD化)

3. Love Somebody (CINEMA Version II)

4. Love Somebody (AKIRA’S PALMDRIVE REMIX)

5. Love Somebody (CINEMA Version)

6. Love Somebody (Acoustic Version)

7. Love Somebody (DJ Hasebe Remix)

8. Love Somebody (SECRET Version)

9. Love Somebody (ALBUM Version)

10. Love Somebody (Remix)

ALL the “Get Wild” ALBUM

1.Get Wild (“FANKS CRY-MAXVersion)

2.Get Wild

3.Get Wild (“COLOSSEUM I”Version)

4.GET WILD '89

5.Get Wild (“RHYTHM RED TMN TOUR”Version)

6.Get Wild (techno overdub mix)

7.Get Wild (“tour TMN EXPO ARENA FINALVersion)

8.GET WILD '89 (“TMN final live LAST GROOVE 5.18”Version)

9.GET WILD DECADE RUN

10.GET WILD DECADE RUN (112 CLUB MIX)

11.Get Wild (VER.0)

青山テルマ スーパーベスト

01.そばにいるね original mix

02.そばにいるね 2009

03.そばにいるね English ver.

04.そばにいるね a cappella ver.

05.そばにいるね Tokyo ver.

06.そばにいるね Disco ver.

07.そばにいるね T.K remix

08.そばにいるね EURO MIX

09.そばにいるね Korean ver.

10.そばにいるね Spanish ver.

11.そばにいるね HΛL’S MIX

12.そばにいるね instrumental

初回限定ボーナストラック

13.そばにいるね Orchestra Version

14.そばにいるね Jazz Version

DVD

01.そばにいるね PV

02.そばにいるね Live version

03.Making of「そばにいるね

三木道三スーパーベスト

01.Life Time Respect original mix

02.Life Time Respect 2008

03.Life Time Respect English ver.

04.Life Time Respect a cappella ver.

05.Life Time Respect Tokyo ver.

06.Life Time Respect Disco ver.

07.Life Time Respect T.K remix

08.Life Time Respect EURO MIX

09.Life Time Respect Korean ver.

10.Life Time Respect Spanish ver.

11.Life Time Respect HΛL'S MIX

12.Life Time Respect instrumental

初回限定ボーナストラック

13.Life Time Respect Orchestra Version

14.Life Time Respect Jazz Version

2018-10-25

Even though you run by yourself, you're no actually alone.

You're always running with someone else.

2018-10-11

anond:20181011134402

左様。欧米こそ至高 の はてなーに習い、オックスフォード辞典より、

otaku
(in Japan) a young person who is obsessed with computers or particular aspects of popular culture to the detriment of their social skills.
‘every other otaku can run on about their hobby endlessly’

大衆文化特定の側面にこだわるあまり社会性を損ねるそうである

えらいっこっちゃなぁ

では英語圏オタク意味のあるgeeknerd はどうだろう?

geek
1 An unfashionable or socially inept person.
1.1 usually with modifier A knowledgeable and obsessive enthusiast.
‘a computer geek

社会不適応者だそうです、容赦ないね

nerd
1 A foolish or contemptible person who lacks social skills or is boringly studious.
‘I was a serious nerd until I discovered girls and cars’
1.1 A single-minded expert in a particular technical field.
‘a computer nerd

いちばん表現マイルドではあるが社会性に欠けるガリ勉だそうな

しかし、いちばんマイルドっぽいnerd日常では単なる悪口らしい

かにgeek日本でも自称したり褒め言葉に使ったりするがnerdは無い

まぁいずれにせよ自ら『社会性に問題がある』と表明するのは賢い振る舞いとは言えないので

バカでおおまかに問題ない

2018-09-26

anond:20180926173441

“If you run into an asshole in the morning, you ran into an asshole. If you run into assholes all day, you're the asshole.”

― Raylan Givens("Justified")

2018-09-08

Completely run out of my patience with a stupid middle-aged man.

2018-09-04

F5キー

最近 Visual Studio を使っている。

デバッグの開始」が F5キー に割り当てられていて、チョコチョコっと打ってはF5キー、ってのを繰り返していた。

何度も繰り返していると、突然昔の記憶フラッシュバックした。

小学生の頃の部屋とパソコンで、ポチポチコードを打っては F5 キー 、を繰り返している光景だ。

しか、F5キーに "RUN"コマンドプログラム実行)が割り当てられていた。

どうりで、体が馴染んでいるわけだ。

2018-08-18

俺にはAndroidアプリ開発なんて無理だわ…

Android Studioダウンロードして公式チュートリアルやってるんだけど、いきなりつまづいたし。

アプリ実行できないし。

https://developer.android.com/training/basics/firstapp/running-app

まで来たけどビルドが出来ないし。(ビルドじゃないのか、gradle sync?とかいうやつ?)

org.gradle.internal.resource.transport.http.HttpRequestException: Could not HEAD 'https://jcenter.bintray.com/org/ow2/asm/asm-analysis/5.1/asm-analysis-5.1-sources.jar'.

とか言われとるし。

ネット環境ちゃんとあるのに。

プロキシかいらんことしてないのにし。

上のjarドメインping送ってみたら100%ロスしとるし。

オンラインping送信サービス使っても同じだし。

そのせいか

Android Studio で、[Project] ウィンドウの [app] モジュールクリックしてから、[Run > Run] を選択しま

RunRun選択できないし。

グレーアウトしとるし。

もう意味分からんし。


いや、多分サーバーが死んでることが問題なのは分かる。

からないのは、ネット環境がないとアプリを実行することすら出来ないということだ。

サーバーが死んでたらその間何も出来ないのか。

そしてツイッターで誰も何も言ってないの見ると、誰も大した問題だと思ってないのか。

もう良い。俺にはAndroidアプリ開発は合わない。

Android開発者はこんな地獄の中頑張って開発してる自分を褒めたほうが良い。

じゃあの

追伸: このbintray.comとかいうクソがどこかのボットネット攻撃されて使い物にならなくなりますように。

2018-07-04

In night rain, walked to bookshop, got a book I'd ordered from shop last month.

The Book of Song.

"Run Way" by Shinichiro Hagiwara.

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん