はてなキーワード: Blocksとは
中国笙とオーケストラのための《Pink Elephant in Prentis》w/ score
https://www.youtube.com/watch?v=8iRGrZTa6Jo
"Pink Elephant in Prentis" for alto sheng and orchestra
Commissioned and premiered by Shanghai Philharmonic Orchestra (cond. Zhang Liang)
Prentis Hall is a building in New York City, where I spent a year (2015-2016) living in a sleeping bag and taking showers in the toilet. Prentis was built in 1909 and was initially designed as a pasteurization facility and milk bottling plant, then later used as a Heat Transfer Research Facility, conducting nuclear research and experiments, during the Manhattan Project. Columbia University acquired the building in 1949, and the building has housed Columbia’s Computer Music Center (then Columbia-Princeton Electronic Music Center) from the 1950s onwards. During my time there at the Computer Music Center, I have spent my days and nights exploring stimulating sounds using both analog and digital synthesizers, tape recorders, CTR monitors, and other equipments unfamiliar to me back then. Aside from the Computer Music Center, the building also housed studios for visual artists, and so I was able to meet many eccentric artists, where we ended up having long conversations every night on both significant and insignificant issues surrounding us.
Located on 125th Street in Manhattan, the “residents” of Prentis Hall were constantly harassed by the rumblings of the New York City Subway (which runs aboveground for 125th Street Station), the traffic from the highway nearby, the bustling of the streets of New York, and the construction noises from the nearby building sites. At nights, the screeching noises from the metal shop and the wood shop constantly rang throughout the building. At one point in time, the noise inspired me to imagine a gigantic pink elephant running through the narrow corridors of Prentis. The head and front half of the body was seemingly a normal elephant found in the wild. However, as I scanned my eyes further back, the body of the animal seemed to become more and more pixelated, and small 3D blocks were clearly visible on its back and hind legs, as if molded by an amateur creator in a Minecraft game. As the elephant advanced, some blocks fell onto the floor like water droplets falling from an animal soaked in water. I rubbed my eyes and shook my head, certain that I have entered a dream at some point during the night. The pink elephant walked past me and wandered into one of the many rooms the building offered. I timidly peeked into the room where the pink elephant disappeared into. The pink elephant seemed to have collapsed on the floor, its body, both the organic front and the pixelated back, expanding and shrinking as it sluggishly inhaled and exhaled oxygen.
After hours of staring at the pink elephant, I jumped back at a sudden startling noise from behind, which woke the pink elephant from its deep slumber. Furious, the pink elephant stood on its two pixelated hind legs, and stomped out into the corridors again, this time shaking off more 3D blocks from its back than when it first arrived. The organic front seemed to start to bloat up like a balloon for reasons unknown to me, and the pixelated back grew smaller and smaller due to its parts crumbling down on the floor. In a blink of an eye, the inflated front side split from its pixelated rear, then with a deafening pop, exploded into thin air like a burst balloon. What was left were the pink 3D blocks of all sizes, scattered around on the corridors of Prentis Hall.
Chatori Shimizu: https://www.chatorishimizu.com/
Shanghai Philharmonic Orchestra: http://www.shphilharmonic.com/
Oculus questをPCに繋いだり繋がなかったりで遊んでる
___
quest単体でできるやつ
https://www.moguravr.com/half-half/
● Sports Scramble
https://www.oculus.com/experiences/quest/705576999566582/?locale=ja_JP
テニスとか野球とかボーリングが出来るんだけど、バットが釣り竿になったり球がビーチボールになったりして楽しい
観客がかわいい
●virtual virtual reality
https://www.moguravr.com/virtual-virtual-reality/
指示に従わない遊びが出来るのが楽しい
___
steamに繋いでやるやつ
https://shinrinmusic.com/google-blocks-tools/
ローポリ特化型で扱いやすいけど確かそろそろサービス終わる…?
https://www.moguravr.com/medium-adobe-edition/
クソ重いけど触り心地は楽しい
Adobeが買収した
●sky world
https://www.moguravr.com/skyworld/
おもちゃ感満載ですごく好き
いわゆるウィンドウ切り替えみたいなやつはレバーでガッチャン!だし、戦闘になると盤面がグルンと回るのが最高
擬似遊戯王
2021/05/05追記
ブロックチェーンや暗号通貨、Web3.0、Dweb というのはここ数年、そしてこれからのバズワードであるようだ。
ここ一週間ぐらいだろうか。マイナンバーにブロックチェーンを導入しようとしている事業に関して色々な議論が発生しているようである。例によって議論に向かない Twitter 上で発生している。というか何が議論の中心になっているのかイマイチよく分からない。ただ雑然と荒れているという感覚がある。
私は技術・歴史・文化といった面からブロックチェーンや暗号通貨に対して知識がなく、学び始めたのはここ一ヶ月と言ってもいいだろう。学ぶ、といっても転がっている日本語の一般的なメディアの記事を気が向いたときに読み散らかすぐらいである。真に技術的なことは何一つ分からない。暗号通貨は Bitcoin とEthereum しか知らないし所持しているのはたまたま貰った僅かな ETH しかない。金銭的に貧しい多摩川に転がっている石くらいどこにでもいる17歳JKである。と逃げの文言を置いておく。
囲み取材で数十秒話したことが記事になっているので、正確に伝わって無さそうです。
・マイナンバーカードをいずれカード不要にしてスマホにインストールできるようにしたい
・その前にそもそも、普及のためマイナンバーカードの発行総数を増やす必要がある
という趣旨かと。
加納氏のこの時期のタイムラインから現在に向けて遡れば様々な第三者の感想や疑問を得ることができるだろう。これらに纏めて答えているのが以下の記事である。
ブロックチェーンの優位性①疎結合|加納裕三/Yuzo Kano
https://blog.blockchain.bitflyer.com/n/n4b45329e308c
加納氏とは一体何者なのかは以下を参照。
東京大学大学院工学系研究科修了。ゴールドマン・サックス証券会社に入社し、エンジニアとして決済システムの開発、その後デリバティブ・転換社債トレーディング業務に従事。
2014年1月に株式会社bitFlyerを共同創業し、2019年5月に株式会社bitFlyer BlockchainのCEOに就任。
bitFlyer創業以降、法改正に関する提言や自主規制ルールの策定等に尽力し、仮想通貨交換業業界の発展に貢献。
日本ブロックチェーン協会代表理事、ISO / TC307国内審議委員会委員、官民データ活用推進基本計画実行委員会委員。
2018年G7雇用イノベーション大臣会合、2019年V20 VASPサミットに出席。
ttps://finsum.jp/ja/2019/speakers/recQMoKK5nD9yb8Ht/profile/
ブロックチェーンを語るうえで何が重要かというと、その言葉の定義である。議論に参加している人が同じ言葉を使っているのに、各人の言葉に対する定義が異なっていると、言葉は理解できるが内容が理解できないといった状況に陥ってしまう。このことは実生活でも頻繁に起こっているように思えるが、Twitter という短文が好まれるプラットフォームでは著しくないがしろにされ不毛な議論を生む原因になっている。
加納氏が代表の JBA (日本ブロックチェーン協会)に依ると、ブロックチェーンの定義は以下の内容である。
ブロックチェーンの定義
1)「ビザンチン障害を含む不特定多数のノードを用い、時間の経過とともにその時点の合意が覆る確率が0へ収束するプロトコル、またはその実装をブロックチェーンと呼ぶ。」
2)「電子署名とハッシュポインタを使用し改竄検出が容易なデータ構造を持ち、且つ、当該データをネットワーク上に分散する多数のノードに保持させることで、高可用性及びデータ同一性等を実現する技術を広義のブロックチェーンと呼ぶ。」
定義策定のアプローチ
まず、Satoshi Nakamoto論文およびその実装である、ビットコインのブロックチェーンをオリジナルのブロックチェーン(以下「オリジナル」)として強く意識しています。
狭義のブロックチェーン(定義1)は、オリジナルを意識し、それが備える本質的で不可分な特徴を捉え、言語化しました。
広義のブロックチェーン(定義2)は、昨今〜今後の技術の展開を鑑み、オリジナルが備える特徴であっても、別の実装方式や別の目的への展開などにおいて、置換や変化が行われていく広がりを許容しながらも、特徴を捉えられるよう、言語化しました。
総務省のページも見つけたが JBA が定義するものを基礎としている。
ttps://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h30/html/nd133310.html
私が疑問と漠然としたモヤモヤ感を抱くのは、最近の一般層で使われているブロックチェーンの定義には「信頼できる第三者が不要である」という点が抜け落ちているように思われることだ。非中央集権SNSで暮らし脱中央集権を推進したい私にはこの点が"ブロックチェーン"の一番重要な点であると思うが、JBA の第一定義にはこの点が記載されている。不特定多数へのインセンティブによって不特定多数による合意を形成している。これによって「信頼できる第三者が不要である」は満たされている。
blockchain (3.6)
distributed ledger with confirmed blocks organized in an append-only, sequential chain using cryptographic links
Note: Blockchains are designed to be tamper resistant and to create final, definitive and immutable ledger records.
distributed ledger (3.22)
ledger that is shared across a set of DLT nodes and synchronized between the DLT nodes using a consensus mechanism
Note: A distributed ledger is designed to be tamper resistant, append-only and immutable containing confirmed and validated transactions.
ISO の定義によれば、ブロックチェーンは、暗号化リンクを使用した一連の鎖で、追記のみで構成された確認済みブロックからなる分散台帳を指す。改ざんに強く、最終的で確定的で不変の台帳記録を作成するように設計されている。分散台帳は、一連の DTL(分散台帳技術)ノードで共有され、合意メカニズムを使用して DTL ノード間で同期される台帳である。確認された有効なトランザクションを含む全てが、改ざん耐性、追記のみの不変性を持つように設計されている。
さて、加納氏の投稿やその他の加納氏に批判的/賛同的な人たちの反応を見ても、彼らの言っている内容がブロックチェーンの定義を満たすものなのかいまいち分からなかった。
・ビザンチン耐性(BFT)
・改ざん耐性
私はブロックチェーンの主な利点はこの5つ(ただし5つにだけではない)だと考えています。これをここでは5大利点と呼びます。
なおかつ、この5大利点を概ね満たしているものをブロックチェーンと呼んでいます(ただしブロックチェーンと呼んでいるものは、すべてこの定義だとは言ってない。かつ、ブロックチェーンの厳密な定義はこれではない。)
なぜ前提として厳密な定義を加納氏の言葉で説明せずに、勝手に加納氏が定義した内容を”ブロックチェーンである”と語っているのか理解に苦しむが、加納氏の説明したい"プライベート・ブロックチェーン"を ISO の定義を基に判断すると、
加納氏の上記の2つの投稿からは、"プライベート・ブロックチェーン"と"パブリック・ブロックチェーン"のどちらを指しているのか不鮮明ではあるが、note の記事では"プライベート・ブロックチェーン"を想定している、と明記されており、議論の発端となったマイナンバーとブロックチェーンに関しても"プライベート・ブロックチェーン"を指していると思われる。5大利点を満たす"プライベート・ブロックチェーン"は存在しないのでは…。
"一方で、誤解と批判を恐れずに書けば、ブロックチェーンがBitcoinの論文に端を発するものであるとするならば、いわゆるプラベートブロックチェーンやコンソーシアムブロックチェーンと呼ばれているものは、ブロックチェーンと呼ぶのをやめて、「タイムスタンプ2.0」のような別の言葉を使うことも考えてはどうだろうか。それは、これらの技術が、リンクトークン型タイムスタンプのデータ構造の上に、決められたノードによる合意アルゴリズムを加え、記録した情報に対するビジネスロジックに応じた情報処理を加えたものであるからだ。根っこの技術は、同じHaberらによるタイムスタンプを元にしているものの、ブロックチェーンの発端となったBitcoinの論文が目指した「信頼できる第三者機関を不要にする」という方向とは別の方向の進化をしているもので、その別の2つの方向のものを同一の枠で扱うことには無理があり、理解や発展を考える上で両方にとって弊害がある。"
https://link.medium.com/TgeOXv8Dlab
https://link.medium.com/4pz5oNlHpab
これらの記事を読むと、そもそもブロックチェーンと呼ばれるものにおいてパブリックではないものは、なんびとも信用しない状況において根本的に非改ざん性を保障することができないのではないかと感じる。"パブリック・ブロックチェーン"こそがブロックチェーンであり、他のものはブロックチェーンから発展してきた技術を使ったブロックチェーンの定義を満たさない分散台帳なのではないか。
加納氏に関して覚えておきたいことは、彼は bitFlyer の CEO であり bitFlyer は miyabi という"コンソーシアム・プライベートブロックチェーン"を開発しているという点だ。当然行政に対して彼がブロックチェーンを推しているのはこれを売り込むためなのであろう。これが厳密にブロックチェーンなのかは置いておいて、このプロダクト自体は素晴らしい取り組みだと私は感じる。デジタル化によって今までの煩雑な手続きが簡単になる可能性は大いにあるし、公的文書の保存にも役にたつ。黒塗り秘匿文書を撲滅しろ。
ただ、ブロックチェーンをただの空虚なバズワードとして扱うのではなく、厳密な定義の上で使うのは大事なことだ。今回の件は、果たして全てにおいて加納氏が良くない、と言えるのだろうか。言葉というのは多数が使うことによって定義が決まる。時代が変われば定義が変わってしまうこともある。ブロックチェーンという言葉を便利な魔法の言葉にしてしまったのは誰だろう。本質を見極めない我々だ。AI 搭載!!といたるところで見る言葉だが、何をもって AI と呼んでいるのか不思議になる。実際のところ今まで"システム"と呼んでいたものなのに。日々の中で言葉をしっかりと見つめ直すのは大事だ。
この記事は、そもそもブロックチェーンとは何か、という個人的な疑問をまとめたものであり、加納氏を批判する意図は無かったわけで、最後の締めはやんわりとしたかった。だが、加納氏は立場的には日本ブロックチェーン協会の会長で、言葉を定義する立場である。言葉を定義した側がこの有様というのは遺憾である。日本の行政のデジタル化の推進は頑張って欲しい。
・出版の裏側
チャンネルの性質上ピー音や伏せ字も沢山あるがそれでも十分面白い
漫画家やライトノベル作家志望の人間からも多くの質問が寄せられるが
「まずはネットで腕試ししてから送ってこい」というのが最近の定番の返しになっている
ゲストはいつも匿名形式での参加となっているためコメント欄では推理大会が開かれる
女装に関してズブの素人だった人間が徐々にレベルアップしていく様子を楽しめる
最初はただ単にユニクロなどで買ってきたものを着るだけだったが
わずか一年の間にガチで女性にしか見えないレベルにまで到達してしまう
建築家のスキルを生かしてLEGOで家を組み立てるというチャレンジをしている
ただ単にガワだけを再現するのではなく機能性の高い本格的な住宅を建築中
”Primitive Technology”を連想するという人がコメント欄にもちらほらいる
・巷のデバッガー
街なかを歩いているときに見かけた様々なものを紹介するという動画を上げているが
見たものをあたかも”現実のバグ”であるかのように紹介するというユニークな手法をとっている
加えて豊富なゲーム知識と絡めて説明することでよりいっそうのおかしみを漂わせている
コメント欄では「これがゲーム脳か……」というような文言が定番化している
海外ファンからは映画マトリックスになぞらえてモーフィアスとあだ名されている
・ミニヨンズ
金と暇を持て余したアラサー兄弟がひたすらミニ四駆の限界に挑み続けている
回を増すごとにヤバさがインフレしているところも懐かしの少年漫画っぽくていい
結構面倒
int blocks[100][100];
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, &amp;Rect, hBrush); } } DeleteObject(hBrush); return FALSE; }
この辺は めんどくさくはあるけど みてわかってほしい
描画したWriteBoxとおなじ BOXが落ちた場所(BOXの有無)を保存しておく
ここがわかりにくいといえば わかりにくい
BOOL SaveBoxI() { blocks[y ][x] = 1; blocks[y+1][x] = 1; blocks[y+2][x] = 1; blocks[y+3][x] = 1; return TRUE; }
// 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(&amp;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(&amp;msg, NULL, 0, 0, PM_REMOVE)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &amp;msg)) { TranslateMessage(&amp;msg); DispatchMessage(&amp;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, &amp;ps); this->OnPaint(ps); EndPaint(hWnd, &amp;ps); ::UpdateWindow(hWnd); RECT Rect2 = { 0,0,48*9,48 * 100 }; InvalidateRect(hWnd, &amp;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, &amp;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, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.left += width; Rect.right += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;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, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.left += width; Rect.right += width; ret = FillRect(hdc, &amp;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, &amp;Rect, hBrush); //Rect.left += width; //Rect.right += width; Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;Rect, hBrush); Rect.top += width; Rect.bottom += width; ret = FillRect(hdc, &amp;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 &amp;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, &amp;ps); MyWindow *target = MyWindow::find(hWnd); target->OnPaint(ps); // TODO: HDC を使用する描画コードをここに追加してください... EndPaint(hWnd, &amp;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; }
http://okajima.air-nifty.com/b/2011/01/2011-ffac.html
ぷよぷよを解く問題をやってみた
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { StringBuilder[] blocks = { new StringBuilder("**GYRR"), new StringBuilder("RYYGYG"), new StringBuilder("GYGYRR"), new StringBuilder("RYGYRG"), new StringBuilder("YGYRYG"), new StringBuilder("GYRYRG"), new StringBuilder("YGYRYR"), new StringBuilder("YGYRYR"), new StringBuilder("YRRGRG"), new StringBuilder("RYGYGG"), new StringBuilder("GRYGYR"), new StringBuilder("GRYGYR"), new StringBuilder("GRYGYR") }; bool updated = true; while (updated) { breaked: DumpBlock(blocks); for (int i = 0; i < blocks.Length; i++) { for (int j = 0; j < blocks[i].Length; j++) { char c = blocks[i][j]; if (c == '*') continue; updated = false; if (KillBlocks(blocks, i, j)) { updated = true; goto breaked; } } } } DumpBlock(blocks); Console.Read(); } struct Point { public int x, y; public Point(int x, int y) { this.x = x; this.y = y; } } static bool KillBlocks(StringBuilder[] blocks, int x, int y) { bool[,] visted = new bool[blocks.Length,blocks[0].Length]; MarkBlock(visted, blocks, x, y); Queue<Point> queque = new Queue<Point>(); for (int i = x; i < blocks.Length; i++) for (int j = y; j < blocks[i].Length; j++) if(visted[i,j] == true) queque.Enqueue(new Point(j,i)); if (queque.Count < 4) return false; while (queque.Count > 0) { Point p = queque.Dequeue(); RemoveBlock(blocks, p.x, p.y); } return true; } static void MarkBlock(bool[,] visted, StringBuilder[] blocks, int x, int y) { if (x < 0 || y < 0 || x >= blocks.Length || y >= blocks[0].Length || visted[x, y] == true) return; char c = blocks[x][y]; visted[x, y] = true; if (x + 1 < blocks.Length && blocks[x + 1][y] == c) MarkBlock(visted, blocks, x + 1, y); if (y + 1 < blocks[0].Length && blocks[x][y + 1] == c) MarkBlock(visted, blocks, x, y + 1); if (x > 0 && blocks[x - 1][y] == c) MarkBlock(visted, blocks, x - 1, y); if (y > 0 && blocks[x][y - 1] == c) MarkBlock(visted, blocks, x, y - 1); } static void DumpBlock(StringBuilder[] blocks) { foreach (StringBuilder s in blocks) Console.WriteLine(s); Console.WriteLine(); } static void RemoveBlock(StringBuilder[] blocks,int x,int y) { int i; if (y == 0) { blocks[y][x] = '*'; return; } for (i = y; i > 0; i--) { blocks[i][x] = blocks[i - 1][x]; } blocks[i][x] = '*'; } } }
タグ「delphi」を含む注目エントリー - はてなブックマーク
Delphiアプリケーションのメモリリーク検出法 (山本隆の開発日誌)
http://www.componentsource.co.jp/features/delphi/
TMS Software | Productivity software building blocks
Components > Effects and Multimedia > Video. Torry's Delphi Pages
Components > Effects and Multimedia > Audio. Torry's Delphi Pages
Components > Effects and Multimedia > Voice. Torry's Delphi Pages
Components > Effects and Multimedia > Direct X. Torry's Delphi Pages
eXeScope(Windows95/98/Me / ユーティリティ)
Delphi-ML〓〓〓〓〓〓〓〓〓〓〓??About Delphi
Delphi Q & A 〓f〓〓〓〓 〓〓〓〓〓〓O〓〓(HTML〓o〓[〓W〓〓〓〓)
Delphi WAVEサウンド音を鳴らす/Tips & Tricks
5分ではじめるDelphi - 第1回 簡単なメディアプレーヤの作成(前編)
Controling sound volume from code
lsMicrophone: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
MIXERLINE_COMPONENTTYPE_DST_SPEAKERS
MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT
SwissDelphiCenter.ch : ...set the volume for the microphone/ mute it (enhanced)?
Components > Sound Effects > Mixer. Torry's Delphi Pages
PlaySound('C:\WINNT\Media\start.wav', 0, SND_FILENAME or SND_ASYNC);
Delphi6でプログラミング ビットマップの半透明コピー AlphaDraw
procedure TForm1.Button1Click(Sender: TObject);
bmp1.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color\FINANCE.BMP');
bmp2.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color\FACTORY.BMP');
Form1.Canvas.Draw(10,10,bmp1);
Form1.Image1.Canvas.Draw(10,10,bmp2);
bmp1.Free;
bmp2.Free;
無料版Delphi6でSTGをつくるためのプログラミング講座 Ver.2005 Jan.
SwissDelphiCenter.ch : ...get the MAC Address?
もっと楽にGUIとの連携がしたい:Python + Delphi = P4D(Python for Delphi) - ふにゃるん
Delphi WindowsのOSのバージョンを取得する/Tips & Tricks
SourceForge.net: Gecko SDK for Delphi
BDS(Delphi/BCB)用SQLiteライブラリ (山本隆の開発日誌)
SwissDelphiCenter.ch : programming tips
ナッキーの「Turbo Delphiはじめて奮戦記」- 第1回 Turbo Delphi のインストール
フリーのTurbo Delphiで始めるWindowsプログラミング:ITpro
フリーのTurbo Delphiで始めるWindowsプログラミング:ITpro
http://torrent.borland.com/turbo_hotfix_rollup.zip
http://torrent.borland.com/prereqs_jp.zip
http://torrent.borland.com/turbodelphi_jp.exe
(1) \dotNETRedist\dotnetfx.exe
(2) \dotNETRedist\langpack.exe
(3) \dotNETRedist\NDP1.1sp1-KB867460-X86.exe