(Part2より)
ところが、結論を先に書けば、やっぱりというか今回はなかなかうまくいかなかったのです。まずは、こんな質問をしてみました。
「イスカンダルのとうふ屋ゲーム」を知っていますか?
申し訳ありませんが、「イスカンダルのとうふ屋ゲーム」については、私の知識には含まれていません。可能性のある理由として、そのゲームが非常に新しいか、または地域的な人気があるゲームである可能性があります。詳細について教えていただければ、お手伝いできるかもしれませんが、保証することはできません。他の質問やお手伝いできることがあれば、どうぞお知らせください。
(ChatGPT)
まあ、知っているほうがおかしいとは思いましたが。日本人の99.9999%の人は知らないと思うし(数字は適当)、ということで、本題のほうにはいったわけですが。
以下のRubyで書かれたプログラムをJava言語に変換してください。
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
##■イスカンダルのトーフ屋ゲーム■ (外部仕様より再現)
##Copyright (C) 1978-2013 by N.Tsuda
##Reference: http://vivi.dyndns.org/tofu/tofu.html
##背景: あなたはイスカンダル星で遭難し、帰りの費用を稼ぐためにトーフをなるべくたくさん売ってお金を稼がなければならない。
##最初に所持金1000円が与えられる。
##30000円儲けることができれば、めでたくイスカンダルから脱出することができる。
##トーフは製造に一個あたり10円かかり、一個あたり12円で売ることができる。
##トーフは晴れの日は100個、曇りの日は50個、雨の日は10個売れる。
##売れなかった分は損失となる。
##あなたは天気予報を見て、明日いくつのトーフを製造するかを決めねばならない。
##
##A Tofu vendor surviving in Iscandar
##Copyright (C) 1978-2013 by N.Tsuda
##Reference: http://vivi.dyndns.org/tofu/tofu.html
##Background: You are a castaway in planet Iscandar in outer space, and you have to gain money by making and selling Tofu in order to go back to your mother planet.
##Initially you have 1,000 yen. The goal is to gain 30,000 yen for your traveling fee.
##One Tofu costs 10 yen for production, and the unit price is 12 yen.
##The sales of Tofu depends on weather: you can sell 100 Tofu on a fine day, 50 on a cloudy day, and 10 on a rainy day.
##Watch weather forecast and determine the quantity of Tofu you are going to make.class Iscandar
COST = 10
PRICE = 12
RATE = {
fine: 100,
cloudy: 50,
rainy: 10
}
RED = "\e[31m"
GRN = "\e[32m"
SO = "\e[m"(以下略)
以下は、提供されたRubyプログラムをJava言語に変換したものです。ただし、Javaの出力はターミナルではなくコンソール上に表示されるため、一部の出力部分には調整が必要です。
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;public class Iscandar {
private static final int COST = 10;
private static final int PRICE = 12;
private static final Map<String, Integer> RATE = new HashMap<String, Integer>() {{
put("fine", 100);
put("cloudy", 50);
put("rainy", 10);
}};
private static final String RED = "\u001B[31m";
private static final String GRN = "\u001B[32m";
private static final String SO = "\u001B[m";private Map<String, Integer> forecast;
private int total;public Iscandar() {
forecast = new HashMap<>();
total = 1000;showComment();
}private void showComment() {
String filename = Iscandar.class.getSimpleName() + ".java";
// コメント行のみを抽出して表示することで対応します
// 必要に応じてファイルの読み込みを行ってください
System.out.println("##イスカンダルのトーフ屋ゲーム## (外部仕様より再現)");
System.out.println("##Reference: http://vivi.dyndns.org/tofu/tofu.html");
System.out.println("##背景: あなたはイスカンダル星で遭難し、帰りの費用を稼ぐためにトーフをなるべくたくさん売ってお金を稼がなければならない。");
System.out.println("##最初に所持金1000円が与えられる。");
System.out.println("##30000円儲けることができれば、めでたくイスカンダルから脱出することができる。");
System.out.println("##トーフは製造に一個あたり10円かかり、一個あたり12円で売ることができる。");
System.out.println("##トーフは晴れの日は100個、曇りの日は50個、雨の日は10個売れる。");
System.out.println("##売れなかった分は損失となる。");
System.out.println("##あなたは天気予報を見て、明日いくつのトーフを製造するかを決めねばならない。");
System.out.println();
}private Map<String, Integer> calcProbab() {
Map<String, Integer> probab = new HashMap<>();
Random random = new Random();
probab.put("fine", random.nextInt(100));
probab.put("cloudy", random.nextInt(100 - probab.get("fine")));
probab.put("rainy", 100(ChatGPT)
例によって途中で切れています。そこで、いつものように続きを表示させて、すべて表示されたと思われるソースコードをEclipseに貼り付けました。エラーは出なかったものの実行させると、思ったような動きにはならずゲームルール的に滅茶苦茶な動作をしたのです。