javaの始めたけどオブジェクトの使い方わからなくてワロスwwwww





1: 名無しの民 2020/08/26(水) 19:25:57.503 ID:C9O1+Ffr0
勇者たかし作ってもメインに書いてばかりなんだが
ダメージ計算とかも含ませたいのですが。。。

no title

no title

2: 名無しの民 2020/08/26(水) 19:27:03.026 ID:kTG1jv9C0
まずは勇者というクラスを作ってメインではそのインスタンスを使うようにするんだよ

3: 名無しの民 2020/08/26(水) 19:27:47.759 ID:C9O1+Ffr0
>>2
勇者クラスを作ったのはいいのだけれど
情報が活かしきれていないのです

4: 名無しの民 2020/08/26(水) 19:28:35.977 ID:ZEXvWPfS0
attackだぞ
タイポ直しとけ

6: 名無しの民 2020/08/26(水) 19:29:53.941 ID:C9O1+Ffr0
実行するとこんな感じなんだかここでダメージ計算とかも入れたいんだ
>>4
すまん、修正しておく

5: 名無しの民 2020/08/26(水) 19:29:13.275 ID:ReAXDjrV0
クラスの中にprintが入っちゃダメで、メソッドで文字列を返して、メインでprintする

8: 名無しの民 2020/08/26(水) 19:31:50.484 ID:C9O1+Ffr0
>>5
うーんわかりそうでわからん
>>7
returnってやつだっけ

16: 名無しの民 2020/08/26(水) 19:43:38.615 ID:hGjMKGhX0
>>5
の言いたいことはオブジェクト側には情報だけ持たせて
実際にその情報を出力するのはmain側にしたほうが
役割が別れて良い、って事だと思う

オブジェクトを作るのはインスタンスを複数持てる事が利点だから、勇者一人なら実はオブジェクトとして分ける必要もない。
キャラクタークラスを作ってそこにキャラクター情報をもち、アクションクラスにキャラクターインスタンスを渡して実際のキャラ動作を行う方が役割がちゃんと分かれてスッキリする

18: 名無しの民 2020/08/26(水) 19:44:52.130 ID:SIdnY7CH0
>>16
敵になったコピーキャラクターが攻撃してくることもあるから、分けておいたほうがいいかもしれないぞ

7: 名無しの民 2020/08/26(水) 19:30:09.340 ID:7k01Nggaa
アタックメソッドの返り値でダメージ計算した値を返すだけじゃね

9: 名無しの民 2020/08/26(水) 19:34:39.027 ID:ZEXvWPfS0
インスタンスしてもたかしって名前の勇者が量産されるの何か気持ち悪いな
まずはコンストラクタで初期値設定させよう




12: 名無しの民 2020/08/26(水) 19:39:11.539 ID:C9O1+Ffr0
>>9
固定させる奴だっけ
調べながらやってみる
>>10
例えば??

14: 名無しの民 2020/08/26(水) 19:41:55.430 ID:ZEXvWPfS0
>>12
インスタンス生成時に一回呼び出される特殊なメソッドだよ
普通はここで初期値設定とか行う
this.name = name;
みたいに

書く前に、まずは必要なクラス・メソッドの洗いだししたいな

15: 名無しの民 2020/08/26(水) 19:42:22.112 ID:SIdnY7CH0
>>12
「内部で何らかの処理をして結果が返ってくる」ってことさえわかってればいい部分を、関数に分ける
たとえばダメージ計算なんかは、「攻撃者のステータス+バフと被攻撃者のステータス+バフからダメージが産出される」ってことさえ知ってればいい
だから関数にしておいて、具体的な内容は後から決める

10: 名無しの民 2020/08/26(水) 19:36:46.614 ID:SIdnY7CH0
まず、関数を分けることを覚えろ
オブジェクトの使い分けはその後だ

11: 名無しの民 2020/08/26(水) 19:38:16.204 ID:CwIlRpZt0
MonsterクラスとMonsterインスタンス作ろうぜ
HeroとMonsterにそれぞれpowerとdefenseのフィールド変数をもたせて
damage = 2 * power – defense;
みたいなダメージ計算をしようぜ

13: 名無しの民 2020/08/26(水) 19:39:27.227 ID:agINGjWud
バトルクラスを作ったら?
ダメージは勇者ちゃんとモンスターちゃんを引数にして計算

19: 名無しの民 2020/08/26(水) 19:45:15.871 ID:ZEXvWPfS0
>>13
俺もこれ派
wihleのなかでbattleをループさせて、これと別にgameover判定のメソッドを入れてbreakさせる感じで

17: 名無しの民 2020/08/26(水) 19:43:55.793 ID:C9O1+Ffr0
ありがとう
ちょっとレス見れそうにないから参考にしながら作り直してみる
とりあえず必要な物クラス分けして作っていくう

20: 名無しの民 2020/08/26(水) 20:15:19.215 ID:3v5msgsK0
1がまだいるなら教えてやろう

21: 名無しの民 2020/08/26(水) 20:17:09.656 ID:3v5msgsK0
ここまでオブジェクト指向を理解できている奴0人

22: 名無しの民 2020/08/26(水) 20:17:10.116 ID:3v5msgsK0
ここまでオブジェクト指向を理解できている奴0人

23: 名無しの民 2020/08/26(水) 20:18:02.174 ID:ESv6ituQ0
大事な事なので

24: 名無しの民 2020/08/26(水) 20:19:57.039 ID:CwIlRpZt0
Javaを使ってそれなりに大規模なRPG作ったけど
それでもオブジェクト指向を理解できてるかと言われたら微妙だわ

25: 名無しの民 2020/08/26(水) 20:20:34.343 ID:3v5msgsK0
オブジェクト指向を理解してる気になっている奴は
no title

みたいなコードすら書いたことないんだろうな
実際にコード書けば、オブジェクト指向を理解してないことに気付くはず
それに気付けた1はマシ

27: 名無しの民 2020/08/26(水) 20:25:53.788 ID:3v5msgsK0
まずはゲーム世界の中で主人公が状態遷移しながら行動する
こう考えよう
ステータスには移動、先頭、店とかがある

こうやってまずは大きな枠組みを把握

28: 名無しの民 2020/08/26(水) 20:27:54.009 ID:3v5msgsK0
次にシナリオの進捗がある
シナリオが進むことで、これまで行けなかった場所に行けたり、新しい武器が買えたりする

29: 名無しの民 2020/08/26(水) 20:28:03.887 ID:MnJQu1Iy0
デザインパターンの勉強すれば否が応でも覚えるよ

31: 名無しの民 2020/08/26(水) 20:30:12.900 ID:3v5msgsK0
>>29
だったらお前も設計案を提示しろ
一人で書いててもつまらん

30: 名無しの民 2020/08/26(水) 20:29:43.348 ID:VOP0P1vU0
まずは思うままに書いてみることが重要なわけよ

32: 名無しの民 2020/08/26(水) 20:32:31.414 ID:3v5msgsK0
シナリオオブジェクトで進捗を保持
更新があったらアップデートして、移動したり、店に入ったときに参照する

33: 名無しの民 2020/08/26(水) 20:33:36.859 ID:UyxXcpM10
設計はどうでもいいからコード書いてあげて

35: 名無しの民 2020/08/26(水) 20:35:39.728 ID:3v5msgsK0
>>33
ど素人過ぎて呆れる

34: 名無しの民 2020/08/26(水) 20:35:16.793 ID:3v5msgsK0
バトルクラスは戦闘を管理する
アイテムやスキル、敵なんかはいろいろ変わるけど、それは主人公オブジェクトやモンスターオブジェクトで保持している
だから、それらが違っていても戦闘クラスは同じように処理することができる




36: 名無しの民 2020/08/26(水) 20:37:57.634 ID:NnIxGlD30
デュアルあと一発が入らねえ

37: 名無しの民 2020/08/26(水) 20:38:29.102 ID:NnIxGlD30
誤爆

38: 名無しの民 2020/08/26(水) 20:44:33.663 ID:3v5msgsK0
シナリオには会話もあるな
タスクとその進捗も
会話・タスクもオブジェクトにしてシナリオがそれを保持する

39: 名無しの民 2020/08/26(水) 20:46:29.697 ID:qWyrbEJy0
なんでこの人
1はもういないのに頑張って書いてるの?(´・ω・`)

42: 名無しの民 2020/08/26(水) 20:47:25.430 ID:3v5msgsK0
>>39
気分転換
優秀な設計者は頭の体操を欠かさない

40: 名無しの民 2020/08/26(水) 20:46:29.712 ID:3v5msgsK0
シナリオは製作者が作るもので、
プレイヤーは移動・戦闘・入店などをしながらシナリオの達成を記録する

大枠はできた

41: 名無しの民 2020/08/26(水) 20:46:58.834 ID:NnIxGlD30
若いから

43: 名無しの民 2020/08/26(水) 20:51:01.727 ID:3v5msgsK0
入力を受け付けるクラスは入力があれば現在アクティブなクラスにそれを通知する

45: 名無しの民 2020/08/26(水) 20:56:37.256 ID:3v5msgsK0
>>43
現在アクティブなクラスにそれを通知するのは違うな
ゲームマネージャに通知だな
ゲームマネージャは現時点のあらゆる情報を管理する
アクティブなクラスが具体的に何に対応させるべきか迷っていたんだけど
それは勝手に決め打ちすべきではないとうこと
それはゲームマネージャが管理する

44: 名無しの民 2020/08/26(水) 20:51:51.313 ID:3v5msgsK0
アクティブなクラスは必要に応じて出力するクラスに通知して、画面を更新する

46: 名無しの民 2020/08/26(水) 21:05:51.509 ID:6dIE7TwAM
三大美徳好きそうだけどHRTがわかってないと悲しい

47: 名無しの民 2020/08/26(水) 21:08:18.147 ID:azuC1bH+0
こういう作り方をしたいなら、
タスクシステムとか作らないと
オブジェクト指向設計を活かせない。(断言)

タスクシステムってのは旧式のフレームワークだから、
つまりフレームワークを作らないといけない。

なんでこんな今時難しい(基礎だけの)作り方をしたいと思ったのか・・・
それしか出来ないから、ってんなら、
もう少し出来ることに寄った設計にした方が良いと思う。

48: 名無しの民 2020/08/26(水) 22:05:40.837 ID:ZEXvWPfS0
こういうプログラミングスレってすぐにマウントクソガイジが現れるよな
職場で居場所なさそう

49: 名無しの民 2020/08/26(水) 22:22:17.999 ID:P45IB3y90
プログラミングスレはマウント合戦でよく伸びる




引用元:http://hebi.5ch.net/test/read.cgi/news4vip/1598437557


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です