この記事はJavaとPythonを基礎から学びたい私のための Advent Calendar 2024の11日目の記事です。
まだ勉強していない部分を勉強しながら作ります。
ゲームを作る(3日間くらいで)
学習した知識を生かして何か作ることにしました。とりあえず、Hit&Blowと呼ばれている、数当てゲームを作ってみたいと思います。
ルールは非常にシンプルで、相手がランダムに決めた数を当てルームです。数字が正しく、また数字の場所(位)も正しければHit、数字は正しいが場所(位)が間違っている場合はBlowとなり、その数が表示されます。すべての正しい場所(位)に正しい数字がそろうまでの速さを競うやつです。
数字の入力を受け付ける
Scannerを使います。
Javaで文字を入力するためには、
import java.util.Scanner;
Scanner scanner=new java.util.Scanner(System.in);
String A=scanner.nextLine();
scanner.close();
一行で書く場合は、こうなります
文字の入力
String A=new java.util.Scanner(System.in).nextLine()
数字の入力
int A=new java.util.Scanner(System.in).nextInt()
とするようです。
古いjavaだと上のように最後にscanner close()が必要そうです。
こういった注意書きが出ても、一応動きます。が、closeを使っておいた方がよさそうです。
また、新しいjavaではcloseは不要のようです。自分の環境に合わせて、必要なら書くといいと思います。
int型で数字の入力を受け付ける場合は文字を入力することができてしまい、文字を入力するとエラーが出て止まってしまいます。これを回避するためには、以下のようにすればよいそうです。以下は、エラーを出さない全文を記載しています。
import java.util.Scanner;
public class TEST {
public static void main(String[] args) {
System.out.println("Number");
Scanner scanner=new java.util.Scanner(System.in);
String A=scanner.nextLine();
scanner.close();
boolean C=B(A);
if(C==true)
{
System.out.println(A);
}
else{
System.out.println("SUUJI!");
}
}
public static Boolean B(String O){
for(int i=0;i<O.length();i++){
if(Character.isDigit(O.charAt(i))){
continue;
}
return false;
}
return true;
}
}
解説
boolean C=B(A);
public static Boolean B(String O){
for(int i=0;i<O.length();i++){
if(Character.isDigit(O.charAt(i))){
continue;
}
return false;
}
return true;
}
いったん全文をString型で受け取り→一文字ずつchar型にして判定の流れです。
booleanを使って、数字だけかどうかの真偽を判定しています。
文字が含まれている場合はfalseを、そうでない場合はtrueを返します。文字をchar型に変換して、一文字ずつ判定を行っています。
最初のboolean C=B(A);について、イコールの右辺は「戻り値」というそうです。その下に書かれたpublicでstaticなbooleanに()の文字を送り、処理結果を最初の行のbooleanなCに返してくれるそうです。()の文字を送る引数は複数送ることはできるようですが、そのあと帰ってくる「戻り値」は一つしか設定できないようです。
ちなみにreturnが使われると、そこでメゾットが終了するようです。returnの後に文を書いてもエラーが出るそうです。
char型のisDigit
char型にはisDigitなるものがあるそうです。これを使うと、charの中身が数字か文字かを判断してくれます。作ろうとしている機能にぴったりです。
まとめ
文字を入力するための方法にはscannerを使う方法がある。int型で数字、String型で文字の入力が可能。入力では数字を受け付けるところで文字も受け取れてしまうため、isDigitを使い判定を行うのがよい。
今日は文字の入力を受け付ける勉強をしているため、文字を入力⇒数字なら入力された数字をそのまま出力の流れです。
ゲームの中の、一部の機能を実装することができました。
参考文献
株式会社インプレス,スッキリわかるJava入門 第4版