1:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:36:13.030 ID:MZ3DYj2m0.net

ランダムで数字出してその数字に応じてステータスを変化させたいんだけどさ
例えば最初にHP10あってランダムで出た数字が偶数だったらHP-1、奇数だったらHP+1として
まずランダムで偶数が出たらHP9になるじゃん?
次に奇数が出たらHP10になるじゃん?
同じようにどんどんランダムで判定してステータスを変化させていきたい

実際はステータスはもっと複雑だけど簡単に言えばこんな感じ


で、一番最初の初期値設定して一回判定するまではできた

その次に一回目の結果を参照してもう一回判定するやり方がわからない


どうやればいい?



2:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:36:37.526 ID:MZ3DYj2m0.net

あ、ちなみに言語はJAVA

3:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:36:48.515 ID:zKx4R++Cd.net

センスねえな

4:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:37:44.820 ID:HgEq3RrXx.net

バカすぎ

5:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:37:50.747 ID:MZ3DYj2m0.net

センスあるやり方を教えて欲しい

6:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:38:22.374 ID:ijttxs7PM.net

hp=hp-dmg

8:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:40:05.312 ID:MZ3DYj2m0.net

>>6
同じのをもう一回書くってこと?

7:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:38:25.402 ID:gZEkF+cXd.net

>>1
ナンセンスな事をするならグローバル変数使うとか

8:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:40:05.312 ID:MZ3DYj2m0.net

>>7
ググってみる

9:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:42:28.744 ID:xP4haxal0.net

ステータス変化させるメソッド作ってそいつを何度も呼び出せばいい

17:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:49:15.921 ID:MZ3DYj2m0.net

>>9
呼び出す方法とかがあるの?

22:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:54:37.970 ID:puDbzvO+0.net

>>17
クラスは知ってる?

23:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:57:21.379 ID:MZ3DYj2m0.net

>>22
聞いたことはある程度

29:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:04:05.010 ID:Ysf0uSFO0.net

>>23
クラス知らなくてもできそうだがなあ
コード見ないと分からん

33:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:08:38.017 ID:MZ3DYj2m0.net

>>29
コードはなあ…
たぶん嫌いな人が多そうなことやってるから見せづらい

10:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:42:32.788 ID:UAqNPsZW0.net

if文を全てのパターン書けよ

17:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:49:15.921 ID:MZ3DYj2m0.net

>>10
それは一回の判定の中でやってる

11:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:43:02.608 ID:e531JFkr0.net

whileかforでやりたい回数だけ回せばいいんじゃない
それかobserverパターン使って数値の変化を通知してもらってどんどん変化させる

17:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:49:15.921 ID:MZ3DYj2m0.net

>>11
やりたい回数っていうのは決まってない
二つ目のやつググってみる

13:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:45:25.340 ID:XocXSTnH0.net

hp+=2*(rand.nextInt(2)%2)-1

19:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:52:40.753 ID:MZ3DYj2m0.net

>>13
そこまではできてる
その結果を参照してもう一回やりたい

14:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:45:34.396 ID:HGSwG8eLp.net

プログラミグ以前の問題じゃねえか氏ね

15:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:46:32.390 ID:Ysf0uSFO0.net

状況がわからん
メンバを参照するだけでいいじゃん

18:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:49:45.881 ID:e531JFkr0.net

なんか勘違いしてたわ
ドラクエみたいにモンスターからダメージ受けてみたいにしたいのか

ならキャラクターのステータスクラス作ってgetとsetメソッド作って参照と書き換えすればいいんじゃないの

19:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:52:40.753 ID:MZ3DYj2m0.net

>>18
そんな感じ

俺ほぼ初心者だから用語が難しい

20:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:53:32.746 ID:xP4haxal0.net

まさか制御文までしかわからなくてmainメソッドしかないコード書いてないよね

23:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:57:21.379 ID:MZ3DYj2m0.net

>>20
その通り

24:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 01:59:32.672 ID:XocXSTnH0.net

プログラム書き始める前にもっと一から調べたほうがいい
クラス使わないならJava使う意味ないじゃん

27:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:02:54.625 ID:MZ3DYj2m0.net

>>1の例で言うと
最初のHP10を設定して
ランダムで数字出して
偶数だったら-1、奇数だったら+1する
てとこまでがクラス?

32:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:06:46.632 ID:Ysf0uSFO0.net

>>27
メインメソッドひとつでも出来ると思うぞ
HP変数をメインの中で繰り返し参照すればいいんでしょ

35:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:11:32.918 ID:MZ3DYj2m0.net

>>32
繰返し参照するのはどうやるの?

37:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:16:59.996 ID:Ysf0uSFO0.net

>>35
どうやるというか、どうとでも出来る
だからお前がどの方法を使ってるのか知りたいからコード見せてって話
メインだけってことなら、whileの中で参照するだけでも繰り返し参照になる

が、重要なのはwhileの中で変数宣言してないか、ってことだ

28:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:03:31.833 ID:vf5cm0c00.net

ゲーム作るのはもうちょっと先だ
もう少し入門書進めよう

30:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:05:30.311 ID:FlxjFa0o0.net

それぞれの敵に初期値を1回変化させた値設定すればいいじゃん

31:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:05:49.509 ID:Z4cWVB8p0.net

キャラクターのステータスのクラス作って
その値を変更するのはダメなん

33:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:08:38.017 ID:MZ3DYj2m0.net

>>31
もうちょっと楽にできないかなと思って
毎回変える値はランダムの数字だけにしたい

39:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:22:38.343 ID:MZ3DYj2m0.net

>>1でやってるのは

public static void main(String[] args) { 
  int HP = 10; 
  int num = Math.floor(Math.random()*10+1); 
int num2 = num%2; 
if(num2 == 0){ 
HP = HP+1; 
}else { 
HP = HP-1; 
} 

こんな感じでいいのかな?
実際やってるのはこの中身をもっと複雑にした奴

42:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:28:02.641 ID:Ysf0uSFO0.net

あーそういうことか…
そりゃ一回しか参照されねえよww

44:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:31:06.098 ID:MZ3DYj2m0.net

>>42
1回やるのだけを書いたからね
これを何回もできるようにするにはどうすればいいのか知りたい
それともこのやり方だと無理?

41:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:25:22.785 ID:XocXSTnH0.net

main内だけでやるならHP=10の後にforなりwhile入れなきゃ

44:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:31:06.098 ID:MZ3DYj2m0.net

>>41
やっぱそれらが必要なのか

46:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:34:00.233 ID:Ysf0uSFO0.net

>>44
いや、単にwhileで括れば繰り返しになるよ
While文、でググってみ
多分whileがなにか分かってないと思うぞ

53:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:42:11.358 ID:MZ3DYj2m0.net

>>46
何かされるまで繰り返すものってことでいい?

45:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:32:52.923 ID:MZ3DYj2m0.net

全然知らなくて悪いな
中途半端に習いすぎた

47:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:34:17.413 ID:UYQ9qUYx0.net

何回繰り返したいんだよ

50:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:35:31.128 ID:vf5cm0c00.net

さっきも言ったが
本かwebか知らんがまだゲーム作るのは早いぞ
今は熱意で読みにくいコードも書ける読めるだろうけど熱が冷めたらそのゲームは1から書き直しになるぞ
もう少しだけ勉強したほうがいい

53:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:42:11.358 ID:MZ3DYj2m0.net

>>50
どうせまだ80行くらいしか書いてないし書き直しになっても大丈夫

57:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:49:38.725 ID:vjvU/kDR0.net

プログラミングの質問をするときは、「何をしたいのか」「何が分からないのか」をできる限り具体的かつ分かりやすく書こう。
そして、合わせて関連するコードを貼ろう。例えそれが自分からみてゴミだったとしても。

58:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 02:57:35.682 ID:P9BN0NfTp.net

こういうことなん?
なにをどうしたいのかよくわからん
何を入力してどういう出力を期待するの?

62:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:02:59.983 ID:MZ3DYj2m0.net

>>58
ああそういうことだね
例えば箱を開けたら
1/2の確率で中からボールが飛び出してHP-1
1/2の確率で中から薬が飛び出してHP+1
だとして
一つ目の箱開けてステータス変化
二つ目の箱開けてステータス変化

これを繰り返したい
特にどうなったら終わりというわけではなく

63:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:05:13.782 ID:+h5JSn8f0.net

終わり作らないならループし続けるだけじゃん

65:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:06:35.105 ID:MZ3DYj2m0.net

>>63
一回一回の結果も知りたい

66:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:07:20.516 ID:vjvU/kDR0.net

乱数の結果によってHPを変化させる関数(意味が分からなかったらググって)、あるいは乱数の結果によって1または-1を返す関数を作りたいってこと?

68:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:09:20.542 ID:MZ3DYj2m0.net

>>66
前者
だけど前者はもう作れてる
それを自分のタイミングで前回の結果を参照して行うものを作りたい

67:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:08:34.939 ID:1MJvZ5LV0.net

再帰呼び出しでいいんじゃね

69:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:11:09.365 ID:MZ3DYj2m0.net

ドラクエで
一匹目のスライムと遭遇して倒して何らかのステータス変化があったとするじゃん
そのステータスのまま二匹目と遭遇して倒して何らかのステータス変化があって

これを繰り返す感じ

71:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:12:33.127 ID:P9BN0NfTp.net

よくわからんけどどこかに前回データを格納しときゃいいだけじゃ
データが誰の持ち物にすべきかはしらんけど

73:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:14:14.351 ID:MZ3DYj2m0.net

やっぱり前回のデータを自分の手で書き残したりとかが必要になるの?

77:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:17:55.734 ID:P9BN0NfTp.net

>>73
どうしてデータを格納せずに再利用できると思ったのかのほうが聞きたい

72:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:12:35.796 ID:yfgyBs/Q0.net

Public Class aaaa{ 
static int HP=100; 
public static int main(){ 
int openCount=0; 
while(true){ 
sysout("宝箱OPEN %d回目",++openCount) 
hp+=(Random.nextInt(2)%2-1); 
sysout("HP:%d"hp); 
} 
} 
}  

出力内容
宝箱OPEN 1回目
HP:101
宝箱OPEN 2回目
HP:102

sysoutはprintlnだかとString.formatだかそんな感じので頼む


RandomもRandom randでrand.nextIntだかそんなので

いかんのか?

78:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:18:55.280 ID:MZ3DYj2m0.net

>>72
2回目で終わってるのは何で?

79:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:19:33.046 ID:yfgyBs/Q0.net

無限に続くけど書くの省略しただけやで

81:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:25:25.515 ID:MZ3DYj2m0.net

>>79
ああそうか
一回目の結果を見てどの行動するかも選びたいから結果は一回一回で区切りたいんだよね

74:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:15:38.039 ID:XocXSTnH0.net

もう諦めて勉強し直すか、諦めてプログラム全部ここに載っけるかしたほうがいいと思う

80:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:19:43.052 ID:F+YcR/1B0.net

自分のタイミングで繰り返す←ここがマジでイミフ
毎回ループするごとに続けるか続けないか入力するコード挟むとか?

83:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:29:29.480 ID:MZ3DYj2m0.net

>>80
>>81みたいに
この結果が出たから次はこういう行動をしようと思って行動変えたりするじゃん?
だからどんどんプログラムで結果を出していってほしくない

82:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:26:41.975 ID:P9BN0NfTp.net

自分のタイミングが未定なら
HPを入力するとステータス変化後のHPを返すだけの処理を
メイン処理が好きなタイミングでコールするようにすればいいだけじゃないの

86:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:32:03.579 ID:XocXSTnH0.net

行動したあとに1押したら攻撃、2押したら回復、3押したら逃げるみたいな感じでしょ?
switchでも使えば?

90:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:36:27.745 ID:MZ3DYj2m0.net

>>86
そんな感じ
switch調べてみる

88:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:33:47.688 ID:yfgyBs/Q0.net

int HP=100; 
bool openResult=0; 
stack<Boolean> openResultHistory; 
update(){ 
oprnResult=(rand()%2==0); 
if(openResult){ 
//open成功 
HP+=1; 
if(openResultHistory.get(0)){ 
//前回も成功してたからボーナス 
HP+=555; 
} 
} 
else{ 
HP-1; 
} 
//今回のopen結果を残す 
openResultHistory.push(openResult) 
} 

保存しておくしかない
Javaのstackの実装クラス名忘れたけど適当にぐぐってほしい
とりあえず保存しておくしかない

92:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:40:04.484 ID:MZ3DYj2m0.net

>>88
勝手に関係ないシステム追加するの好き

そのopenHis~っていうの使えば勝手に保存されるの?

93:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:42:53.351 ID:e531JFkr0.net

class ThisIsClass { 
//↑クラスの書き出しThisIsClassはクラス名 
static int charaHP; 
CharaStatus status; 
//↓これはコンストラクタ 
ThisIsClass(){ 
status = new CharaStatus(10); 
} 
//↓これがメソッド 
public static void main(String[] args) { 
charaHP = damageCheck(); 
} 
//↓これもメソッド 
int damageCheck() { 
int afterHP = status.getHP()-1; 
status.setHP(afterHP); 
return afterHP; 
} 
//↓の"}"でThisIsClass終了 
} 
//↓別のクラス 
class CharaStatus { 
private int HP; 
CharaStatus(int decideHP){ 
HP = decideHP; 
} 
int getHP(){return HP;} 
void setHP(int afterHP){HP = afterHP;} 
}

95:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:51:04.519 ID:MZ3DYj2m0.net

>>93
俺は1つのメソッドでやろうとしてたからクラスを利用してもっと他のメソッドも使えってことを言われてたのかな

96:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 03:57:36.666 ID:e531JFkr0.net

>>95
まあそうした方がエラー箇所とか仕様変更には対応しやすいんじゃない

97:以下、\(^o^)/でVIPがお送りします 2015/08/03(月) 04:13:47.247 ID:MZ3DYj2m0.net

>>96
そうなのか

みんなもう寝てると思うけどありがとう


一から勉強し直してからまたやってみる


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