1:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:05:24.673 ID:cHZclClD0.net

Javaに躓いたわけじゃなくプログラム自体に躓いてしまった



2:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:06:28.264 ID:q8hnaTksd.net

同じじゃないの

4:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:07:18.189 ID:cHZclClD0.net

>>2
Java特有の文法で躓いてるなら他の簡単な言語に移ることもできるけどそれ以前のところだからどうしようもない

3:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:07:16.200 ID:0n2Er3Vre.net

javaなんて糞言語辞めとけ

7:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:08:27.204 ID:cHZclClD0.net

>>3
糞言語かどうかを判断できるレベルに達してないし別にこのままで良いわ
しっかり使えるようになってきて糞だと思ったら乗り換える

25:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:22:03.938 ID:q8hnaTksd.net

Javaが初めての言語?

28:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:26:57.811 ID:cHZclClD0.net

>>25
はい
プログラム経験はゼロ
完全にJavaに処女を捧げた形

15:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:15:17.642 ID:K2hWe1EhM.net

java使って何したいの?

22:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:18:08.430 ID:cHZclClD0.net

>>15
ゲームも作りたいしゲーム以外でも使いたい
あとは単純にプログラミング自体への興味がある

18:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:16:30.959 ID:LWAjThfqM.net

コードは数書け
いずれ分かる

13:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:14:40.749 ID:raEneOTX0.net

とりあえずやってみるってのが嫌なタイプ?

19:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:16:39.364 ID:cHZclClD0.net

>>13
分からんかったらすぐ投げる癖があるのよね
治したいけど治らん

9:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:09:28.189 ID:HTSZZWTb0.net

難しく見える文ほど、いくつもの処理を集約した便利な機能なものよ

16:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:16:04.839 ID:K2hWe1EhM.net

オブジェクト指向は比較的理解しやすいぞ

24:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:19:06.076 ID:cHZclClD0.net

>>16
いろんなものを役割を持ったオブジェクトとして捉える?みたいな感じだよな?
自転車のギアがどうとかこうとか

5:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:07:53.059 ID:vGU5TTDB0.net

何がわからないの

10:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:10:30.644 ID:cHZclClD0.net

>>5
関数って戻り値1つしか返せないっぽいけどどう使えばいいの?
大きい処理(繰り返しとか条件とかの複雑な奴)で作るのか1行で書けるような小さい計算で作るのかがいまいちピンとこない

32:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:29:35.374 ID:TSKQMfXe0.net

関数の戻り値はゲッターに使われることが多い
特に外部の人間から>>1の年齢を聞く時に使う
つまり、>>1にゲッターだけ用意しておいてセッターを用意しないでおけば、勝手に年齢詐称されることがなくなる
>>1がいくら18歳を偽ったとしても、ゲッターが30を返す限り、>>1の年齢は30歳であることは変わらない

35:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:33:12.209 ID:mVuMv3xld.net

戻り値の本質は「回答」だよ
日本語できないアホが質問を質問で返してきたり
聞いてもないこと返してくるけど
出来るだけ素直な回答を返すようにすればいい

大きい値を返したいならクラスそのものを返してしまえ


嫌ならシングルトンにすればいい

8:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:09:09.112 ID:I9XG+Vc30.net

躓くも何もやりたい処理をそれが出来る関数に任せるだけじゃん
まあ最初は汚いソースになるだろうけど人の見たりして洗練してきゃいいだけだし

12:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:12:11.018 ID:cHZclClD0.net

>>8
その処理の規模が分からない
RPGで言うなら「戦闘」を全部ひとつの関数にすればいいの?「ダメージ計算」「アイテムの個数を減らす」「HP計算」の関数をそれぞれつくればいいの?

20:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:16:56.478 ID:r+DqPfFn0.net

>>12
前者に後者を全部突っ込むんでねえの?

17:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:16:16.223 ID:2wfUREW1d.net

>>12
戦闘のクラスの中に必要な処理の関数を詰め込む

26:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:23:33.256 ID:WEEeM/nv0.net

関数なしで書いてみて、
何度も同じこと書くなら関数
別のプログラムでも使うならクラス
でやってみると関数やクラスの意味がわかるぞ

50:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 09:37:29.203 ID:Nkl/QAfG0.net

こう考える

「RPG」から見て、「戦闘シーン」や「フィールドシーン」や「オープニングムービーシーン」はサブ機能である


「戦闘シーン」から見て、「プレイヤーのターン」や「敵AIのターン」はサブ機能である
「プレイヤーのターン」から見て、「行動選択」や「効果適用」はサブ機能である
「効果適用」から見て、「使用したアイテムの個数を減らす処理」や「演出」や「ダメージ計算処理」はサブ機能である

こんな風に階層化して考えるので、答えは『どの規模のものを取ってもれも関数(あるいはクラス)である』となる

この“サブ機能”を関数で作るかクラスで作るかは比較的些細な問題だが、


Javaの場合は最底辺のサブ機能以外は大体クラスで作ればおk
特に、「~~シーン」とか「~~のターン」みたいに“同じサブ機能のバリエーション”である場合、
いわゆる“ポリモーフィング”ってやつで作ると何となく上手くいく

51:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 09:52:42.302 ID:cHZclClD0.net

>>50
分かりやすいありがとう
クラス間での関数の共有とかもできるの?

53:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 10:07:46.122 ID:Nkl/QAfG0.net

>>51
「共有」といっても幾つかのパターンがある

例えば、「プレイヤーのターン」と「敵AIのターン」では、「行動選択」が違うだけで「効果適用」自体は全く同じ


この場合、次のようにクラス設計すればよい

08

異なる処理である「行動選択」だけそれぞれで実装して、
共通処理である「効果適用」は「ターン」の方に持たせておく

もっと単純でどこでも使う、「上限と下限と現在値を指定して、値を指定した量増減する」(HPにもMPにもアイテム数にも使える単純な数値処理)みたいなのは、


「RPG」というメイン機能がとりあえず持っといてどこからでも使えるようにすればいい
ただ、最早このレベルだとRPGに限った処理でもないから、「汎用計算処理」みたいなクラスを用意してどこから使えるようにする方が適切だろう

54:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 10:16:06.771 ID:p5Xft2iT0.net

説明わかりやすくてワロタ

55:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 10:17:50.305 ID:cHZclClD0.net

クラス全く知らないのに理解できた
本当にありがとう

61:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 10:25:23.727 ID:Nkl/QAfG0.net

>>55
知らねえのかよw

さて、RPGに限らない処理っていうと他には「BGMを流す」「画面に何かを表示する」みたいなのが考えられるが、


こうやってそういうのをどんどん別のクラスに移動していくと大変面白い事が起こる

今まで「RPG」というメイン機能の下にいろいろなサブ機能がぶら下がっていたように見えたのが、


今度はメイン機能であるはずの「RPG」が汎用機能の下にぶら下がり始めるわけだ(もちろん、RPGから全てのサブ機能が消えるわけではないが)

すなわち、「ゲームの汎用の枠組み」がまずあって、「RPG」はそのサブ機能として作る事になる


あるいは「アプリケーションの汎用の枠組み」のサブ機能として「ゲームの汎用の枠組み」ができて、さらにその下に「RPG」というサブサブ機能、という形かもしれない
これは非常に重要な事で、一度その「枠組み」が完成してしまえば、何を作るにしてもそいつを利用して作ればいいって事になって楽チン

ところで「枠組み」ってのは英語で「フレームワーク」っていうわけだが、


プログラミングで「フレームワーク」って言葉があるよな? つまりそういう事だ

34:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:31:36.301 ID:GAkbVXYv0.net

javaって関数あるっけ
メソッドじゃないの

37:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:36:54.285 ID:K7AErO8IM.net

継承とインタフェイスの使い分け教えてください

41: ◆VIP.NJP4S2 2015/07/24(金) 09:15:20.942 ID:0N462UFR0.net

>>37
抽象クラスとインターフェース?
抽象クラスは未完成部分があるクラス。
インターフェースはクラスの設計図。

42:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 09:16:02.143 ID:0N462UFR0.net

とりあえず「スッキリ分かるjava入門」「スッキリ分かるjava入門・実践編」を買うといい。

中山 清喬 国本 大悟
インプレス
売り上げランキング: 1,339

47:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 09:19:15.530 ID:cHZclClD0.net

>>42
それ買おうとしてたやつだ
やっぱり良いのか

36:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 08:36:30.581 ID:gwRpsaxa0.net

なんでもそうだけど実際にサンプルコードとか見て真似して使ってみるのが1番
説明されてもわからない

49:以下、\(^o^)/でVIPがお送りします 2015/07/24(金) 09:30:38.679 ID:txRxBBWO0.net

人のソース読んでみるのがいいかもな
Apacheのcommons ioとか読んでみると勉強になる


元スレ:http://viper.2ch.sc/test/read.cgi/news4vip/1437692724/