Coding_Gamesメモ_Darts

Coding_Gamesメモ_Darts

javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:

System.err.println( );

を使うとデバックしやすくなる。(エラー出力は評価に影響しない)

内容

当たり判定

ルール

正方形の的があり、その中に直径が正方形の1辺と同じ円がある、その中に対角線が円の直径と同じひし形がある
それぞれの得点は、正方形5点、円10点、ひし形15点
f:id:tiridukano_yagigame:20200916223828p:plain
座標からプレイヤー毎の得点を計算して出力する

  • 的の中心の座標は0,0
  • 正方形の的のXの範囲は-X(SIZE/2)~X(SIZE/2)
  • 的の境界線の座標は的内として処理する

インプット

1行目 的のサイズ (SIZE)
2行目 プレイヤーの人数 (N)
2行目からN行 プレイヤー名 (name)
次の行 処理する座標数 (T)
次のT行 $(プレイヤー名) $(X座標) $(Y座標)

アウトプット

プレイヤー名と得点を得点が高い順に出力
得点が同じならリスト順に出力

使用したクラス

String

(boolean) = String.equals(x); (String == x) String は == では判定できないので代わりに使用する。

Math

x = Math.abs(y)
y の絶対値x を出力

(double) = Math.pow((double) a , (double) b)
ab a のb 乗

(double) = Math.sqrt( (double) x )
xの平方根を出力する

考え方

3種類の当たり判定について考える
的の中心の座標が0,0 なので

  • 正方形 X,Y の絶対値がSIZE/2 以下だと範囲内
  • 円 sqrt(X2 +Y2) がSIZE/2 以下だと範囲内
  • ひし形 X,Y の絶対値の合計がSIZE/2 以下だと範囲内

で判定できる

Coding_Games:https://www.codingame.com/
String (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html
Math (Java Platform SE 8) - Oracle Cloud:http://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html