前提
ここに質問の内容を詳しく書いてください。
0x2f,0x3aの意味を知りたい
実現したいこと
ここに実現したいことを箇条書きで書いてください。
if (0x2f<ch && ch<0x3a) break;
if(0x40<ch && ch<0x5b) break;
if(0x60<ch && ch<0x7b) break; の意味を知りたい
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
JavaFX
1import java.awt.Toolkit; 2import java.nio.file.Paths; 3import java.time.Instant; 4import java.util.Random; 5 6import javafx.application.Application; 7import javafx.application.Platform; 8import javafx.geometry.Pos; 9import javafx.scene.Scene; 10import javafx.scene.canvas.Canvas; 11import javafx.scene.canvas.GraphicsContext; 12import javafx.scene.control.Alert; 13import javafx.scene.control.Alert.AlertType; 14import javafx.scene.control.Label; 15import javafx.scene.control.Menu; 16import javafx.scene.control.MenuBar; 17import javafx.scene.control.MenuItem; 18import javafx.scene.image.Image; 19import javafx.scene.input.KeyCode; 20import javafx.scene.input.KeyEvent; 21import javafx.scene.layout.BorderPane; 22import javafx.scene.layout.VBox; 23import javafx.scene.text.Font; 24import javafx.stage.Stage; 25import javafx.stage.StageStyle; 26 27public class TypeTrainer extends Application{ 28 29 Label aLabel = new Label("タイプ:"); 30 Label qLabel = new Label("問題:"); 31 Random rnd = null; 32 boolean fInPlay = false; 33 int point = 0; 34 int count = 0; 35 String qKey = ""; 36 String aKey = ""; 37 Instant expTime = null; 38 final int DURATION = 60; 39 40 @Override 41 public void start(Stage stage) throws Exception { 42 43 stage.setTitle("TypeTrainer"); 44 stage.initStyle(StageStyle.UTILITY); 45 stage.centerOnScreen(); 46 stage.setResizable(false); 47 48 rnd = new Random(Instant.now().getNano()); 49 50 MenuBar menuBar = new MenuBar(); 51 menuBar.setUseSystemMenuBar(true); 52 Menu fileMenu = new Menu("ファイル"); 53 MenuItem mnuStart = new MenuItem("スタート"); 54 mnuStart.setOnAction(event -> { 55 fInPlay = true; 56 expTime = Instant.now().plusSeconds(DURATION); 57 newQKey(); 58 59 }); 60 61 menuBar.getMenus().add(fileMenu); 62 MenuItem mnuExit = new MenuItem("終了"); 63 64 mnuExit.setOnAction(event->Platform.exit()); 65 66 fileMenu.getItems().addAll(mnuStart, mnuExit); 67 68 BorderPane root = new BorderPane(); 69 VBox center = new VBox(); 70 center.setSpacing(10); 71 qLabel.setFont(new Font(24)); 72 aLabel.setFont(new Font(24)); 73 aLabel.setFocusTraversable(false); 74 75 final Canvas canvas = new Canvas(); 76 Image img = new Image(Paths.get("KeyBoard.png").toUri().toString()); 77 canvas.setWidth(img.getWidth()); 78 canvas.setHeight(img.getHeight()); 79 GraphicsContext gc = canvas.getGraphicsContext2D(); 80 gc.drawImage(img, 0,0); 81 82 canvas.setOnKeyTyped(event-> keyTyped(event)); 83 canvas.setFocusTraversable(true); 84 center.setAlignment(Pos.CENTER); 85 center.getChildren().addAll(qLabel, canvas,aLabel); 86 root.setTop(menuBar); 87 root.setCenter(center); 88 89 stage.setScene(new Scene(root, 240, 195)); 90 stage.show(); 91 } 92 93 void keyTyped(KeyEvent event) 94 { 95 if(fInPlay == false) 96 return; 97 98 boolean fGood = true; 99 100 if(event.getCode() == KeyCode.ENTER) fGood = false; 101 if(event.getCode() == KeyCode.BACK_SPACE) fGood = false; 102 if(event.getCode() == KeyCode.DELETE) fGood = false; 103 if(event.getCode() == KeyCode.CLEAR) fGood = false; 104 if(fGood == false) { 105 Toolkit.getDefaultToolkit().beep(); 106 return; 107 } 108 109 110 aKey = event.getCharacter(); 111 aLabel.setText("タイプ:" + aKey); 112 if(aKey.equals(qKey)) 113 point += 1; 114 else 115 Toolkit.getDefaultToolkit().beep(); 116 if(Instant.now().isAfter(expTime)) 117 { 118 gameOver(); 119 return; 120 } 121 newQKey(); 122 } 123 124 void newQKey() 125 { 126 int ch = 0; 127 while(true) { 128 ch = rnd.nextInt(0x7a); 129 if (0x2f<ch && ch<0x3a) break; 130 if(0x40<ch && ch<0x5b) break; 131 if(0x60<ch && ch<0x7b) break; 132 133 } 134 if(Instant.now().isAfter(expTime)) 135 gameOver(); 136 137 qKey = String.valueOf((char)ch); 138 qLabel.setText("問題:" + qKey); 139 count += 1; 140 } 141 142 void gameOver() 143 { 144 fInPlay = false; 145 Alert dlg = new Alert(AlertType.INFORMATION); 146 dlg.setTitle("ゲームオーバー"); 147 dlg.setHeaderText(String.format("ゲームオーバー : 得点=%d / 回数=%d", point, count)); 148 149 dlg.showAndWait(); 150 } 151 public static void main(String[] args) { 152 launch(args); 153 154 } 155 156}
試したこと
0x2f 意味 と検索した
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/12/25 10:48