「RC」を含む日記 RSS

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

2020-11-30

anond:20201129180126

まず第一に君を尊敬する。

凄く頑張って、真面目に勉強して、どうやって戦うかを考えてプレイしただろうことが、非常によく分かるからだ。

からこそ、どのように戦い、どのように負けたのかが、投稿内容からまざまざと見える。

  

自分が選んだのはファウストだったがランダム性が試合に変化をもたらして非常に楽しく感じていた。

「何が出るかな?」は出てきたアイテムに応じて動きを変える必要がある必殺技だ。

ただ漫然と投げているだけでは、ファウストの得意とする位置プレッシャーのない隙きを晒すだけの愚行であり、

「状況に応じた技の選択が出来ていない」「キャラ対をもっとしっかり練った方がいい」

から

画面端に追い込まれひたすらカウンターをとられる試合が続いた。

当然のようにこうなる。

  

格ゲーテク披露するゲームじゃない。相手の体力をゼロにするゲームだ。

ソルの飛びモーションが見えたらしゃがみ前歩きで空かせる

こういうことは、戦える人が勝率を上げるためにすることで、初心者が狙うことじゃない。

必要なのは直接的な勝ち筋、相手への触り方と、ダメージの取り方、カタへの嵌め方だ。

  

必要なのは地上を制圧する遠Sや2HS、入れ込み・生出しの「レレレの突き」であり、

飛んでくる相手に対する置きKや6P対空であり、意表を突く黄含むドアぶっぱやドリルであり、

それらの選択肢を警戒して対戦相手ジャンプを見せたり、立ち止まったりダッシュガードをしだして初めて、

「何が出るかな?」が機能するようになるし、相手を詰めて行けるようになる。

  

まあ、その上でカタに嵌める部分、

ループする起き攻めでダメージを稼ぐ部分が非常に難しいし。

そもそも初心者対応型のキャラであるファウストを使わせるのが土台不可能なんですよ。

  

まり選ぶべきは、特殊操作がなくてもダウンが取れて起き攻めに行けて、中下段、表裏で崩せる無敵技持ち…… 

そう、適当攻撃ボタン必殺技ポチポチするだけで相手対応要求するレオホワイトファングです。

  

判定が強く長いHSと見てから対処の難しいS弾をブンブン振り回し、

ガード・ヒット関係なく適当に6HS, 波動S, 波動HS(ガードさせて有利)に繋いで表裏を翻弄

波動Sがガードされても二段目止めと三段目RC対応強要し、

三段目RCがヒットしていれば空中コンボ波動HSで地上に引きずり下ろしたら、

密着有利からボタンを押すだけで見切りにくい中下段連携起き攻めおかわりだし、

三段目までにヒット確認出来ていれば微ダHS弾黄から知らなければ対応しにくい起き攻めだ。

レオだ。レオホワイトファングを使うんだ。

騙されたと思って敵をサバンナに誘い出して滅茶苦茶に蹂躙するんだ。

2020-11-29

anond:20201129190707

でも、3Dプリンターがなかった時代はその金型までが大変だったんだと思う

3Dプリンターは…、みたいにダラダラ書いたけど、自分なりの結論としては、3Dプリンターは試作用途には断然アリだと思う

精度が多少悪かろうが、ときどき大失敗しようが、基本CAD通りの物体がとりあえず手に入るというメリットは大きい

からCAD3Dプリンターを行ったり来たりして試作を詰めていって、

これ以上ないところまで行ったらDMMに頼むとか金型作るとかが3Dプリンターの使い方としていいと思う

最終完成品を3Dプリンターで作って一般消費者に売ろう、とか考えると失敗すると思う

Togetterのまとめのどこだったか失念したんだが、3Dプリンターミニチュアライフルとか作ろうとしてたと思う

それをワンフェス?だったかその手のイベントで売りたいみたいなんだけど、そのライフルが曲がって出力されてしまい、

かなり一喜一憂しているのを読んで、あー、光造形でも理想通りにはならんのだなー、と思ったり

うろ覚えだけど、光造形だとたしか印刷する位置によって、真ん中なのか端っこなのかで精度が変わるとかあったと思う

FDMでもあるw普通にあるw

同じ部品を一度に多く欲しいときに、コピーして並べて出力するわけだけど、その出力結果が配置した位置によって精度が異なってしま

ネジみたいなものだと致命的

まあネジを出力するのは3Dプリンターパフォーマンス自慢的な意味合いもあるので、規格にあるネジなら3Dプリンター出力はオススメできない

ネジ以外の部品も同様で、規格にある部品ホームセンターに行ったほうが無難

でも、3Dプリンターがない時代だったら、樹脂材ならプラ板とかエポキシパテとかプラモフルスクラッチまがいのことをしなければならなかったけど、

それに比べれば3Dプリンターの方が断然楽ではある

から3Dプリンター無駄な代物ではないのだけど、夢を見すぎて買うと痛い目に遭うと思う

買う前にThingiverseとか見て、こういう使い方だったらできるのかなあ、と購入後の使い道を想像してみるといいと思う

https://www.thingiverse.com/

GitHubにもロボット作ったり人工知能の車とか作ってる人がCADデータSTLがあるので探してみるといいか

Thingiverseの注意点は、絶対投稿者本人が出力してないだろ、と思えるような精巧すぎるものとかはスルーした方が無難

あと、いいね!みたいな評価が高くても、評価者も作らずにいいね!を押してるので、

作品ごとに、自分も出力してみた、みたいな箇所があるので、それを見て色んな人がそれぞれのプリンターでどう出力されたかを見るといい気がする

まあ「沼」だね

3Dプリンターは沼

でもArdinoのケース作ったり、Arduino組み込んだロボットみたいなの作ったり、やろうと思えばRC飛行機とか作れるし、

自分で出力して、自分で楽しむ、なら問題ないんだよなあ

ときどき夢見すぎる人がいて、これがあれば市販プラモみたいなのコピーし放題じゃん、みたいに思うと痛い目に遭うと思うけど

あと、自分の家の洗濯機排水口の接続部に問題が会ったので、3Dプリンター部品設計して出力して自分で直したw

メーカーWeb調べたら古くてサポート切れてるわ、

賃貸管理人に問い合わせたら、修理業者と一緒に部屋に行くんで都合が良い日を教えろだの、壊したんかーおまえはーみいたいな剣幕で対応されて、

いや、壊してないから、どっちかというと排水口より自分の古い洗濯機問題から、と思って、どうしよーかー、と思ってたんだけど、

あ!3Dプリンターあるじゃん

と思って、排水口と洗濯機の結合部を定規で簡単に測って、簡単部品設計して、まずはPLAで出力

水が流れすぎることが原因だと思われたので、流量制限する部品設計した

2回目の出力で設計問題なさそうなことが分かったのでABSで出力し直した、で数年間問題なく使えてるw

PLAは水に弱いしお湯で変形したり溶けてしまうので

2020-11-24

高いところにいると遅く感じ、低いところにいると速く感じる anond:20201121194314

最近RCカーレース本番でも車体にカメラを設置することがOKみたいで、YouTubeで見つけた動画を眺めていた。

私はRCカーのようなコントロールが非常に苦手で、例えば初代のバイオハザードみたいなのは苛々してプレイすら無理だった。

同時期のDoomQuakeのようなFPS問題ないのでそればかりやっていた。

世代プレステバイオハザードのような定点カメラタスクをこなして動画を観させられるようなRPGが非常に苦痛であった。

一方で同じプレステでもPsygnosisのWipEoutのような洋ゲーは好きだった。

あと初代プレステ攻殻機動隊は今でも好きなゲームである

これもFPSであるが、日本独自実装の苦労も感じられる素晴らしいゲームだった。

ジャンピングフラッシュ!のようなFPS問題なかった。(ただジャンピングフラッシュ!は退屈すぎた

RCカーに設置したカメラ映像自分には非常に好感が持てた。

これはもうレースゲーである

これなら自分のような人間でもRCカー運転する気になるというものである

そもそも最近ドローンHMDの組み合わせによる運転レース常識になっている。

ただ、これはこれでちょっと怖い。

運転が怖いのではなく、振り向かないと後ろが見えないというのが逆に怖い。

HMDマルチコプター運転して自分に衝突させたり、他人に衝突させるのが怖いのである

個人的には寧ろ定点カメラHMDを使わない操作の方がマルチコプター安心できる。

農家RCヘリコプター農薬散布でもよく事故を起こしているような気がする。

あれは当然、定点カメラであるわけだが、それでも事故るのである

自分ポケバイカートちゃん運転したことがないのだが、あれは速度が数字より速く感じられる。

不思議である

速度的には大したことがないわけで、自動車であれば寧ろのろく感じられるかもしれない速度である

しかし、視点を低くしただけで、地面のアスファルトの速い流れが感じられる。

うっかり転倒したら痛いだろうな、と思うわけだが、こういうヒヤッとする感覚自動車に乗ってるときには感じられないものである

ネットで以下の砲神エグザクソンの1コマを見つけた。

https://pbs.twimg.com/media/C0zntbDUUAAiNBW.jpg

視点が高すぎると時速200kmでも遅く感じられることはありえると思われる。

ガンダムのような巨大な二足歩行は実現がほぼ不可能に思われるが、資源採掘などで使われる巨大な特殊車両

ロケットを運ぶような車両でも乗ればそう感じられるのではないだろうか。

同じように、遅々として進まないように感じられる現状、プロジェクトがあったとしても、

それは高い視点から眺めているからそう感じられるわけであって、

低い視点、例えばそれは泥臭い現場であったり、鉄道であれば線路工事している人達には違う速度で感じられるかもしれない、

そんなことを思ったのであった。

眺める高さ、場所によって、その速度の感じ方は変わるのではないだろうか。

2020-07-11

マイナポイント申し込みとの戦いの記録

7月からマイナポイント申し込みが始まったので挑戦する(たかが5,000円に飛びつく貧乏人です)

マイナポイントアプリ必要らしいのでダウンロードしにいく

スマホ対応機種であるが、「お使いのデバイスはこのバージョン対応していません」と出る。

どうもスマホ本体の機種だけでなく、通信事業者対応可否がある模様。(カードの読み取りに通信事業者制限してくる意味不明さに脱帽)

https://mynumbercard.point.soumu.go.jp/doc/nfclist.pdf

仕方がないのでパソコンからやることにし、マイナンバーカード読み取りに必要ICカードリーダーを購入(ソニー PaSoRi RC-S380 2,782円2020/07/11時点)

適当リーダー買って使えないとか辛いのでちゃんと公開されている対応機種を買う

https://www2.jpki.go.jp/prepare/pdf/nfclist.pdf

マイナポイント申し込みには、マイキーIDの発行が必要とのことで、キーを発行してくれるマイナプラットフォームというサイトにいく

https://id.mykey.soumu.go.jp/mypage/MKCAS010/

マイナポイントの予約(マイキーIDの発行)」ボタンを押すとInternetExplore11じゃないとだめだと怒られる。(今どきIE11指定とか大丈夫・・・)

IE11アクセスする(久々に起動)

マイナポイントの予約(マイキーIDの発行)」ボタンを押す

また怒られる

カードリーダーマイナンバーカードをセットした状態じゃないと進めない模様(ちっ)

カードをセットする(非接触リーダーだが、リーダー本体ちゃんと密着セットしないと読み取りエラーになる)

暗証番号を入れる

”予期せぬエラー”とでる(画面が進んだのでカードはずしてた)

カードをセットしたままじゃないとだめらしい。(エラー文の解読難易度の高さ)

ようやく申し込み画面に進む。決済サービス指定画面へ。

自分EDYを常用しているので、EDYで申し込もうとする

決済IDセキュリティコード入力を求められる(なにそれ?)

決済IDとはEDY番号のこと、セキュリティコードとはEDYカード記載されているコードの模様

自分は お財布ケータイEDYを常用しているのでどうすればよいのか調べる

お財布ケータイにはEDY番号はある。セキュリティコードはないとのこと。

さらに調べると、お財布ケータイEDY場合は、楽天EDYアプリから申し込んでと書かれている(楽天EDYアプリからできるのかよ・・・

楽天EDYアプリは入っているので、そこから申し込みしようとする

マイナポイントアプリ必要と言われる(前述の通り、自分スマホ通信事業者が非対応なので使えない。糞が。)

さらに調べると、お財布ケータイEDY場合は、セブン銀行ATMからも申し込みできる模様(セブンに行くのめんどくさい)

さら確認すると、セブン銀行ATMからの申し込み対応開始時期は9/1からとのこと。

終了

結論マイナポイントアプリ対応機種通信事業者場合で、かつ、お財布ケータイEDYの人は、ICカードリーダーを買ったところで無駄になる。申し込みは9/1以降(予定)セブン銀行ATM。それもすんなりできる気がしない。

パソコンスマートフォン以外の申し込み | Q & A | 楽天Edyで困った時は https://support.rakuten-edy.co.jp/faq/show/5932?back=front%2Fcategory%3Ashow&category_id=482&page=2&site_domain=default&sort=sort_access&sort_order=desc

5,000円のために2,782円のリーダーを買い、予約できずに徒労に終わったいう記録でした。

2020-06-12

引っ越しガチャ4回目またしても俺は失敗したようだ 不動産屋は○ね

一軒目

大量のヤスデ出現

毎日朝起きると天井に出現する

不動産屋は適当ガムテープ侵入経路であろう箇所を塞いだが以前変わらず 夢にまで見るようになり引っ越し

二軒目

壁がまあ〜薄い この時期はネット鵜呑みにしていてRC=防音性が高いイメージだけで選ぶ(ヤスデが完全にトラウマになってて早く引っ越したかったというのもあったが)

こんな話し声がはっきり聞こえるのかとただでさえ薄い上に隣人の民度が低く重低音の音楽が鳴り響く

不動産屋に仲介してもらって色々話してもらったが解決せず 引越し

三軒目

上下階の音が筒抜け ここで半分鬱病みたいになってた 

RCマンションでも硬い壁とそうでない壁があることを知り内見で異常に気を使いようやく硬い壁のマンションを見つける

…が上階の音が滅茶苦茶うるさい 足音何かものを落とす音が自分の部屋で落とすより聞こえる 脳に直接叩きつけられるような

不動産相談 変わらず

齢25にして大の男がワンワン泣き遺書まで書いた

部屋のひどさもそうだが不動産大手にも関わらず今までのどこよりも動きが遅く手紙だけでも二週間はかかっていた

不眠がひどくなり目にクマを初めて作った 包丁を手にとって上階のやつを大真面目に殺そうとしたことがあった 階段で盛大に転び冷静になって引き返したが まあそのぐらいブレーキが効いてなかった

貯金もこんな立て続けに引っ越せばすぐなくなる でも何回かまだ引っ越す余裕はあった でもまた次で失敗してお金をなくすとと考えると行動できなかった

そんな折にちょっとした臨時収入に合わせて給付金が入った 

ラストチャンスだと思い引っ越す

四軒目

引き戸がうるさい

内見は数え切れないくらい行った 不動産屋の言うことは信じずにRC最上階、壁が固く音が反響するような所、床はクッションフロア

そんな物件を見つけるには苦労したがやっとのこさ見つけられた

ただ懸念点が一つ引き戸があったこと 今まで住んでいた所にはないものでこういうのの音ってどうですかねと聞いてしまった たまたま不動産屋の年齢が近く親しみ易さが合ったからだろう

答えとしては鉄筋なので安心してもいい 苦情がはいたこともありませんと

なんでか分からないが信用してしまった 自分でも相当心が疲弊していたと思う

住んでみてやっぱり引き戸うるせーじゃねえーか!!

どっちかっていうと閉め方の問題な気がするがパアンッ!!って音が家中に鳴り響くんだよ異常だろ 

現状に関しては今からまた不動産相談となるが解決するかは分からない

クレーマー、神経質なのかと思われるかもしれないが音に関しては全て耳栓をしてそれでも防げなかった上で抗議している

正直もう疲れた 不動産のあのニコニコ顔を見るだけで吐き気を催すレベルまで来た

どうして自分だけどうしてこんなに運が悪いんだと四六時中考えてる 

こんないい加減な紹介の仕方しかしない不動産になんで金払ってるんだ なんでいい加減なやつらを通さないといけないんだ

やってること詐欺と一緒じゃねえか

こいつら○した上で捕まって警察の自供で同じようなことを話してそれがニュースにでも流れるなら世の不動産は少しでも変わるのだろうか

もう多分思考は狂ってる 異常者だろう 今はなんとかギリギリ自分をこうして俯瞰して見れてる

それができなくなったときは本当にニュースになるかもな そのときよろしくなお前ら

2020-02-02

anond:20200202090245

RCマンションを4つ経験してまったく無音だったのは1物件のみ。

もちろん構造にもよるが、隣人の民度によるところが大きい。

隣がキャバクラの寮だったときはさすがに無理で引っ越した。

家賃民度はほぼ相関するので家賃ケチってはいけない。

隣が男か女かも重要

女だったらまだ許せるが男のくしゃみとかゲーム音とかだと殺意が湧く。

引っ越しとき挨拶に行くというのも有効だったりする。

但しこれは民度の高いマンションに限る。

相手が誰か分からないところから聞こえる騒音なのかそうじゃないのかは

イライラ度が大分変わってくる。

賃貸住宅で物音に耐えられない。みんなどうしてるの?気にならないの

何度か引っ越してるんだけど、今回の家が上と隣の物音?に悩まされてる。

今は何かわからないが重低音ずーんって鳴ってる。

夜中は一人の足音が響いていて不眠症になってしまった。辛い。

カーテンの開け締めの音もする。

これでRCマンションなんだそうな。もう精神的に無理になって、管理会社に連絡したが対応は無し。

いろいろ調べたところ、戸境壁の厚みが無いとRCだろうが関係ないとのことだった。

ここで思ったんだが、物件情報に壁の厚みの記載いから、普通に選ぶと音が漏れ物件ほとんどじゃないのかって思った。

じゃあ、みんなどうしてるんだ?気にならないものなのだろうか?

どうしてますか?そもそも気にならないのですか?

ちなみに、耳栓イヤーマフノイズキャンセリングイヤホン音楽を流す辺りは試したのですが、効果は足りずと感じました。

次の家は分譲賃貸にしたのですが、契約後に壁の片方がコンクリではないことが発覚し、声が漏れてました。

もう精神的にだいぶきていて、こんなに音が気になるなら死にたいぐらいです。

2019-09-02

[]2019年8月はてブあとで読むトップ30リスト

285あとで/2602users 【転職エントリGoogle入社します|Lillian|note

265あとで/1967users 趣味で作ったソフトウェア海外企業に買われるまでの話 - knqyf263's blog

232あとで/1101users 2019夏、先輩が若手に贈る「お世話になった技術書60選」- 入門からガチまで – | DevelopersIO

231あとで/1177users 無料で読めるITまんが 2019年版 - Publickey

225あとで/2284users 【3868】コンサータによって自己連続性を失いつつある | Dr林のこころと脳の相談

220あとで/1144users 【無料公開終了】廃村で見つかった4人の少年死体から始まる民俗ホラーミステリー短編マンガめっちゃ惹き込まれる人たち - Togetter

202あとで/1000users 実はアイデアの宝庫? 刺激的なWikipedia記事150選|INSPIインスピ)|広告デザインアイデア教科書note

195あとで/1803users 平均年齢30歳のIT企業入社した還暦大工。「1カ月お試し」のつもりが一瞬でなじんだ理由 | BUSINESS INSIDER JAPAN

169あとで/829users 独学でWebサービスを作り起業した僕が選ぶ、オリジナルサービスを作る時に便利なツール19個|かずたか@プログラミング独学して起業した人|note

166あとで/1717users 「容姿が悪く、交際経験が一度もない」47歳女性鴻上尚史本音で応える (1/4) 〈dot.〉|AERA dot. (アエラドット)

163あとで/986users 「GitGitHub用語」の可愛いイラスト使用した解説に対して圧倒的わかりやすさを感じる人たち - Togetter

161あとで/1180users 高齢の両親のために、僕が「実家IT化」を目指してやったこと|tayorini by LIFULL介護

160あとで/1191users 徹夜明けに、知らない人とウイグルを旅した日々のこと|砂漠note

156あとで/853users SFマニアからビギナーまであらゆる層を満足させる、オールタイム・ベスト級の傑作SF短篇集──『なめらかな世界と、その敵』 - 基本読書

150あとで/1032users カメラ苦手な人向け 「カメラ大事故を起こさなポイント」が凄まじく参考になると大好評 - ねとらぼ

140あとで/874users 様々なTODOアプリタスク管理方法試行した結果最終的にプレーンテキストに行き着いた話 - みんからきりまで

134あとで/500users IPA情報セキュリティ白書2019」PDF版の無料公開開始! AIIoTなどをテーマ解説 - INTERNET Watch

131あとで/567users 深層学習の数理

131あとで/1130users 圧倒的キャリアを誇る勝間和代が「社会人にもなって、努力や成長なんて必要ない」と語るワケ|新R25 - 20代ビジネスパーソンバイブル

130あとで/983users TR-808開発者、元Roland社長の菊本忠男さんが40年の時を経て、新バージョンRC-808を発表。度肝を抜くサウンド拡張性を持ち無料リリース | | 藤本健の "DTMステーション"

126あとで/588users 秒間100万リクエストをさばく - Google共通認可基盤 Zanzibar - 発明のための再発明

125あとで/991users 15年間務めた会社に退社を切り出したら史上稀にみるクソ展開になった(後編) - 放浪軍師アプリ開発局

125あとで/1168users 香港が大変すぎて、見ていて悲しい|山本一郎やまもといちろう)|note

123あとで/1171users 今さら聞けない「慰安婦問題の基本を研究者に聞く――なぜ何度も「謝罪」しているのに火種となるのか(2019/08/07 19:45)|サイゾーウーマン

123あとで/493users Node.js徹底攻略ヤフーノウハウに学ぶパフォーマンス劣化コールバック地獄との戦い方 - エンジニアHub|若手Webエンジニアキャリアを考える!

122あとで/517users 新 GitHub Actions 入門 - 生産性向上ブログ

122あとで/907users 介護職歴25年、メイプル超合金安藤なつが語る、介護現場のつらさと楽しさ|tayorini by LIFULL介護

121あとで/531users VSCodeコードを書く時に役立つ設定・テーマ機能拡張、知っておくと便利なテクニック | コリス

119あとで/1266users 教育ボランティア出会った小4の子の話|よんてんごP|note

119あとで/714users 「ビジホの朝食バイキング」を極めた達人が教える、出張旅行で一度は泊まってみたい全国のビジネスホテル - メシ通 | ホットペッパーグルメ

2019-08-29

マンションの音がするかどうかは、どう判断すればいいの?

素材か、隣との隙間か、構造かな

 

前のマンションは床を蹴ってもペチペチって音するしコンクリって感じだったんだけど

今のマンションは床を蹴るとボンボンって太鼓みたいに音がする

もちろん上階の足音バンバン聞こえる(隣は居ないのでわからん

どっちも鉄筋で、前者は10階、後者は3階で後者のほうが高級マンション

 

タワマンとかなら響かないのかなと知り合いに聞いたらそうでもないらしい

引っ越す前にわからんのか

 

___

 

ググって調べた

https://ietty.me/magazine/bouon02/

>壁の厚さが200mm以上の物件を選ぶといいよッ!

 

なるほど

鉄筋かRCかとかは関係ないのか

2019-07-13

anond:20190710221728

耐震壁式のRC構造マンションを買え。

具体的には3〜5階建ての団地だ。ただし川沿いとかの軟弱地盤はやめとけよ。

東京は知らんが地方なら400万円も出せば買えるだろう。

マンション耐震基準1981年を境に大きく変わった。

1981年以前に建てられたマンションは旧耐震扱いでかなり安い。

マンション工法にはラーメン構造と壁式構造というのがあって、壁式構造耐震基準は旧耐震と新耐震ほとんど変わっていない。

この壁式構造っていうのは5階建てまでしか作れない。公団公社分譲の団地で多く採用されている。

マンション間取りを見たときに、柱や壁の出っ歯理がなくて平面な壁で構成されているのが壁式構造だ。

リノベーションするときに壁式だと間取りを大きく変えられないから、「中古マンションを買うならラーメン構造おすすめ!」なんて言われているが、耐震を気にするならまったく逆だ。

団地を安く買ってリノベーションして住むのだ。

エレベーターがないのは我慢しろ

揺れにくい地盤団地は往々にして丘の上や斜面に立っていたりするが、坂も我慢しろ

揺れにくさと坂や階段トレードオフだ。

エレベーターなんて無いほうが管理費修繕積立金が安く住む。

団地を買うのだ。

2019-06-14

anond:20190612225831

うちもそんな感じ

書類上はRCマンションなのに、夜はTVだかYoutubeだかの声がいつまでも聞こえ、朝は隣の携帯バイアラーム振動音で目覚める

家賃比較的安いか我慢してるけどね

しかし防音がしっかりした壁ってどう判別すればいいんだ?

この物件の壁だって、叩くと木造のようにドンドン言うわけではなく「ボスッ…」と衝撃が吸収される感じがするから、これなら大丈夫だと思って契約したはずなんよ

2019-06-12

RC造なのに防音大ハズレ物件で大大大後悔

RC造なら防音は大丈夫だろうと思って築浅1Kに引っ越ししたら、これが大外れ。

結構家賃を奮発したんぞ。

かに部屋の主要部分は床が厚くて頼りがいのある質感だけれども、壁が木造かそれ以下の防音性で殺意しか感じない。

マジで、朝は隣人の目覚ましで起きるわけ。ピピピピッって。私の出勤時間まであと2時間あるんですけど。

それで、基本的キッチンへの扉や外への扉を閉める音が、ガチャドン!ってめっちゃ響く。

で、キッチン部分の床板が薄くて何か床下に反響しているっぽくて、RCなのに隣室の足音がドカドカ聞こえる。

そんでさ、土曜の朝はギュイーンて掃除機の音で起こされるわけ。実家かよ。こっちも掃除機使えないじゃないか

なんか大家族で同居してるかシェアハウス並みの気配を感じる。上京依頼ずっと独り暮らしで通してきたので、心落ち着かない。

不思議なことに、洗濯機の音や風呂の流水音は聞こえない。

夜は隣人はめちゃ笑ってる声が聞こえてくる。なにがそんなにおもろいねん?

ボイスチャットか何かをしてるっぽいけど会話の内容までは聞こえない。

昨晩はずいぶんと咳をしていたけど、体調大丈夫

時々隣人が壁にぶつかるドンっという音で、目が覚めたりする。いったいどうゆう生活したら壁にゴンゴンぶつける生活になるわけ?

早朝に大騒ぎしていたこともあったぞ。その日が有給じゃなかったら通報してたぞ。

こっちの音がどこまで隣人に聞こえてるのかちょっと不安なんだよね。こうやって夜中にキーボードつの迷惑だったりするんだろうか。普段ぶつぶつ独りごと行ったり鼻歌歌ってるのも聞こえてるんだろうか。一番困るのはオナってるのも気配で聞かれてたりするんだろうか。はあ耐えられないぞ。

はあ、また20万浪費かよ。絶対引っ越すぞ、次はちゃんと側面もコンクリになったちゃんとしたRC造りに住むぞ!!!!!

田舎地元不動産よ、震えて眠れ。

2019-05-30

2年で3回引っ越し

一軒目

天井ヤスデが出没 

しかも一回ではない毎日

虫が大の苦手な自分は耐えきれなくなり引越

二軒目

隣家がうるさい 音楽が丸聞こえ

仲介業者相談したが解決せず

勇気を出し直接文句を言ったがなぜか逆に悪化

三軒目

ネットで調べるとrc鉄筋なら音は聞こえないとドヤ顔で書き込んである

なら分かった多少値は貼るがしょうがないとrc鉄筋に引っ越し

が二軒目同様騒音問題

今度は足音(物音)である

音の大きさでは耳栓を突っ込めば聞こえなくなった二軒目とは違い三軒目は普通に聞こえる

24時間かいるのか知らんがずっと音がする

正直まともに寝ることもできない

同様に管理会社相談したが解決せず

20代もなかば独身男性であるが情けない話だがこの年でわんわんと泣いてしまった

自分の運のなさと社会理不尽さに

この書き込みも泣きに泣きつくして無の感情で書き込んでいる

日増しに目のクマも増えている

犯罪を犯す人はどんな気持ちなんだろうと思ってたけど最近なんとなく分かってきた気がする

生活の基盤である住居がストレスになるとこんなに"クる"ものだと思ってなかった

引っ越し検討している人 くれぐれも物件は慎重に選んでほしい

まあ不動産は嘘しか言わないが

(いや俺が不細工から悪いのであってイケメン美女ならまたいい物件を紹介してくれる可能性が高いかもしれない)

2019-05-14

anond:20190514224512

https://10mtv.jp/pc/column/article.php?column_article_id=2160

 1つ目は機会費用法という、家事をしていて仕事に出ていなかった時間を、もし賃金の出る仕事に充てていた場合報酬金額を算定する方法です。最低賃金に照らし合わせてみると、平成30年10月時点の最低賃金は全国平均で時給874円なので、1日6時間、365日で計算すると月15万7320円、年収は191万4060円となります

 2つ目はRC-S法という、その仕事職業にしている人の賃金に換算するものです。今回は家事代行サービスで働く人は平均時給が1185円とされています専業主婦家事に費やしている1日6時間家事代行業者の時給で計算してみると、月21万3300円、年収は259万5150円となります

 一方、別の調査結果となりますが、キリンビール株式会社平成28年9月専門家の監修のもとでおこなった「主婦年収シミュレーター」の調査結果によると、専業主婦主夫)が1日に家事に充てる時間は平均5.3時間、その年収はなんと469万8670円という金額になりました。この調査では一般企業給与体系、家事代行サービス市場価格、そして実際に家事を行う主婦主夫)の実感値を踏まえた独自ロジックから算出されたもの上記の結果と比べると、大きな差があることが分かります

 

家事を行う主婦主夫)の実感値を踏まえた独自ロジック

 

なるもの妄信できるセンスわからんなー

anond:20190514224754

都合のいいところだけ引っぱり出して引用するのはねつ造と変わらんぞ

全国の主婦主夫)の平均家事年収は、469万8670円という結果になりました。

家事代行サービスで働く人は平均時給が1185円とされています専業主婦家事に費やしている1日6時間家事代行業者の時給で計算してみると、月21万3300円、年収は259万5150円となります

1日平均6時間家事家事代行サービスに依頼すると、年間で438万円~657万円ものコストがかかることになります(1時間あたり2000~3000円相場から計算)。

 

元請単価月50万、月収18万のIT派遣年収600万みたいな計算やな

2019-01-24

anond:20190124075118

実家 木造一戸建て 1990年

特に気にならなかった。

2階建木造アパート 1973年築 1階角部屋

特に気にならなかった。隣室がしょっちゅう女連れ込んでたが何も聞こえたことなし。

2階建木造アパート 1980年築 1階

特に気にならなかった。自室に大人数で集まって騒ぐこともあったが、後日隣人に謝っても聞こえなかったと言われる。上階の洗濯機(室内)や掃除機だけは振動が伝わるのか聞こえた。

4階建RCマンション 1978年築 4階角部屋(現住居)

特に気にならないが、特別かになったとも思わない。部屋に隣接しているエレベーターが古くてうるさいので、その音だけは聞こえる。

まともな木造建築は存在する。2000年代以降は不明

2019-01-18

anond:20190118084824

RC(鉄筋コンクリート造)

SRC(鉄筋鉄骨コンクリート造)

・軽鉄(軽量鉄骨造)

・鉄骨造

その他たくさんあるぞ。

突っ込む前にググレよw ノータリンかwwww

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;
}

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-20

anond:20181220233124

世界一の国と比べて遜色がない時代があったんだよ。

コンクリートだと広島大の田澤先生自己収縮を発見し、東大前川先生RC構成則をバリバリ作ってた時。

IPSとかもそうだけど、何かを発見する余地がある時は日本人は強いと思う。(発見したもの勝ちなので政治大学内間、省庁とかのね)とかに作用されにくいからかな?)

今のコンクリートは分かりすぎてしまって(まだ分からんとこはたくさんあるけど)、みんな迷ってるんだよね。

中国みたいに新しい材料を使いまくればまだ何かあるかもしれないけど、日本で新しい材料絶望的に使われない(主に建築基準法のせい)。

技術書とは離れるかもしれないけれど、そういう状況だと、人口多い方が有利なのかなと思う。まぁ人口だけじゃないかもしれんが。

2018-09-04

anond:20180904162710

fだおおっみいり落ちjjfiojewjjiewじじょいd塩jj2位vjij2jvkl2v57cdcd2p2mocdンvンvpvivijvp929ijhuhvh@vンj@ンjcジョnoi vjvjivivジョッジ2ジv ji 2ji2vhvうhvvkdjkfoa;mwowowiwopaa@a03-r00kf,g.:b;.rc[.0-[.-ita4bm90yj,l\.],^4wi9-

2018-06-29

色々言われてるけどニコニコ動画凋落した最大の原因

それは「ユーザが求める技術水準に対応できて居なかったから」だよ。

とりあえずコレを見て欲しい。

ニコニコ動画(仮)2006.12.12

ニコニコ動画(β) 2007.1.15

ニコニコ動画(γ)2007.3.6

ニコニコ動画RC)2007.6.18

ニコニコ動画RC2)2007.10.10

ニコニコ動画(SP1)2008.3.5

ニコニコ動画(夏)2008.7.6

ニコニコ動画(秋)2008.10.1

ニコニコ動画(冬)2008.12.5

ニコニコ動画(ββ)2008.12.12

ニコニコ動画(9)2009.10.29

ニコニコ動画(原宿)2010.10.29

ニコニコ動画:Zero 2012.5.1

ニコニコ動画:Q 2012.10.17

ニコニコ動画:GINZA 2013.10.8

niconico(く) 2018.6.28

ニコニコ動画はこの移り変わり激しいIT時代で、実に4年半もの期間メジャーアップデートをしなかったんだ。

もちろん、IT関連職なら「ニコニコ動画Webサービスなのでメジャーバージョン名はあまり意味がない」という考えを持ってしまうかも知れない。

しかしながら、ユーザから見える範囲でのアップデートはこの4年半でほとんど行われていない。重要なのはユーザ視点なんだ。

その4年半の間、他の動画共有系サービスは着実にアップデートを繰り返し、動画共有系サービスの平均的な技術水準を引き上げていたが、ニコニコ動画はほどんど流れに乗らなかった。

ニコニコ動画ユーザが「Youtubeなら〜」と言ってしまうのも無理はなく、それを無視し続けたドワンゴ責任は本当に重い。

2018-05-14

anond:20180513200126

1階は虫でも防犯でも良いことはない。確率問題ではあるけど。

実は公園治安騒音で隠れ嫌悪施設

ちなみに、軽量鉄骨は木造アパート居住性は変わらない。部屋の快適さに影響するのは柱の素材じゃなくてむしろ壁。RCじゃないならまぁなんでも一緒。

ログイン ユーザー登録
ようこそ ゲスト さん