約 11,466 件
https://w.atwiki.jp/kk0201kk0714/pages/2433.html
アーティスト:ゆず 予想レベル 9 作詞・作曲:ゆず 最高音 hiB(まかりとおす、今日もゆく、これでいい(のだ)) 想定歌唱範囲:落ちサビ~ラスサビ(時代がそっぽ向いてら~これでいいのだ) 約28秒 日本テレビ系ドラマ『親バカ青春白書』の主題歌。北川悠仁と岩沢厚治の共作であり、レトロな雰囲気を感じさせつつリズミカルなシティポップ風のサウンドに、北川の軽快なリリックと岩沢のシニカルな歌詞がミックスされたポップソングとなっている。 全体的に歌詞の密度が異様に高く、とてつもない早口なので呼吸を整えづらい。動きも細かくてキーも高めなので余計スタミナを消費しやすいだろう。時間はそこまで長くないのが救いだと思われる。 「公私混同」で音の跳躍が出現。落ちサビの最後に「これでいい?」のhiBロングトーンが登場した後すぐにラスサビに移行。「青い春の群像」で跳躍、ラストに「これでいいのだ」のロングトーン。 密度の高い歌詞に上記のポイントを正確に捌かなければならず、クリアするにはかなり練習を必要とする曲になるだろう。
https://w.atwiki.jp/familyrowa/pages/105.html
公私混同しない親父 ◆FbzPVNOXDo 「殺し合い……」 ビッグバンこと天野河大輝は静かにそして忌々しく呟いた。 彼も悪の組織の首領など禄でもないことはしているが、流石に複数の家族を集め殺し合わせるなんて悪趣味な事には嫌悪感を覚える。 そしてもう一つ。銀河とリュウセイの母親であり大輝の妻の死。 気付けば大輝の拳は怒りによって震えていた。 「……だが、どんな状況であろうと私がやる事はただ一つ……」 大輝は手の金色の仮面を被る。 それはビッグバンオーガニゼーションの総帥ビッグバンとして活動する時に被るもの。 どうやら運よく衣服の類と見られ没収されなかったようだ。 その仮面はこれからの彼の行動方針を表していた。 「銀河とリュウセイを悪に染めない為にも、この私ビッグバンは悪として殺し合いに乗る。そうこれぞ―― 究 極 の 反 面 教 師 ! ! ! 」 大輝がビッグバンの仮面を被ったのは全て息子達の為。 息子達が悪に染まらぬよう自らが悪になったのだ。 ならば、この場でもやる事は同じ。 ビッグバンとして殺し合いに乗り悪として暗躍する。 「さて銀河とリュウセイを探さねば……」 「へ、変態……?」 テンションMAXで銀河とリュウセイを探しに行こうとして時であった。 一人の女性がビッグバンを見てドン引きしている。 だがそれも無理はない。何せ今のビッグバンは上半身裸にマント、そして仮面という不審度MAXなのだから。 「……」 「……」 一瞬の沈黙の後、ビッグバンがマントを振り上げ女性がそれに気を取られている間に、ビッグバンは天野河大輝の姿へと変わった。 実際に殺し合いに巻き込まれる前にも街中で同じことをやっている。神業としか言えない早着替えである。 「これでよし!」 銀河とリュウセイを悪に染めないのはいいが他人に迷惑を掛ける訳にはいかない。 公私混同しない親父である。 殺し合いに乗るとか言ったのに他人に迷惑を掛けないとは、お前殺し合いする気ないだろと思うかもしれないが問題ない。 何故なら彼は公私混同しない親父だからだ。 【D-10/ 一日目・深夜】 【天野河大輝@人造昆虫カブトボーグV×V】 [状態] 健康、妻が死んだ事による悲しみ、普段の格好 [装備] なし [道具] 基本支給品、ランダム品1~3、ビッグバンの服装 [思考・状況] 基本方針1:息子達が悪に染まらぬよう行動する。 基本方針2:主催を倒し妻の仇を取る。 1:でも公私混同はせず他人に迷惑は掛けない。 2:目の前の女性の誤解を解く 備考:ビッグバンの服装は衣服とみなされ没収されていません。 【南春香@みなみけ】 [状態] 健康、大輝を警戒 [装備] なし [道具] 基本支給品、ランダム品1~3 [思考・状況] 1:変態? 004 事務所の中の『成人』と『未成年』 投下順 006 ぼくパヤたん 004 事務所の中の『成人』と『未成年』 投下順 006 ぼくパヤたん 行動開始 天野河大輝 [[]] 行動開始 南春香 [[]] ▲
https://w.atwiki.jp/ocg-o-card/pages/10576.html
《 死者の混同 (シャッフル・オブ・デッドマン)》 通常罠 自分は墓地のカードをシャッフルする。 part20-314 作者(2007/09/20 ID I1zpPPTx0)の他の投稿 part20-332 / part20-348 コメント 名前 コメント
https://w.atwiki.jp/kt108stars/pages/3960.html
944 名前:NPCさん[sage] 投稿日:2008/09/19(金) 18 49 39 ID ??? 彼氏連れて例会に来たのにその場で、(彼氏の目の前で)主催を口説き落とした姫。 お元気ですか? 後から聞いたら、プレイ中のPC、NPCの恋愛を自分と混同してしまったそうですね。 誰だよ、ときめき天羅学園とか ときめきNOVAとかやってた奴は。 スレ199
https://w.atwiki.jp/oncasitrouble/pages/31.html
カジノ:ベラジョンカジノ(https //classic.verajohn.com/ja) 被害者:TOTIKU(管理人。https //twitter.com/rZqe40MXeGFYc1h) 経緯:21年12月26日~31日、ライブカジノのトーナメントが開催され、管理人はそれに参加。 対象機種はプラグマティックバカラと書いてあり、スピードバカラも含むのかどうかを 事前にサポートに聞いておりその際に含むと回答があった。 その時点で既に50回以上プレイをしていたがリーダーボードには表示されず。 管理人は過去にも反映されず裏で集計され後日進呈されることがあったため特に気にせず、 それからずっとスピードバカラをプレイし続けた。 トーナメントが終了してから数日が経つが賞金が進呈されず、運営に問い合わせ。 運営は別のトーナメントの問い合わせ(賭け条件が1倍ではなく10倍の件)と混同しており見当違いの回答をする。 全く同じミスを1ヵ月前にもやっていたため管理人もややキレた回答。(下は管理人のメール) その後今回のトーナメントについて運営が調査したところ、 『管理人が対象ゲームを勘違いしてプレイし続けていたので反映されていない』という、 自分が最初にサポートに問い合わせをした内容を完全無視しこちらに非があるかのような回答。 チャットのログを突きつけると、案内が間違っていたので訂正します、でクローズしようとする。 流石に管理人もブチ切れ。 最終的に運営がスピードバカラを対象とした計算をし、1位だったので1000ドルを進呈して終了。 管理人の持論:最終的には無事に解決したが、とにかくメールのやりとりやらが疲れた。 念のためチャットのログをスクショしていたのでスムーズに出来たが、 これが無かったら最後まですっとぼけられた可能性もある…
https://w.atwiki.jp/niconicomugen/pages/7044.html
概要=要は勝てばいい。それが全てだ! 注意 この動画には即死、gdgdな試合などが含まれています。製作者、キャラなどの批判はご遠慮ください。 ルール 1ラウンドのみの戦い。 負け数3で脱落。 勝ち数が3に達したら負け数を1減らす。 引き分け、エラー、mugen落ちは引き分け扱い(互いに負け扱い)とする。 時間は99秒、キャラの途中更新は無しとする。 引き分け、負けの場合はその試合から3回の間ランセレから隔離とする。 タイムが停止した場合は止まってから30分経過で引き分け扱いとする。 タイムが進んでいても2時間以上経過した場合にも引き分け扱いとする。 参戦者 + ... ダークドナルド4th Hyper Kung Fu Man G サワキちゃん(AI有) Sキシマ 宇宙意志 ホラーマガキ 再現ゴジータ Aユウキ ソルラスカ (強化パッチ適用) Nemesis-R-mk2 翠ケン オム君 ストームブリング・アルマ クタニド ヴァイサーガ ライオン(神モード) EXゼットン イリス D-Lucifer アルティメット・セル クウラ 神竜零 カオスミスト(アタックフォルム) 神撫学園一般生徒-緑-(強化スイッチ6,邪眼on) ユミナ すくにゃんマン(11P,残機30) ミント(空を仰ぎて雲たかく) アーシェット ディエス SFC美鈴 S咲夜(超本気モード) Cパチュリー(BGMoff,自殺会話off) 太陽神 女神神奈(硬化パッチ) 聖なるセシリア(聖霊化on) 全開チルノ(遅延オフ) 暴走進藤さん 先代巫女{オキ氏AI入り,強化スイッチ全部on) クールビューティー秋姉妹 死徒アルク (Palnoについて特に表記がない場合は12P、またはカラー差なし) 関連大会 神キャラ 男祭り 神キャラ 頂上決戦 Legend of Heroes 神キャラ 頂上決戦2 Legend of Heroes コメント やっと作成できだぜ…。 -- 名無しさん (2012-12-26 12 56 54) 作成乙~ -- 名無しさん (2013-01-22 21 50 08) 名前 コメント マイリスト
https://w.atwiki.jp/kumicit/pages/92.html
批判サイド 創造論者の主張 Claim CA230 Evidence for evolution has not been observed. Claims that it has confuse observation with interpretation. What is observed has to be interpreted to fit the hypotheses. 進化の証拠は観察されていない。その主張は観察と解釈を混同している。観察されたものが仮説に合うように解釈されている。 Source Wallace, Timothy. 2002. Five major evolutionist misconceptions about evolution. Response あらゆる観察/観測は解釈を必要とする。目の前のものを見ているだけという単純だと思われることであっても、それが何であり、どのような性質を持っていて、それがどれだけ離れているか等を定めるには、多くの解釈が必要である。それが解釈だと言う理由で我々が知っていることすべてを捨てるのは、おかしなことだ。 進化論の証拠の大半は解釈が問題になるようなものではない。証拠は次のようなもので構成される。特定の三葉虫種は、特定の地層で見つかる 有袋類の種はオーストラリアに最も多く生息している。 試験管内の細菌は時間とともに特定の方向に変化することが観察された ハエたちはほかの昆虫にない特徴を共有している そして、同様に幾百万もの事実があり、それらはいずれも論駁されていない。創造論者が異を唱える類の解釈は、すべての証拠をどう継ぎ合わせるかについてである。創造論者たちはほとんどの場合、証拠を否定しない。創造論者たちはそれが進化の証拠だという点を否定する。しかし、その理論に合致し、対抗理論に合致しないか、カバーされていない事実であれば、その理論を支持する証拠と考えられる。理想的には、その理論が、事実が知られる前に、その事実を予測すべきだが、それはその事実が証拠たるための不可欠な条件ではない。幾百万の事実がこの規則にあっており、従って、それらは進化論を支持する証拠となっている。 創造論者が依存する解釈は、これに対して、非常に疑わしく、かつ、組み合わせると、全体として首尾一貫しない主観的な考えに基づいている。 Links Wilkins, John. 1997. Evolution and philosophy Is evolution science, and what does science mean? References Sacks, Oliver. 1995. An Anthropologist on Mars. New York Vintage Books オリジナルページ これは Index to Creationist Claims, edited by Mark Isaak の和訳です。
https://w.atwiki.jp/kamidori/pages/250.html
[部分編集] Lv 80 初回訪問必須ユニット :なし 初回 再訪問 勝利 下方拠点へ到達 60ターン経過 敗北 自軍拠点の制圧 自軍拠点の制圧 味方ユニットの全滅 味方ユニットの全滅 60ターン経過 - 攻略メモ 障害地形MAPパート2。飛行・耐熱・耐電の3つが必要 しかも最短距離で下の拠点を目指すと通常床の中継地点がないため、2つ同時につけないと突破不可能 四属性耐性+飛行をつけたヒロインが手っ取り早い 左右に迂回しながら出撃門を利用などすれば耐性1つでも突破は可能 右上・右下・電流床の右側に隠し部屋 + COMPLETE条件 条件 報酬 初回達成 1 占有率100% お金 10000 可 2 ステージクリア 評価 40 可 3 全ての出撃門占有 牛の壁飾り 1 可 4 隠しイベントカードの回収 馬小屋 1 可 + リスト リスト 発掘素材 採取素材 出現モンスター (なし) (なし) 深淵の飛蛇 深淵の火獣 深淵の羽娘 + 簡易MAP、データ 財宝 金星石(右上財宝・隠し)ペルソアの神槍(右下宝箱・隠し) 採取 - 発掘 - カード 6枚 出撃門 2ヶ所 回復の羽 - 魔物の渦 8ヶ所
https://w.atwiki.jp/takejava/pages/16.html
「ゲーム製作におけるSwingとAWT」を混同して利用する方法について検討するページです。 ※特にゲームループを独自に実装している人向けのページです この辺の問題はゲーム作りでなくても、一度はぶつかるのではかと思います 問題、現象 例えば、ちょっとした処理をボタンでやりたいって気軽に思って、じゃぁボタンクラスを使ってみようかってことになります。しかし、今までフレームのグラフィックスを利用してゲームループでゴリゴリ描画していて、いざ、その上にSwingのボタンをのっけてみたけれど、なんかちらちらして上手く描画されません。でも、ボタンを設置した辺りをクリックしたらボタンは押せてるみたいなんですよね・・・、なんて現象が発生してしまいます。 一発で解決する方法 これを解消する方法は、「SwingとAWTを一緒にしない」です。 間違いないです。解決です。お疲れ様でした。 では納得いきませんよね。 納得いかない方は以下をお読みください。すこしは理解の手助けになるかと思います。 一般的にはどうなの? 一般的に(といいますか、ネットで調べている限りですが)、SwingとAWTを一緒にしてはいけないっていう表現がよくみられますが、私の経験上でも、実際よくありませんでしたし、SwingとAWTは一緒くたにすべきものではないんだなっていうことが分かってきました。 ただ、絶対だめ、というわけでもありません。上手くやるためには、ものすごい勉強してSwingを理解した上でないとかなり危険だということです。 アクティブレンダリングとSwingとAWTの相性が悪いワケ わたしも、ソースレベルで理解しているわけではないので、事細かに説明することは不可能です。 しかし、ゲームプログラミングを勉強している上で必要なことはわかっています。 まず、「SwingとAWTでは描画の同期がとられない」ということなんです。 例えば、AWTがそれぞれスレッドを持っていて、アクティブレンダリングをしているとします。 そして、そのAWT同士を重ね合わせるとどうでしょうか? これは問題なく描画されます。 (Swingについては処理的に可能だとは思いますが、数々の問題が発生し打ちのめされるでしょう) こうイメージすると分かるかと思います。 「AWTは各パーツが窓である」と。 窓って前後関係がしっかり保障されていますよね? 例えば、さまざまなプレーヤーを実行して重ね合わせても、一番後ろにある窓の映像が手前に映る、なんてことは滅多に無いと思います(あるとすれば、悪意のあるソフト、もしくは設定が悪い、最悪Windowsを疑うレベルになると思います)。 じゃぁ、Swingはなんなんだ?っていう話になるかと思います。 Swingは、窓の世界に閉じられたパーツの集まりって言ったらわかるでしょうか? タブン、分からないかと思います(読み返して自分でもわからなかったです)。 いろんな言い方をしてみます。 「Swingはソフトウェアコンポーネントだ」 「SwingはOSに依存しない(ように)パーツを設置できたりするライブラリだ」 「Swingは独立しているものだ」 「Swingはメインのスレッドとは別のスレッド(しかもシングル)で動いている(ちなみにEventDispathThread:EDTというスレッドです。検索すると色々分かります)」 「そもそもSwingとAWTは比較するレベルのものではない」 「ゲーム画面上にオリジナルのかっこいいボタンをつくることと、Swingでボタンをつくることは同義ととらえていい」 と、勝手に、思うがままに、書き連ねてみましたがどうでしょうか?少しはイメージが変わったでしょうか。ここまで読んで、まだJava=Swingみたいなイメージを持たれている方は、一旦リセットしたほうがいいかもしれません。 つまりは、「AWTとSwingは別スレッドで動いている」というところが決定的な理由になるかと思います。そして「SwingはAWTのグラフィック領域を間借りしている」ということです。 なので、AWTにてゲームループの中でグラフィックをゴリゴリ描画しているその上に、Swingをいくらのっけても、速攻で上書きされてしまうためにちらつきが発生してしまいます。あくまで、画面にでてくる絵がおかしくなっているだけなので、ボタンが押せる、言い換えれば、マウスやキーボードなどの入力は効く、と言う状態になります。 この辺がなんとなく理解したならば、解決方法として、AWTとSwingのスレッド間の同期をとればよいのでは?というものが浮かんでくるかと思います。ぜひ、やってみてください。そして、もし単純に解決できたというのであれば、ご連絡ください。わたしの能力では到底無理なので。というか仕事で上司にやれと言われない限りは絶対その方法はとりたくないです。 よって、先ほど申し上げた通り「SwingとAWTを一緒にしない」が私の解答です。 ボタンを実装したくば、己でゲームループ内で効くように実装しろ!ということです。 解決にはなっていないと思いますが、紆余曲折あってこの結果に至ったので自分では納得しています。 ゲームループでは何に対して描画してる? フレームでしょうか?キャンバスでしょうか?パネルでしょうか? Javaだとこの辺からGraphicsを取得して、描画処理をするかと思います。 まず、第一段階の切り分けとして、 フレーム(Frameクラス、JFrameクラス)とキャンバス(Canvasクラス)はAWT、パネル(JPanelクラス)はSwingです(JFrameはWindowクラスを継承しているもので、OSに依存するのでAWTとは言えないようです)。 最初、何も知らない私は、とりあえず、フレームにパネルを乗っけてそのパネルのGraphicsを参照していました。知らずにAWTとSwingを混同させていて、今思えば恐いことをしていました。決して悪いとは言いませんが、もし、それ以外にSwingを利用しないのであればやめたほうがいいでしょう。Swingを噛ましているという時点で余分な処理が増えるようなものです。やっぱりリソースは大切にしたいですよね。 じゃあ、ゴリゴリループ描画もしたいし、Swingも使いたいときはどうすれば?いいの。 条件付きですが、すっきり解決する方法があります。 条件とは「重ね合わせない」、「フレームに対するアクティブレンダーはしない」です。 そうした条件のもとであれば、「ゴリゴリループ描画するCanvasとSwingで棲み分ける」ことで解決することができます。 つまり、Swing同士、AWT同士はもちろん描画の同期は保障されるのですが、 SwingとAWTでは全く同期の保障はとられないと思ったほうがいいです。 まず、AWTは重量コンポーネントという意味不明な日本語で訳されたものであるということです。 ネイティブつまり、OS(プラットフォーム)に依存しているということです。 例えば、Frameクラスです。 import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridLayout; import java.awt.image.BufferStrategy; import java.text.DecimalFormat; import javax.swing.JButton; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JViewport; import javax.swing.JWindow; /* * ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ * createBufferStrategy();関連のエラーについて * * ■createBufferStrategyメソッド呼び出しタイミングでエラーがでる件について * 「Component must have a valid peer」 と、エラーがえらそうに言っているように、 * createBufferStrategy()メソッドを呼び出した時点で、 * 「peerが確定してない(生成できていない)」ことが原因のようだ(peer確定問題と言うようだ) * * エラーの例1) * Exception in thread "main" java.lang.IllegalStateException Component must have a valid peer * at java.awt.Component$FlipBufferStrategy.createBuffers(Component.java 3981) * at java.awt.Component$FlipBufferStrategy. init (Component.java 3955) * at java.awt.Component$FlipSubRegionBufferStrategy. init (Component.java 4478) * at java.awt.Component.createBufferStrategy(Component.java 3832) * at java.awt.Canvas.createBufferStrategy(Canvas.java 194) * at java.awt.Component.createBufferStrategy(Component.java 3755) * at java.awt.Canvas.createBufferStrategy(Canvas.java 169) * at Main. init (Main.java 80) * at Main.main(Main.java 37) * * 例えば * setVisible()メソッドやpack()メソッドを一度も実行しない状態で、createBufferStrategy()メソッドをたたくとエラーになった * * peerはいつ確定するの? * ①super.addNotifyメソッドを呼び出した後(確実っぽい) * ②show()メソッド(フレームのsetVisible(true)メソッドにあたる)やpack()メソッドを呼び出した後(PC性能に依存?ちょっと怪しい) * * 解決するには? * ・①で対応することを考えた場合 * 今回の場合はCanvasクラスのaddNotifyをオーバーライドし、その中でsuper.addNotify()呼び出す、そのあとにcreateBufferStrategy()メソッドを呼び出して対応 * ・②で対応することを考えた場合 * frameにcanvasをaddしておくのはもちろんなのだが、 * 「frame.setVisible(true);」もしくは「frame.pack();」をした後に、canvas.createBufferStrategy();メソッドを呼び出して対応 *①、②両方とも対応しておけば間違いないはず! * * 関連事項 * コンストラクタの中でcreateImageがnullを返すのはpeerが確定していないからのヨーダ * peerが確定するタイミングは、「コンストラクタが完了した後」、つまり「addNotifyメソッドを呼び出した後」となるヨーダ * * * ■Graphicsを取得するタイミングでぬるぽがでてしまう件について(まだよくわかっていないが) * createBufferStrategy()メソッドがエラーを吐かないパターンのやつ * あやしいBufferStrategyを生成してしまい、 * getBufferStrategy()メソッドはもちろんnullを返さないので、 * getDrawGraphics()メソッドを呼んでみるが、そこでエラーがでる、というものである * * エラーの例2) * Exception in thread "main" java.lang.NullPointerException * at java.awt.Component$BltBufferStrategy.revalidate(Component.java 4428) * at java.awt.Component$BltBufferStrategy.revalidate(Component.java 4406) * at java.awt.Component$BltBufferStrategy.getDrawGraphics(Component.java 4326) * at ActiveRenderCanvas.doActiveRendering(Main.java 304) * at Main. init (Main.java 188) * at Main.main(Main.java 98) * * * 例えば * フレームのサイズが確定していない状態でframe.setVisible(true);を実行したあとに * frame.setVisible(true);もframe.pack();も実行しないとエラーになった * * (レイアウト使用時)コンポーネントを追加後frame.pack();が実行できていればエラーはでなかった * * (よくわかっていないですが、) * 可視化する前にcreateBufferStrategyを実行して、 * さらに正しく2回目(super.addNotifyをオーバーライドした対応)が呼び出されたとしても実は失敗しているようで * bufferStrategyはnullではないが内部でおかしなことになってしまっているようだ * * 解決するには?(対策?) * フレームまわりの実装を見直す(レイアウトの設定した場合はpack()に加えて(レイアウト無視の場合も含めて)setVisible()が呼ばれているかどうか) * 立ち上げ時のsetVisibleメソッドについては特に丁重に扱う * revalidateが関連してるっぽいけれど、エラーが出たタイミングでどう対応するのが正解なのかはわかっていまへん、すいまへん * * * ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ */ /* * 余談 * frame.pack()について * * frame.pack();はframeにaddしたコンポーネントの「サイズ」や「レイアウト」を考慮してフレームのサイズを決定してくれるもの * 例) * canvasの推奨サイズを幅200、高さ200 * scrollPaneの推奨サイズを幅200、高さ200 * ウィンドズXPの場合のframeの初期サイズは幅208(4 + 200 + 200 + 4) 高さ234(30 + 200 + 4)になる * * もしframe.setLayout(null);とした場合は * いくらコンポーネントを追加してpack();をしても効果がないので * frameのサイズ設定忘れやコンポーネントのsetBounds忘れに注意 */ /** * GUI生成と窓の可視化を行った後、ゲームループをに入るクラス * * メモ * ■GUI生成のおおまかな流れ(これに限らないが分かりやすさで考えてみた) * * ①各コンポーネント生成とパラメータ設定(Frame Canvas JTextArea JScrollPane などなど) * ※②と重複あり(サイズ設定など) * * ②レイアウト設定と各コンポーネントの配置 * ∟レイアウトを使用する場合(setLayout(new BorderLayout());など) * ②-1 各コンポーネントの推奨サイズ設定 setPreferSizeメソッド * ②-2 add( コンポーネント, "West"); * ②-3 pack(); * ※フレームのサイズはpack();により決定し上書きされるので特に設定しなくてもよい(設定しても問題ないが追加するコンポーネントによって意味が無くなるぽい) * ∟レイアウトを使用しない場合(setLayout(null);) * ②-1 各コンポーネントの座標指定(setLocation)と各コンポーネントのサイズ設定(setSize) * ※座標とサイズを同時設定するにはsetBoundsメソッドが便利 * ※フレームのサイズ設定を必ず行うこと * ②-2 add( コンポーネント); * ②-3 フレームのvalidate();を実行 * ※調べ中 * ※まだ不明瞭な点があるのだが、コンポーネントの重なりをaddした順から手前に表示されるよう更新してくれるようだ * ※重なりがないのであれば、呼ばなくても変わらないと思われる * * ③窓の可視化 * ※最後にもってきたほうが無難っぽい * ※各コンポーネントのサイズ設定をする前にframe.setVisible(true);をやってそのまま・・・ということをしてぬるぽがでたことがあった * ※このメソッドが呼ばれた時点で窓が画面にでてくる * ※フレームのインセッツは可視化しないと値が入らなかったりするので、このタイミングが当たり前っていうのも違う * ※ExtendsFrameで実装したNowLoadingメソッドはメソッド内で可視化、不可視化して遊んでいる * * ここまでGUI関連の処理 * ※実際のところ①、②、③に関しては前後しても問題なく、さらには可視化したあとサイズを変更しても問題なかったりする * ※peer確定問題に対応するために、上記の流れであれば、エラーが探しやすそうというだけである * ※各コンポーネントで設定する値を継承先のコンストラクタなどで設定するのもいいが、(peer確定問題含め)処理順序がごっちゃになると管理が大変な気がするし、悩むところ * * ④ゲームのメインループをスタート * ※ゲームの前準備(オセロの情報などの描画に必要なデータやリスナー登録など)は、メインループに入る前に済ませておけばどこでもよいと思われる * ※リスナー系の登録削除には気をつけないといけない場合がありそうだが、まだ未熟なのでなんともいえまへん * */ public class Main { /** * @param args */ public static void main(String[] args) { new Main(); System.out.println("メインスレッド完"); // ループを抜けることがあればの話 } private Main() { /** * ①各コンポーネント生成とパラメータ設定 * ※今回は全部ローカルでJFrame と Canvas と JTextArea と JScrollPaneなどを生成、パラメータ設定している * ※なので必要に応じてMainのフィールドにもってくるなどして対応する必要がある */ // フレーム ExtendsFrame frame = new ExtendsFrame(); // frame.nowLoading(100); // 危険なお遊びメソッド setVisibleを中で実行しているので、以降の処理に影響を与える可能性がある frame.setTitle("テスト"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // キャンバス ActiveRenderCanvas canvas = new ActiveRenderCanvas(); // テキストエリア JTextArea textArea = new JTextArea(); // サイズの設定に関しては文字列の列数と行数に依存するのであまり気にしない textArea.setFont(new Font("MS ゴシック", Font.BOLD, 12)); // textArea.setLineWrap(true); // とにかく折り返す textArea.setWrapStyleWord(true); // 単語単位で折り返す // スクロールペイン JScrollPane scrollPane = new JScrollPane(textArea); scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); // 垂直のバーは常に出す scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); // 水平のバーは絶対出さない /** * ②レイアウト設定と各コンポーネントの配置(■BorderLayoutバージョン) * */ // canvas.setPreferredSize(new Dimension(200, 200)); // scrollPane.setPreferredSize(new Dimension(200, 200)); // frame.setLayout(new BorderLayout()); // デフォルトがBorderLayoutになるので、あってもなくても関係ない // frame.add(canvas /* , "West" */); // 指定無しで"Center"扱い // frame.add(scrollPane, "East"); // System.out.println("BEFORE:frame.pack();"); // frame.pack(); // System.out.println("AFTER:frame.pack();"); /** * ②レイアウト設定と各コンポーネントの配置(■GridLayoutバージョン) * ※左右で2分する、フレームのサイズ変更に反応して、均等にコンポーネントのサイズを更新してくれる * ※なのでフレームサイズを設定すれば勝手にコンポーネントのサイズも決まる */ frame.setPreferredSize(new Dimension(400, 200)); frame.setLayout(new GridLayout(1, 2)); // 1行×2列 frame.add(canvas); frame.add(scrollPane); System.out.println("BEFORE:frame.pack();"); // frame.pack(); System.out.println("AFTER:frame.pack();"); /** * ②レイアウト設定と各コンポーネントの配置(■座標指定バージョン) * ※setBoundsで場所とサイズを必ず設定(setLocationとsetSizeの組み合わせも同様) * ※重ねることに成功したりしなかったりと不安定 * ※必ず最初のコンポーネントが手前に、あとに追加されたコンポーネントが後ろにいく */ // // パネルを追加してみる実験 // JPanel panel = new JPanel(); // panel.setBackground(new Color(1, 1, 0, 0.3f)); // // 2つ目のキャンバスを追加してみる実験 // ActiveRenderCanvas canvas2 = new ActiveRenderCanvas(); // // ボタンを追加してみる実験 // JButton button = new JButton("ぼたん"); // // // インターナルフレーム // // JInternalFrame internalFrame = new JInternalFrame("インターナルフレーム", true, true, true, true); // // internalFrame.setBounds(0, 0, 200, 100); // // internalFrame.setBackground(Color.ORANGE); // // internalFrame.setVisible(true); // // // デスクトップペイン // // JDesktopPane desktopPane = new JDesktopPane(); // // desktopPane.setBounds(0,0,1000,1000); // // desktopPane.setOpaque(false); // 透明化 // // desktopPane.setBackground(new Color(0,0,0,0)); // // desktopPane.add(internalFrame); // // frame.add(desktopPane); // // 座標、サイズ指定 // frame.setBounds(0, 0, 400, 400); // canvas.setBounds(10, 10, 300, 300); // scrollPane.setBounds(50, 50, 100, 100); // panel.setBounds(250, 50, 400, 400); // canvas2.setBounds(200, 200, 300, 300); // button.setBounds(0, 200, 100, 100); // frame.setLayout(null); // frame.add(canvas2); // 手前に配置 // frame.add(scrollPane); // frame.add(button); // frame.add(panel); // frame.add(canvas); // 奥に配置 /* * このタイミングでcreateBufferStrategyを実行してみる実験 * キャンバスのバッファストラテジーを生成しようとするのだが * もしこの時点で、「frame.setVisible(true);」が実行されていない、 * またはレイアウト指定しておいて「frame.pack();」を実行していない、などでエラーを吐く */ { try { canvas.createBufferStrategy(3); } catch (Exception e) { System.out.println("エラーポイント①"); System.out.println("[frame.pack();]忘れの可能性"); System.out.println("[frame.add(canvas);]忘れの可能性"); System.out.println("[frame.setVisible(true);]忘れの可能性"); } } /** * ③窓の可視化 * 窓をディスプレイの中心で可視化 */ frame.setLocationRelativeTo(null); System.out.println("BEFORE:frame.setVisible(true);"); frame.setVisible(true); // コメントアウトして動作を確かめる System.out.println("AFTER:frame.setVisible(true);"); /* ここまでがGUIの生成と可視化の処理**************************************************************************** */ /* * ゲームの前準備、初期化 */ init(); /** * ④ゲームのメインループをスタート */ System.out.println("ゲームループスタート"); long calcInterval = 0; char c = \u0041 ; while (true) { // 大体1秒間隔で処理したい if ((calcInterval += 1000 / fps) = 1000) { calcInterval = 0; // デバッグプリント // System.out.println("フレーム " + frame.getInsets() + " " + frame.getSize()); // System.out.println("キャンバス 幅:" + canvas.getWidth() + " 高さ:" + canvas.getHeight()); // textArea.append("フレーム " + frame.getInsets() + " " + frame.getSize() + crlf); // textArea.append("キャンバス 幅:" + canvas.getWidth() + " 高さ:" + canvas.getHeight() + crlf); textArea.append(Character.toString(c++) + crlf); /* * パネルグラフィックス実験 */ // Graphics g = panel.getGraphics(); // if (g != null) { // g.setColor(new Color((float) Math.random(), (float) Math.random(), (float) Math.random(), 0.9f)); // g.drawString("パネル", 10, 30); // g.dispose(); // } } /* * BufferStrategyとgetGraphics()の併用はどうなる実験 */ //Graphics g = canvas.getGraphics(); //g.setColor(Color.CYAN); //g.fillOval(50, 50, 100, 100); //g.dispose(); /* * 描画(各自がもってるバッファストラテジーを使ってる) */ frame.draw(Color.WHITE); // ちらついてしまう原因 canvas.draw(Color.BLACK); // canvas2.draw(Color.PINK); // 高速でまわってしまうし、他のスレッドに迷惑をかける可能性があるので本スレッドを一時休止 fpsKeeper.sleep(); // try { // Thread.sleep(1000 / 30); // FPS30に設定 // } catch (InterruptedException e) { // e.printStackTrace(); // } } } FPSKeeper fpsKeeper; int fps; final String crlf = System.getProperty("line.separator"); // 改行コード private void init() { fps = 60; fpsKeeper = new FPSKeeper(fps); // FPSを60(ぐらいになるよう)に設定 } /********************************************************************************************************************** * 以下、インナークラスの定義 **********************************************************************************************************************/ /** * アクティブレンダリングを実装したCanvas */ class ActiveRenderCanvas extends Canvas { BufferStrategy bufferStrategy; /** * peer確定後、バッファストラテジー生成と参照コピーを実行するようにオーバーライド * bufferStrategyがぬるぽエラーを回避できる! */ @Override public void addNotify() { super.addNotify(); // ☆ここでpeer確定 System.out.println(this.getName() + "のpeer確定"); /* * キャンバスのバッファストラテジーを生成 */ try { createBufferStrategy(3); bufferStrategy = getBufferStrategy(); // ループで使用するために参照を保持しておく } catch (Exception e) { System.err.println("エラーポイント③"); // もしここでエラーがでるというのであれば、わたしはお手あげですw System.err.println(this.getName() + "のバッファストラテジー生成に失敗"); } System.out.println(this.getName() + "のバッファストラテジー生成に成功"); } /** * ゴリゴリ描画するゲームループ内で呼び出すメソッド * bufferStrategyがnullまたは、Graphicsが取得できないなどのエラーに対応すれば、とまったりはしない * 具体的な描画処理は別の関数にまとめた */ public void draw(Color color) { /* * 一応ぬるぽ対応することでエラーでとまることはなくなるが、 * 可視化されなければ、ずっとnullかも */ if (bufferStrategy == null) { System.err.println("bufferStrategyがぬるぽ"); try { createBufferStrategy(3); bufferStrategy = getBufferStrategy(); } catch (Exception e) { System.err.println("エラーポイント②"); System.err.println("[frame.pack();]忘れの可能性"); System.err.println("[frame.add(canvas);]忘れの可能性"); System.err.println("[frame.setVisible(true);]忘れの可能性"); } return; } /* * 謎エラーポイント * サイズ設定、レイアウト設定、可視化タイミングを疑う */ Graphics2D g = (Graphics2D) bufferStrategy.getDrawGraphics(); // Graphicsをゲット! if (!bufferStrategy.contentsLost()) { // フルスクリーン化したときになにかをロストするらしいのでその対策 /* * g を使って描画処理 */ draw(g, color); bufferStrategy.show(); g.dispose(); } } /** * 具体的な描画 * 描画に必要なデータをここで参照できるようにクラス設計しなおす必要がある * * @param g * @param color */ private void draw(Graphics2D g, Color color) { // キャンバスのサイズで塗りつぶし g.setColor(new Color(1, 1, 1, 0.1f)); g.fillRect(0, 0, getWidth(), getHeight()); // 左上 g.setColor(Color.RED); g.fillRect(0, 0, 10, 10); // 右下 g.setColor(Color.GREEN); g.fillRect(getWidth() - 10, getHeight() - 10, 10, 10); // ランダム円描画 g.setColor(color); g.fillOval((int) (Math.random() * getWidth()), (int) (Math.random() * getHeight()), 20, 20); // canvasの枠を黒で描画 g.setColor(Color.BLACK); g.setStroke(new BasicStroke(5.0f)); g.drawRect(0, 0, getWidth(), getHeight()); g.setStroke(new BasicStroke()); // FPS描画 g.setColor(Color.BLACK); g.drawString("FPS " + fpsKeeper.getFPS(), 4, 20); } } /** * アクティブレンダリング機能搭載JFrame */ class ExtendsFrame extends JFrame { private BufferStrategy bufferStrategy; @Override public void addNotify() { super.addNotify(); System.out.println(this.getName() + "のpeer確定"); try { createBufferStrategy(3); bufferStrategy = getBufferStrategy(); } catch (Exception e) { System.err.println("エラーポイント③"); // もしここでエラーがでるというのであれば、お手あげですw System.err.println(this.getName() + "のバッファストラテジー生成に失敗"); } System.out.println(this.getName() + "のバッファストラテジー生成に成功"); } public void draw(Color color) { if (bufferStrategy == null) { System.err.print("bufferStrategyがぬるぽ"); return; } Graphics2D g = (Graphics2D) bufferStrategy.getDrawGraphics(); // Graphicsをゲット! if (!bufferStrategy.contentsLost()) { draw(g, color); bufferStrategy.show(); g.dispose(); } } private void draw(Graphics2D g, Color color) { // キャンバスのサイズで塗りつぶし g.setColor(new Color(0, 0, 0, 0.1f)); g.fillRect(0, 0, getWidth(), getHeight()); // 左上 g.setColor(Color.RED); g.fillRect(0, 0, 10, 10); // 右下 g.setColor(Color.GREEN); g.fillRect(getWidth() - 10, getHeight() - 10, 10, 10); // ランダム円描画 g.setColor(color); g.fillOval((int) (Math.random() * getWidth()), (int) (Math.random() * getHeight()), 20, 20); // canvasの枠を黒で描画 g.setColor(Color.WHITE); g.setStroke(new BasicStroke(5.0f)); g.drawRect(0, 0, getWidth(), getHeight()); g.setStroke(new BasicStroke()); // FPS描画 g.setColor(Color.WHITE); g.drawString("FPS " + fpsKeeper.getFPS(), 4, getHeight() - 14); } /** * プログレスバー思いつきでつくってみた * とはいっても時間を浪費するだけのメソッド * ※例外処理はまったく実装していない * * @param count */ void nowLoading(float count) { final Dimension progressBar = new Dimension(200, 50); setSize(progressBar); setLocationRelativeTo(null); setVisible(true); Graphics g = getGraphics(); for (int loopCount = 1; loopCount = count; loopCount++) { final int percentage = (int) ((progressBar.width / count) * loopCount); String period = ""; for (int i = 0; i percentage / 10 % 3; i++) period = period + "."; setTitle("NowLoading" + period); g.setColor(new Color(0.5f, 0, 0, 0.1F)); g.fillRect(0, 0, percentage, getHeight()); try { Thread.sleep(10); } catch (InterruptedException e1) { e1.printStackTrace(); } } setTitle("Completed!"); g.setColor(Color.GREEN); g.fillRect(0, 0, getWidth(), getHeight()); try { Thread.sleep(300); } catch (InterruptedException e1) { e1.printStackTrace(); } g.dispose(); setVisible(false); } } } /** * おまけ * Javaでゲーム作りますが何か? * http //d.hatena.ne.jp/aidiary/20070429/1251463673 のパクリです */ class FPSKeeper { // 期待するFPS(1秒間に描画するフレーム数) private int FPS; // ★値を変えてみよう // 1フレームで使える持ち時間 private long PERIOD = (long) (1.0 / FPS * 1000000000); // 単位 ns // FPSを計算する間隔(1s = 10^9ns) private static long MAX_STATS_INTERVAL = 1000000000L; // 単位 ns // FPS計算用 private long calcInterval = 0L; // in ns private long prevCalcTime; // フレーム数 private long frameCount = 0; // 実際のFPS private double actualFPS = 0.0; private DecimalFormat df = new DecimalFormat("0.0"); private long beforeTime, afterTime, timeDiff, sleepTime; private long overSleepTime = 0L; private int noDelays = 0; public FPSKeeper() { this(60); } public FPSKeeper(int FPS) { prevCalcTime = beforeTime = System.nanoTime(); setFPS(FPS); } /** * 途中でFPSを変更したい際に呼ぶ * * @param fps */ public void setFPS(int fps) { FPS = fps; PERIOD = (long) (1.0 / FPS * 1000000000); // 単位 ns } /** * FPSを00.0の形の文字列で返す * * @return */ public String getFPS() { return df.format(actualFPS); } /** * 設定した(デフォルトは60)FPSの値になるようにスレッドのsleep時間を制御する */ public void sleep() { getSleepTime(); if (sleepTime 0) { /* * 休止時間がとれる場合 */ try { Thread.sleep(sleepTime / 1000000L); // nano- ms } catch (InterruptedException e) { e.printStackTrace(); } } notifyOverSleepTimeAndCalcFPS(); // sleep()の誤差を通知 ※getSleepTime()に反映させる必要があるため } private long getSleepTime() { afterTime = System.nanoTime(); timeDiff = afterTime - beforeTime; // 前回のフレームの休止時間誤差も引いておく sleepTime = (PERIOD - timeDiff) - overSleepTime; return sleepTime; } private void notifyOverSleepTimeAndCalcFPS() { if (sleepTime 0) { overSleepTime = (System.nanoTime() - afterTime) - sleepTime; } else { // 状態更新・レンダリングで時間を使い切ってしまい休止時間がとれない場合 overSleepTime = 0L; // 休止なしが16回以上続いたら if (++noDelays = 16) { Thread.yield(); // 他のスレッドを強制実行 noDelays = 0; } } beforeTime = System.nanoTime(); // FPSを計算 calcFPS(); } /** * FPSの計算 */ private void calcFPS() { frameCount++; calcInterval += PERIOD; // 1秒おきにFPSを再計算するようにする if (calcInterval = MAX_STATS_INTERVAL) { long timeNow = System.nanoTime(); // 実際の経過時間を測定 long realElapsedTime = timeNow - prevCalcTime; // 単位 ns // 実際のFPSを計算 // realElapsedTimeの単位はnsなのでsに変換する actualFPS = ((double) frameCount / realElapsedTime) * 1000000000L; frameCount = 0L; calcInterval = 0L; prevCalcTime = timeNow; } } }
https://w.atwiki.jp/oncasitrouble/pages/19.html
カジノ:ベラジョンカジノ(https //classic.verajohn.com/ja) 被害者:TOTIKU(管理人。https //twitter.com/rZqe40MXeGFYc1h) 経緯:管理人は11月4日?~10日あたりに開催された、 ライブカジノのベット回数を競うトーナメントに参加。 しかし何故かどれだけベットをしてもランキングに反映されなかった。 その際に運営に問い合わせをしたところ、調査をすると返ってきたが、 結局トーナメントが終了するまで反映も調査結果の報告もなかったため、。 そのトーナメントのために消費した100ドルを補償して欲しいと連絡。 →その後、17日から19日に開催された別のライブカジノのトーナメントに参加。 こちらは正常に反映されており、4位となり250ドルを獲得している。 →その後運営から 『トラブルで反映されなかったが確認したところ7位だった。賞金の250ドルは既に進呈している』 と連絡があった。 しかしその250ドルは10日に終了したトーナメントではなく、19日に終了したトーナメントによるもの。 それを指摘した際の回答がこちら。 19日のランキングを見ればわかる通り、5位以下は50ドルのため 『4位だと主張するトーナメントは7位だったので賞金250ドルを進呈した』 という運営の発言は明らかにトーナメントを理解していない。 管理人の持論:確かに2つともトーナメントの名称は 『ラウンドポイント★賞金狩りライブカジノ・トーナメント★』 だが、運営が期間も規模も違うトーナメントを同じだと考えているというのは話にならない。 11月24日 向こうが落ち度を認めて補償をした。時間はかかったが解決。