たとえば,ダーツマシンのPHOENIXのカウントアップの平均値からレーティングを求めてみたら。
2008/06/29
2008/07/01
java
ダーツ
最近、ダーツにはまっています。うまくなりたいのですが、なかなか上達しません。
僕がプレイしているダーツマシンはフェニックスというマシンです。
ダーツの上達具合でいろいろとクラス分けされています。
カウントアップというゲームで、平均のスコアからPPD(points per
どうでしょ、あたってますかね。もちろん、目安としてね。
ave:100 RATING:1 CLASS:C1 PPD:4.167
ave:288 RATING:2 CLASS:C2 PPD:12.000
ave:336 RATING:3 CLASS:CC3 PPD:14.000
ave:384 RATING:4 CLASS:CC4 PPD:16.000
ave:432 RATING:5 CLASS:B5 PPD:18.000
ave:480 RATING:6 CLASS:B6 PPD:20.000
ave:528 RATING:7 CLASS:BB7 PPD:22.000
ave:576 RATING:8 CLASS:BB8 PPD:24.000
ave:624 RATING:9 CLASS:A9 PPD:26.000
ave:672 RATING:10 CLASS:A10 PPD:28.000
ave:720 RATING:11 CLASS:AA11 PPD:30.000
ave:768 RATING:12 CLASS:AA12 PPD:32.000
ave:816 RATING:13 CLASS:AA13 PPD:34.000
ave:864 RATING:14 CLASS:AA14 PPD:36.000
ave:912 RATING:15 CLASS:AAA15 PPD:38.000
ave:960 RATING:16 CLASS:AAA16 PPD:40.000
Bフライトになるためには、大体カウントアップで平均が、432点ないといけないようです。
つぎにAフライトになるためには、平均624点
※もちろん実際のクラス分けは、カウントアップでなされるわけではないです。
以下、プログラム
package d;
import java.util.TreeMap;
public class TestDarts1 {
static class CLASS {
final static String[] CLASS = { "C", "C", "CC", "CC", "B", "B", "BB",
"BB", "A", "A", "AA", "AA", "AA", "AA", "AAA", "AAA" };
protected int R;
protected double ppd;
protected String s;
static CLASS CREATE(double ppd) {
CLASS class1 = new CLASS();
int base = 10;
class1.ppd = ppd;
ppd -= base;
if (ppd < 0) {
class1.R = 1;
class1.s = CLASS[0];
return class1;
}
int p = (int) (ppd / 2);
if (16 <= p) {
class1.R = 16;
class1.s = CLASS[15];
return class1;
}
class1.R = p + 1;
class1.s = CLASS[p];
return class1;
}
private CLASS() {
}
public int getRATING() {
return R;
}
public String getCLASS() {
return s + R;
}
public String toString() {
return String.format("RATING:%d CLASS:%s PPD:%.3f", R, getCLASS(),
ppd);
}
}
public static void main(String[] args) {
a();
}
static void a() {
TreeMap<Integer, CLASS> hashMap = new TreeMap<Integer, CLASS>();
double darts = 8 * 3;
final int ave = 100;
for (int i = ave; i < ave + 1000; i++) {
double ppd = i / darts;
CLASS class1 = CLASS.CREATE(ppd);
if (!hashMap.containsKey(class1.getRATING())) {
hashMap.put(class1.getRATING(), class1);
System.out.println("ave:" + i + " " + class1);
}
}
}
}
import java.util.TreeMap;
public class TestDarts1 {
static class CLASS {
final static String[] CLASS = { "C", "C", "CC", "CC", "B", "B", "BB",
"BB", "A", "A", "AA", "AA", "AA", "AA", "AAA", "AAA" };
protected int R;
protected double ppd;
protected String s;
static CLASS CREATE(double ppd) {
CLASS class1 = new CLASS();
int base = 10;
class1.ppd = ppd;
ppd -= base;
if (ppd < 0) {
class1.R = 1;
class1.s = CLASS[0];
return class1;
}
int p = (int) (ppd / 2);
if (16 <= p) {
class1.R = 16;
class1.s = CLASS[15];
return class1;
}
class1.R = p + 1;
class1.s = CLASS[p];
return class1;
}
private CLASS() {
}
public int getRATING() {
return R;
}
public String getCLASS() {
return s + R;
}
public String toString() {
return String.format("RATING:%d CLASS:%s PPD:%.3f", R, getCLASS(),
ppd);
}
}
public static void main(String[] args) {
a();
}
static void a() {
TreeMap<Integer, CLASS> hashMap = new TreeMap<Integer, CLASS>();
double darts = 8 * 3;
final int ave = 100;
for (int i = ave; i < ave + 1000; i++) {
double ppd = i / darts;
CLASS class1 = CLASS.CREATE(ppd);
if (!hashMap.containsKey(class1.getRATING())) {
hashMap.put(class1.getRATING(), class1);
System.out.println("ave:" + i + " " + class1);
}
}
}
}
: