X



オブジェクト指向を教えてくれ!

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
垢版 |
2021/03/16(火) 17:06:02.41ID:VhqTt897
オブジェクト指向について、調べれば調べるほど疑問が募ります。低レベルで粗末な疑問かも知れませんが、ご教授願いたいです。

・データと振る舞いをまとめる?
まとめると何か良いことあるの?
ファイルあるいはモジュールにはまとまってるよね?
丁度いい単位があるのに、何故わざわざオブジェクトという概念を導入するの?
(Javaには1ファイル1クラスという文化あるらしいけど)

・カプセル化?
モジュールのimport, exportでも実現出来るよね?
(構造体などへのアクセスを制限できれば)

・ポリモーフィズム?
別にデータと振る舞いをまとめなくても実現出来るよね?

・モノのように扱いたい?
モノとして扱いたいときに扱えば良くない? なんでわざわざ全てをオブジェクトにするの?
0852デフォルトの名無しさん
垢版 |
2021/04/13(火) 13:03:14.65ID:5GJi7nDK
なら何もID変えるほどビビることもないだろ?
自信があるならどうぞ続けてください
0854デフォルトの名無しさん
垢版 |
2021/04/13(火) 13:04:52.99ID:Fs1rsRs1
おっとIDの話にすり替えようとしても、お前の反論がないというこの状況に変化はないぞw
0855デフォルトの名無しさん
垢版 |
2021/04/13(火) 13:06:03.58ID:5GJi7nDK
いいよ、今は反論がないということで
だから続けなよ
0857デフォルトの名無しさん
垢版 |
2021/04/13(火) 13:40:35.29ID:CfPnmjiF
>>844
なるほど、自分でイベントを発生させたことがないんだね
それでイベントドリブンを語るのはStateパターンすら知らずにオブジェクト指向語るのと同レベルだわ

ゲーム脳に比べると君のほうが常識人に感じてたが
視野狭窄という意味でやっぱりゲーム脳とどんぐりだな
レスバする理由がよくわかった
0858デフォルトの名無しさん
垢版 |
2021/04/13(火) 13:42:41.77ID:Fs1rsRs1
> なるほど、自分でイベントを発生させたことがないんだね

なぜゲームではイベントを使わずに
ポーリングでボタンの状態を検出するというだけの話から
そんな発想が出てくるんだろうか?
意味わからんよねw
0859デフォルトの名無しさん
垢版 |
2021/04/13(火) 14:13:56.82ID:a0fpMlgS
印刷中は電源オフ要求があったら下の領域でラッチして覚えておき、印刷が終わったところでラッチを調べ、
電源オフ要求があったならば、電源オフ処理を始める。
このように、何かをやっている最中に、何かが起きることを覚えておきたい、というときに、直交合成状態を使うことができる。
この形のことを Latch State (ラッチステート)パターンと言う。リアルタイムUMLワークショップという本の中で、ブルースダグラスさんが命名している。
https://qiita.com/saltheads/items/abd039ec2df18bdd7995

839 デフォルトの名無しさん sage 2021/04/13(火) 11:03:47.18 ID:3qmwHhLR
業務用システムでもいろんなわけわからん条件に応じて
いろんなコントロールが友好になったり無効になったりするときに
Stateパターンでスッキリするときはあるぞ
Stateパターン使うというより
ステートマシンが必要なら作るという
それだけの話だが
0860デフォルトの名無しさん
垢版 |
2021/04/13(火) 14:17:37.36ID:5GJi7nDK
>>857
視野搾取と言うけど俺は別にそう言った作り方をしていないものを否定はしていないよ
常に追加に対しては開いていて変更に対しては閉じているのだ
0861デフォルトの名無しさん
垢版 |
2021/04/13(火) 14:54:10.93ID:5GJi7nDK
>>859
正直リンク先見たとき英語で記載されてて
俺じじいだし英語読めないし
DEEPLE先生で翻訳しても訳分からないし
Stateパターンって名前がついているのは知らなかったけど、
クラス図見たとき「ああ、あのアレか」と思うほど結構使われてるやつだったよ
ま、そう言うとまたゲーム脳って言われるんだろうけど
0862デフォルトの名無しさん
垢版 |
2021/04/13(火) 15:21:17.51ID:a0fpMlgS
データベースとオブジェクト指向の間には溝があります。インピーダンスミスマッチと呼ばれていますが、
ゲームを構築する際にも、インピーダンスミスマッチが生じています。
ゲーム世界をプログラムコードに落とす上で、継承という仕組みは貧弱すぎるのです。
https://qiita.com/tshinsay/items/739ad875cc3925d51f12



一般的なゲームプログラミングで使われるオブジェクト指向は、サブクラスではなくインナークラスのほう。
オブジェクト指向は要らないという意見もあるが、サブクラスについては人工知能に活用したいところ。
例えばクリントン大統領はチンポ【が】シコシコしてしまったのが『不適切な関係』だったとか。

1 インナークラス(オシッコをするときのチンポ)
ネットワーク、メッセージング、イベントドリブン、同期処理・・・
2 サブクラス(勃起・射精するときのチンポ)
自然言語処理、人工知能・・・
0863デフォルトの名無しさん
垢版 |
2021/04/13(火) 15:33:19.55ID:a0fpMlgS
こういう場合は、サブクラスとして『ひげそり機を使っている状態のFred』を再定義するしかないかも。

829 デフォルトの名無しさん 2018/11/11(日) 09:52:59.70 ID:y84pWKv0
(第1章 はじめに 2頁)
たとえば、CycはFredという名前の男が朝にひげをそるという話が理解できなかった。
Cycの推論エンジンは、この話の中に矛盾を見つけた。Cycは人間には電気の部品がないことは知っているが、
Fredが電気カミソリを持っていたので、エンティティ「Fredがひげそり中(FredWhileShaving)」
には電気の部品が含まれていると考えた。したがって、CycはFredがひげをそっている間、
Fredはそれでも人間なのかと尋ねた。

『深層学習』
著者:
Ian Goodfellow, イアングッドフェロー,
Yoshua Bengio, ヨシュアベンジオ,
Aaron Courville, アーロンカービル

一般的なアプリやゲームやプリンターにおいては『状態』そのものをオブジェクトには出来ないが、

>>626
> 乗っ取られるという状態変化を起こしたクリントンがシコっていることに変わりはない

人工知能とか自然言語処理なら、シコシコしたチンポにクリントンがシコられたと解釈したいところ。

250 デフォルトの名無しさん sage 2021/03/21(日) 16:00:54.94 ID:rWfpUSZ4
状態をオブジェクトにするな
は昔からよく言われている
「ボタンを押している状態」
をクラスにしてしまうと
プログラムが無茶無茶になる
「モノ」をオブジェクトにする
これがオブジェクト指向の本質
0864デフォルトの名無しさん
垢版 |
2021/04/13(火) 17:32:21.52ID:lxQvoCB8
このスレでゲーム脳って言われてる人って
アーケードか家庭用ゲーム機で作ってたりするん?
老舗あるいは有名メーカーだったりするん?
0865デフォルトの名無しさん
垢版 |
2021/04/13(火) 18:47:14.48ID:/ZU5S8St
メッセージループでメッセージを受け取る->処理する
送り側はメッセージキューに送る

すべてそれで理解できる
何年も何にも変わってない
0866デフォルトの名無しさん
垢版 |
2021/04/13(火) 19:14:28.11ID:5GJi7nDK
>>864
それは答えられないなぁ
なんで答えられないのかも答えられない
0868デフォルトの名無しさん
垢版 |
2021/04/13(火) 19:26:48.22ID:Fs1rsRs1
>>865
Windows 3.1や95の初期あたりの頃とかはそうだった
プログラマがウインドウメッセージを直接処理していた

今はそういったものはライブラリが処理し
アプリケーションプログラマから見るとウインドウメッセージは
イベントとして受け取る形でプログラミングできるようになってる

時代は変わってるんだよ
0869デフォルトの名無しさん
垢版 |
2021/04/13(火) 19:48:02.89ID:fFoE8jgx
>>868
95の初期とか、、、MFCなんて使わないしWindowsXPくらいまでは普通にメッセージ処理してたわいw
0870デフォルトの名無しさん
垢版 |
2021/04/13(火) 19:53:52.51ID:5GJi7nDK
さて、仕事も終わったことだし
昼頃に言い淀んだことの説明をするか
実はカタワ指向君に反論ではなく>>842
苦情をいいたかったんだ
カタワ指向君の後にレスしたからカタワ指向が自分のことと思って俺にレスしてきたから
悪いとは思ったけどちょっと面白くなって濁らしたんだ。すまんな、俺は人格破綻者なんだ。

さて

>>842
>>679のゲーム脳の例でも
>〜の場合はボタン押しっぱなし、〜場合はボタン立ち上がり、〜場合はボタン立ち下がり
>というイベントに変換してるじゃん

いつ俺がイベントに変換しているなんて言ったよ
変に曲解して俺が変なことを言ったように風潮するのは止めて頂きたい
そっちがイベント作成して飛ばすのは勝手だがな。
0871デフォルトの名無しさん
垢版 |
2021/04/13(火) 20:21:32.34ID:Fs1rsRs1
>>869
> 95の初期とか、、、MFCなんて使わないしWindowsXPくらいまでは普通にメッセージ処理してたわいw
それはお前が選択したものの話であって、Delphi、C++Builder、VB、Javaなんでもありました。
その頃になればC#も登場してますね
0873デフォルトの名無しさん
垢版 |
2021/04/13(火) 20:50:12.12ID:5GJi7nDK
>>225
開発あるあるだなw
そうか、確かにVBAだと後ろが伸びるだけになるかも知れないね。
他のある程度大きいシステムになると
・客先から上がって来ない要件定義
・客先だから強く言えないチームのリーダー
・差し迫る納期
・焦りが出てきてイラつく俺ら。それを宥めるリーダー

この辺からが違うところかな

・システム間の連携や他システムとの連携のため伸ばせない納期
・更に焦る俺ら。宥めきれなくなるリーダー
・上がって来る要件定義、血眼で設計書を作る俺ら
・時間がなくて客先との対面レビューのはずが回覧レビューになる設計書
・PGしながら単体テストケース作りながら単位テストしながらエビデンス取る俺ら
・超える納期、無くなる休日、伸びまくる勤務時間、倒れる仲間
・覆る要件定義、設計種ミス発覚、他の嶋から助っ人入るも焼石に水、発狂する助っ人
・何とかSTまで終了。飛ばされるリーダー、バグだらけの成果物、昇天する俺ら

最悪こんな感じかな。
0874デフォルトの名無しさん
垢版 |
2021/04/13(火) 20:51:15.98ID:5GJi7nDK
おっと誤爆した
すまんな
0875デフォルトの名無しさん
垢版 |
2021/04/13(火) 22:49:41.14ID:Fs1rsRs1
>>872
だからゲームでボタンを状態にする例をだしたのち
それは例外だって話をしてるだろ
こっちは知った上で話しをしてるんだよ
0877デフォルトの名無しさん
垢版 |
2021/04/13(火) 23:09:13.52ID:a0fpMlgS
話を戻すが、「チンポがシコシコする」という日本語表現は、学術的に正しいと言えるのか?

チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、自ら勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
0878デフォルトの名無しさん
垢版 |
2021/04/13(火) 23:43:05.50ID:lT81cFcU
>>873
あったかいなあ
0879デフォルトの名無しさん
垢版 |
2021/04/14(水) 05:40:25.28ID:jCprHRHj
>>878
いや
焼け死ぬくらいなんだが
0880デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:15:11.50ID:jCprHRHj
にしても
>>250
>状態をオブジェクトにするな
>は昔からよく言われている
>「ボタンを押している状態」
>をクラスにしてしまうと
>プログラムが無茶無茶になる
>「モノ」をオブジェクトにする
>これがオブジェクト指向の本質

これが未だに釈然としない
もうゲーム脳認定されてるから遠慮なくそっちの話で書くけど
正直、ボタンの状態をイベントで取ろうが
ポーリングで取ろうがCやC++で直接I/Oポートアドレスの値読みに行こうがそんなことはどうでもいい。
キチンと処理に同期してボタン状態が取得出来れば手段はこの話の本質とは関係ない。

以前、イベントでボタンの立ち上がりやキーの立ち下がりは取得出来るから必要ないとの意見もあったけど、
格闘ゲームなどではコマンド入力の判断を行うため、ある程度の期間ボタンの状態をどこぞに格納するのはザラ。
それがエンティティのクラスだからって何故プログラムが滅茶苦茶になるのか理解出来ない。
一般業務になるとどのような制限を受けるのか分からんけど、
処理は無駄になるかも知れないけど、無茶苦茶になるとは思えない。

Object指向的な制約があって、そういうこともあるのかググってみたけど、どれも釈然としない。
終いには昨日聞いたStateパターンの話が出てくる始末。

で、知りたいのは「何故ボタンの状態をクラスにすると無茶苦茶になる」のか、どういう原理で無茶苦茶になるのかと言うところ。

ちなみにカタワ指向君と昨日Stateパターンの話をした人はこの件について別にレスする必要はないと思ってる。
カタワ指向君は既に一般業務以外のものは対象外とバッサリ切り捨てているし、
Stateパターンの話をした人は状態をクラスに持つことを許容していると分かっているからね。
0882デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:24:22.68ID:5GuB5jpc
>「ボタンを押している状態」
>をクラスにしてしまうと

「ボタンの状態をクラスにするな」と言われてるのに

> 正直、ボタンの状態をイベントで取ろうが

とボタンの状態を取る方法の話だと思ってしまう人は
オブジェクト指向の設計を全く理解してない

根本的に理解していない
0883デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:26:36.80ID:5GuB5jpc
何かしらの状態をクラスにすることはありえるが
「ボタンの状態」をクラスにするなと言われてることが
まだわかってない
0884デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:28:22.54ID:jCprHRHj
>>883
うむ、だとしたら解っていないんだろうな。
見解を説明して貰ってもいいかな?
0885デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:33:01.28ID:dloO9z3Z
> 状態をオブジェクトにするな
> は昔からよく言われている

ちなみにこれどこ界隈で言われてたんす?
よく言われてるとのことだが聞き覚えは無いんで
0886デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:33:22.78ID:5GuB5jpc
>>884
お前が「ボタンの状態をクラス」にしたものに
なんて名前のクラスにするかを答えれば
お前の勘違いがはっきりする
0887デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:34:24.97ID:5GuB5jpc
>>885
俺はStateパターンを知ってるから状態をクラスにするなとは言ってない
だがボタンの状態はクラスにするな
0888デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:35:54.29ID:jCprHRHj
>>883
正直、「何かしら」の状態は良くて
ボタンと限定されると駄目なのかが分からん。
0890デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:38:31.59ID:jCprHRHj
>>886
以前、

724 名前:デフォルトの名無しさん[sage] 投稿日:2021/04/11(日) 08:28:12.36 ID:CjAFb9gH [17/24]
> 「ボタンを押している状態」をクラス
ButtonPressedClass

> 「ボタンの状況」を把握するクラスを作ること
ButtonStateScannerClass

と言うのは聞いたが実際には
「ButtonStates」になるのではないか?
0891デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:38:54.07ID:dloO9z3Z
>>887
>>250に書いてある
> 状態をオブジェクトにするな
> は昔からよく言われている

↑これが言いたいことは
「ボタンの状態はクラスにするな」

「昔からよく言われている」
ってこと?
0892デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:39:47.88ID:jCprHRHj
>>889
いや、そりゃそうだろう。
で?
0893デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:40:15.96ID:5GuB5jpc
ButtonStatesというのは
どういう状態なのか言え

Stateパターンで「ButtonStatesという"状態"の時」なんて
言い方はしねーよ

結局Stateパターンもわかってない
ググってこい。Stateパターンにおける状態のクラス名を
0894デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:41:27.77ID:5GuB5jpc
>>892
ボタンと限定されると駄目なのかが分からん。
とお前が言ったから、
だめな理由を答えたんだが?

で?とお前が言うなら、こう答えるだけだぞ
 ボタンの状態で振る舞いが変わるのはボタン自身ではないから
 ボタンに限定すると駄目
0895デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:42:15.80ID:jCprHRHj
>>893
いや別にここではStateパターンの話をしている訳ではないんだがな。
0898デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:44:38.55ID:dloO9z3Z
>>896
じゃあどういう日本語なんよ・・・
草生やしてないで「昔からよく言われている」のが何なのか教えてよ

そして、どこでいつよく言われてたのかを最終的には知りたいんよ
0899デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:45:13.33ID:5GuB5jpc
ButtonStatesとう名前のどこに
「ボタンを"押している"」という状態が含まれてるというのか

「ボタンを押している状態」をクラスにするのがダメという
日本語が理解できていない
0901デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:46:37.30ID:jCprHRHj
>>897
ああそうか
例えば上、下、右、左、A、Bというボタンが合ったとして、
それらがいつ押されたとか、いつ離されたとか、どのくらいの期間押されていたかの情報を抱えるクラスだな
0902デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:47:09.13ID:5GuB5jpc
>>898
「状態をオブジェクトにするなは昔からよく言われている」
に対して俺はそんなこと聞いたことがないと言ってる

この話に「昔からよく言われている」ことが何なのかは
一切書かれていない
0903デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:48:42.22ID:5GuB5jpc
>>901
「ボタンを押している状態」をクラスにするというのは
「ボタンの上を押している状態」をクラスにする
「ボタンの下を押している状態」をクラスにする
「ボタンの右を押している状態」をクラスにする
「ボタンの左を押している状態」をクラスにする
「ボタンのAを押している状態」をクラスにする
「ボタンのBを押している状態」をクラスにする

ということなわけだ
ありえないだろ
0905デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:50:34.06ID:jCprHRHj
>>903
なるほどそう言うことか
ありがとうカタワ指向君
なんか言いたいことがわかったよ
0906デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:54:03.92ID:5GuB5jpc
>>904
>>887で言ってる

>>905
今なら最初の頃に指摘したこれも理解できるだろ

711 名前:デフォルトの名無しさん[sage] 投稿日:2021/04/11(日) 07:34:09.10 ID:CjAFb9gH [9/24]
答えに詰まったようだねw

ゲームのボタンっていうのはキャラクターの一種なんだわ
例えばマリオだとPスイッチは、押したら潰れて消える
持って投げられる。ベルトコンベアやバネの上で動く。
壁として障害物になる。

そういうのとUIのボタンを一緒にするのは抽象化能力が低い
ボタンという名前だから同じものだと考えてしまっている
ゲームのボタン(キャラクター)を持ち出して
UIまでキャラクターにするのはアホ
0907デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:55:56.99ID:jCprHRHj
>>906
そもそもクラスに当てはめるものの見解が違ってたってことだね
0908デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:57:22.93ID:5GuB5jpc
ゲーム脳が、ゲームキャラクタとしてのボタンのことを
言っていたのか今となっては不明だが

ゲームキャラクタとしてのボタンであれば
ボタンの状態によってボタン自身の振る舞いが変わるから
これはあり得るんだよ

だが物理的なボタンの状態をクラスにするとかありえない
0909デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:59:23.03ID:5GuB5jpc
んで、ゲームキャラクタとしてのボタンの話かと思ってりゃ
今度はボタンの状態をスキャンする話を始めたからな
こりゃ完全にゲーム脳(ゲームの設計しか知らない)だとw
0910デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:59:33.60ID:dloO9z3Z
>>906
失礼

>> 状態をオブジェクトにするな
>> は昔からよく言われている
>
> ちなみにこれどこ界隈で言われてたんす?
> よく言われてるとのことだが聞き覚えは無いんで

これにレスくれたからってっきり>>250さん本人が
俺の疑問に回答くれてるのかと思ってたが別人だったのね

>>250
> 状態をオブジェクトにするなは昔からよく言われている

>>887
> 俺は(略)状態をクラスにするなとは言ってない
0912デフォルトの名無しさん
垢版 |
2021/04/14(水) 09:04:43.06ID:jCprHRHj
>>909
というか最初にボタンの状態をと聞いて

>>903
>>901
>「ボタンを押している状態」をクラスにするというのは
>「ボタンの上を押している状態」をクラスにする
>「ボタンの下を押している状態」をクラスにする
>「ボタンの右を押している状態」をクラスにする
>「ボタンの左を押している状態」をクラスにする
>「ボタンのAを押している状態」をクラスにする
>「ボタンのBを押している状態」をクラスにする

>ということなわけだ
>ありえないだろ

これは思いつかないよ
もっとも俺の頭が堅いのかも知れんけど
0914デフォルトの名無しさん
垢版 |
2021/04/14(水) 09:08:48.05ID:SQNGrkl/
てかボタンの状態くらいだったら構造体でいいだろ
0915デフォルトの名無しさん
垢版 |
2021/04/14(水) 09:13:48.91ID:jCprHRHj
>>913
怒りはしないけど
アセンブラ時代からやってたところに
そう言われると凹むわー
0916デフォルトの名無しさん
垢版 |
2021/04/14(水) 09:26:11.23ID:5GuB5jpc
>>912
俺にとってはstateパターンを知ってるから状態をクラスにすることはあり得る
ありえるが「ボタン」の状態をクラスにすることはありえない
あるとしたらゲームのキャラクターであるボタンのことを言ってるのかと推測したが
ボタンの状態をスキャンするとかいい出したから
ゲームのメインループの話をしてるのか?と推測したわけだ

ちなみにMS-DOS時代だがアセンブラも使ってたぞ
割り込みベクタを直接書き換えてた人間に、割り込みの話をされてもなーって感じだし
ゲームは本業ではないが、昔はでべろで遊んでた
今は普通にRubyやらJavaScriptやらオブジェクト指向言語も使ってる
0918デフォルトの名無しさん
垢版 |
2021/04/14(水) 09:29:49.41ID:OKAz04V1
B型プログラマ同士が卑語を交えつつマウンティングし合う大会の会場はここかな?
0920デフォルトの名無しさん
垢版 |
2021/04/14(水) 09:31:02.50ID:jCprHRHj
>>916
でべろってあのPCエンジンのか
あれやってるなら
処理単体を1/60と言っていたのも頷けるわ
0921デフォルトの名無しさん
垢版 |
2021/04/14(水) 09:32:45.36ID:jCprHRHj
>>918
ちなみに俺はAB型だ
だから人格破綻者だと言ったろ?
0922デフォルトの名無しさん
垢版 |
2021/04/14(水) 09:35:09.24ID:OKAz04V1
アマチュアでもよく使ってたタスクシステムってやつはオブジェクト指向とは違うの?
0924デフォルトの名無しさん
垢版 |
2021/04/14(水) 09:47:41.01ID:5GuB5jpc
>>920
60fpsは単なるよく使われる割り込み単位の一つだろ?
もとはVSYNC割り込み間隔で、アナログテレビの
垂直周波数(インターフェース)が大元じゃなかったか?

その間隔でなければならない理由はないが
名残で今でもその間隔(またはその倍数)が使われてるんだと思うが
0925デフォルトの名無しさん
垢版 |
2021/04/14(水) 09:54:27.98ID:jCprHRHj
>>924
今は1/120とか速いものだと1/240になっている
vsync割り込みは今でもそうだけど
でべろで言うならNMI割り込みかな
0926デフォルトの名無しさん
垢版 |
2021/04/14(水) 09:59:00.56ID:kUtl4an4
>>924
PALだと50fpsになるんだよなー
海外版と通信対戦するときはフレームレートの差を気を付けないといけなかったのはいい思い出
0927デフォルトの名無しさん
垢版 |
2021/04/14(水) 10:05:11.16ID:5GuB5jpc
>>925
それはディスプレイの話だよね?
映像の表示だけなら高速でもいいが
ボタンのスキャンは低い方に合わせないと
プレイが不公平になると思うが

まあ1秒間に60回以上入力できるやつなんていないから
120回読み取りにしちゃっても差はないというかもしれんがw
0929デフォルトの名無しさん
垢版 |
2021/04/14(水) 10:14:27.99ID:jCprHRHj
>>927
いんや作りによりけり
例えば1Pと2Pの格闘ゲームを作ってたとして
同じフレームの処理の場合、1Pの処理を
先にするとしたら当然1Pの方が先に
攻撃を当てることが出来るけど
1Pでも2Pでもその際に逆側の攻撃が
当たってないか判定を入れるだけ。

投げる処理とかも同じ処理では違いの
位置の同期をとって行うよ
0930デフォルトの名無しさん
垢版 |
2021/04/14(水) 10:21:13.74ID:jCprHRHj
そのことは実は結構大事なことで
これをしないと同時にダメージを
受けるという事象がなくなってしまう
場合があるんだよ
0931デフォルトの名無しさん
垢版 |
2021/04/14(水) 10:25:10.87ID:5GuB5jpc
>>929
いや、対戦じゃなくて一人プレイの場合よ
仮に連射するだけのゲームが有ったとしたら、1秒間に60回スキャンするよりも
1秒間に120回スキャンする方がが取りこぼしがないだろうけど
そもそも1/60 = 16.7ミリ秒を超えて反応出来る人はまずいないから
気にしてないのかなーって話

でも個人的感覚では人間は瞬間的な速度であれば10ms程度で
反応することは出来ると思うんだよね
昔イライラ棒(物理)を作った時の接触判定を10msのポーリングに決めた経験からw

Cバスは単純だから線つなげるだけで割り込みが使えたと思うんだけど
そこいらに転がってたLSIを再利用して適当に作ったから面倒だった。
0932デフォルトの名無しさん
垢版 |
2021/04/14(水) 10:31:18.67ID:5GuB5jpc
>>930
> これをしないと同時にダメージを
> 受けるという事象がなくなってしまう

そうそう。そうなるよね。
上の方でゲームではイベントを使わない理由の一つがそれだと思ってる。
イベントで処理してしまうと、どちらかが先に反応してしまうから

だからフレームレート等の一定間隔で1Pと2Pの両方の入力が済んで
両者の計算が終わってから判定処理をするべき

ということを自分で思いついて、小学生か中学生の頃に
MSXのBASICで作った連打するだけのレースゲームで実装してたw
当時は記憶媒体がなくて電源消したら全部消える。
紙にソースコード書いてたよw
0933デフォルトの名無しさん
垢版 |
2021/04/14(水) 10:35:36.33ID:jCprHRHj
>>931
それはその通りで論理的に言えば
60fpsだと1秒に30回、120fpsだと60回の
立ち上がりを検出することが出来るのかも
知れないけど、余り現実的ではないね。

映画で連打でスイカ割ってた高橋名人が
一秒間に18回って言ってたから
打てたとしてもボタンや
キーボードクラッシャーになると思うよ
そこは冗談だけど
0934デフォルトの名無しさん
垢版 |
2021/04/14(水) 10:41:14.07ID:jCprHRHj
>>932
ちなみにだけど、
昔の業務用のゲームはたまーにRAMにプログラム載せてて
電池が切れると全部無くなるというのが存在するよ
0935デフォルトの名無しさん
垢版 |
2021/04/14(水) 15:59:57.37ID:uVx5wnVX
>>898
もともとのオブジェクト指向の意味が「“こうしろ”ってメッセージで自律行動できる単位でプログラムを区切る」だから
単なるフラグ管理レベルをオブジェクト化するのは無駄だからやめろって話だわな。
フラグ管理スペシャリストクラスが必要とかなら別だが、それはそれで設計からおかしいだろうし。

そもそもオブジェクト指向はオブジェクト指向なんか要らないローレベル処理と
オブジェクト指向設計が必要な高レベル処理を自覚して使うものだから
正直な話、処理速度重視とかならそんなとこでオブジェクト指向なんて使う必要ないのよ
それをC++とかローレベルでのパーツ使い回しにオブジェクト指向使ったから
いらんとこまで『オーブージェークーートーー!…指向!」ってなって
低レベルプログラマが発狂していまに至る。
0936デフォルトの名無しさん
垢版 |
2021/04/14(水) 16:25:23.76ID:U8a2adpm
するとチンポは自律行動できる単位なのか???

>>935
>もともとのオブジェクト指向の意味が「“こうしろ”ってメッセージで自律行動できる単位でプログラムを区切る」だから

なら話を戻すが、「チンポがシコシコする」という日本語表現は、学術的に正しいと言えるのか?

チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、自ら勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
0937デフォルトの名無しさん
垢版 |
2021/04/14(水) 16:29:33.14ID:U8a2adpm
メッセージングはインナークラスとしてのオブジェクト指向でオシッコするときのチンポ、

>>935
>“こうしろ”ってメッセージで自律行動できる単位

『自律行動できる単位』は、サブクラスとしてのオブジェクト指向で勃起・射精するときのチンポ!

928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは

チンポ.オシッコを出す
チンポ.オシッコを止める

さっきトイレでやってきた。


929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く
0938デフォルトの名無しさん
垢版 |
2021/04/14(水) 17:05:54.10ID:Ph1LMjfk
割込み(インタラプト)は、OSのほうで隠蔽してくれないと
オプジェクト志向とは相性が悪い。ウィンドウシステムでも、
そこはイベント駆動(イベントドリブン)ということで
なんとか押さえこんでいるわけだし。
ボタンとかキーボードとかだと、チャタリングの処理があるので、
そこは別プロセスで割込みを受けとってキューイングしてくれないと、
メインで動いていているプロセスは対処に困る。
まぁ、入力にも出力にも関わらないプロセスを立てておいて、
出力側がタイマーでそのステートを提示の割込みで見にゆくとか、
そんな実装になるんだと思うが。
0940デフォルトの名無しさん
垢版 |
2021/04/14(水) 19:19:52.58ID:jCprHRHj
まぁそうね、考え方は人それぞれ
俺は使い分けだと思うけど。
別にCやC++だって自分で趣味的にやるなら
一切必要ないし、ゲームの仕事してても
多数の言語選べる環境もあるし。

ただ詳しくは言えないけど
CSでゲーム作るなら「今は」C、C++は
やっておいた方がいいと思うよ。
ま、これはObject指向には余り関係ない
から気にしなくていいよ。聞き流して。
0941デフォルトの名無しさん
垢版 |
2021/04/14(水) 21:17:25.66ID:J0goiD5o
コールバック関数というのがあって
常にデバイスをみてるOSやデバイスドライバに
コールバック関数を登録すると
データを渡してくれる
自分で作ったコールバック関数が実行される
0943デフォルトの名無しさん
垢版 |
2021/04/14(水) 21:39:26.53ID:OKAz04V1
同時判定って本当に同時だったっけ?
投げは絶対に同時発生しないんだから、どっちか優先だよね?(オブジェクト指向関係ない)
ボタン入力を1ビットづつ読み出し中に分岐して処理したりはしないけど、大体2P側不利にならない?(オブジェクト指向関係ない)
0944デフォルトの名無しさん
垢版 |
2021/04/14(水) 21:43:29.43ID:OKAz04V1
割込みベクタ書き換えて、自前の処理の最後に元の飛び先への分岐も入れとく感じかな?
IOCSに自分でパッチあてたりとか(なんの機種の話だ)
0945デフォルトの名無しさん
垢版 |
2021/04/14(水) 21:47:39.39ID:J0goiD5o
>>943
ベストをつくしたいのかもしれないけど
遅延とか普通なのに同時を
判定するのは意味ないような
0950デフォルトの名無しさん
垢版 |
2021/04/14(水) 22:56:28.03ID:Ph1LMjfk
なんかスレ伸び速杉(笑)
昔は CPU が遅かったので、30 FPS としたら
33ms の奪いあいだったわけだが、
現在はプロセッサは速いわ I/O 周りのチップ
(出力側のグラフィックも含めて)は
充実してるわで、 60 FPS でも
16.7 ms の分配ということになる。
しかも最近は CRT じゃなくてディジタル表示なので、
リフレッシュタイムとかは表示側のプロセッサに
丸投げできる(とにかくグラフィック・メモリに描いてあれば
表示してくれるわけだから)。
>>940
> CSでゲーム作るなら「今は」C、C++は
>やっておいた方がいいと思うよ。
同意見ではあるのだが、
アセンブラ →〔マクロプリプロセッサ〕→ マクロアセンブラ →
〔C コンパイラ〕→ C 言語 →〔プリプロセッサ?コンパイラ?〕→
C++
という構造を踏まえたうえで、OS とか 制禦とかについて、理解して
もらいたいと思う。
とはいえ、ぶっちゃけこのあたりの話は「オブジェクト志向」では
隠蔽するのがお約束なので、もはやオカルトになってしまう。
C++を「オブジェクト志向」と呼ぶのは、正直いかがなものか、
と思う。
0951デフォルトの名無しさん
垢版 |
2021/04/15(木) 00:42:20.09ID:c60l0/FJ
>>943
それも作りによりけり
1P側有利になっているものもあれば
はじき合うように作られてるものもあれば
投げを奪い合うように作られてるのもあるよ

投げを奪い合うものというのは
ちょっと説明しにくいけど組み合う形になって
その後、操作のタイミングとか、連打回数とか
そういう本来の投げの動作と違う動作になって
投げ勝ち負けの判定をするタイプのもの。

でも実際は通信対戦とかすると
僅かにラグが発生したりするので
その辺は多少は許容するという
暗黙の了解があるみたい。
最近「ラグい」って言葉を聞くことない?
あれはそのラグが酷くて文句を垂れてる
ときの言葉なんだ。
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況