前提
ここに質問の内容を詳しく書いてください。
(例)
コードを摸写中エラーが発生しました
実現したいこと
ここに実現したいことを箇条書きで書いてください。
エラーを解決したい
発生している問題・エラーメッセージ
構文エラーがあります。";" を挿入して MethodDeclaration を完了してください - 構文エラーがあります。"}" を挿入して ClassBody を完了してください - 構文エラーがあります。">" を挿入して ReferenceType1 を完了してください - 構文エラーがあります。")" を挿入して MethodDeclaration を完了してください - 構文エラーがあります。"... VariableDeclaratorId" を挿入して FormalParameter を完了し てください
該当のソースコード
Java
1import java.awt.Toolkit; 2import java.util.Timer; 3import java.util.TimerTask; 4 5import javafx.application.Application; 6import javafx.application.Platform; 7import javafx.beans.property.BooleanProperty; 8import javafx.beans.property.ReadOnlyBooleanProperty; 9import javafx.beans.property.SimpleBooleanProperty; 10import javafx.beans.value.ChangeListener; 11import javafx.beans.value.ObservableValue; 12import javafx.scene.Group; 13import javafx.scene.Scene; 14import javafx.scene.canvas.Canvas; 15import javafx.scene.canvas.GraphicsContext; 16import javafx.scene.control.Alert; 17import javafx.scene.control.Alert.AlertType; 18import javafx.scene.input.KeyCode; 19import javafx.scene.input.KeyEvent; 20import javafx.stage.Stage; 21import javafx.stage.StageStyle; 22public class Runner extends Application{ 23 24 final int WIDTH = 280; 25 final int HEIGHT = 241; 26 int ClientWidth = WIDTH; 27 int ClientHeight = HEIGHT; 28 29 int cx = 0; 30 int cy = 0; 31 32 int dx = 2; 33 int dy = 0; 34 boolean data[][] = new boolean[WIDTH][HEIGHT]; 35 int point = 0; 36 Alert dlg = new Alert(AlertType.INFORMATION); 37 38 @Override 39 public void start(Stage stage) throws Exception { 40 41 stage.setTitle("Runner"); 42 stage.setWidth(WIDTH); 43 stage.setHeight(HEIGHT); 44 stage.initStyle(StageStyle.UTILITY); 45 stage.centerOnScreen(); 46 stage.setResizable(false); 47 48 Group root = new Group(); 49 50 final Canvas canvas = new Canvas(WIDTH, HEIGHT); 51 GraphicsContext gc = canvas.getGraphicsContext2D(); 52 53 canvas.setOnKeyPressed(event -> onKeyPressed(event)); 54 canvas.setFocusTraversable(true); 55 56 root.getChildren().add(canvas); 57 58 stage.setScene(new Scene(root)); 59 stage.show(); 60 61 ClientHeight = (int) stage.getScene().getHeight(); 62 ClientWidth = (int) stage.getScene().getWidth(); 63 64 cx = ClientWidth / 2; 65 cy = ClientHeight / 2; 66 67 Timer timer = new Timer(); 68 69 class GameTask extends TimerTask { 70 71 private BooleanProperty gameover = new SimpleBooleanProperty(this, "gameover", false); 72 73 public ReadOnlyBooleanProperty gameoverProperty() { 74 return gameover; 75 } 76 @SupressWarnings("unused") 77 public boolean isGameOver() { 78 return gameover.get(); 79 80 } 81 private void setGameover(boolean value) { 82 gameover.set(value); 83 } 84 85 @Override 86 public void run() { 87 cx += dx; 88 cy += dy; 89 gc.fillRect(cx, cy,2,2); 90 point += 1; 91 if(isTheGameOver()) { 92 Toolkit.getDefaultToolkit().beep(); 93 Platform.runLater(new Runnable() { 94 @Override 95 public void run() { 96 setGameover(true); 97 } 98 }); 99 this.cancel(); 100 } 101 data[cx][cy] = true; 102 } 103 boolean isTheGameOver() { 104 if(cx < 0) return true; 105 if(cy < 0) return true; 106 if(cx > ClientWidth) return true; 107 if(cy > ClientHeight-2) return true; 108 if(data[cx][cy] == true) return true; 109 return false; 110 } 111 } 112 GameTask task = new GameTask(); 113 stage.setOnClosedRequest(event -> { 114 if (task != null) 115 task.cancel(); 116 if(timer != null) 117 timer.cancel(); 118 }); 119 120 timer.schedule(task, 1000, 100); 121 122 Toolkit.getDefaultToolkit().beep(); 123 124 task.gameoverProperty().addListener(new ChangeListener<Boolean>() { 125 @Override 126 public void changed(ObservableValue<? extends Boolean> arg(), 127 Boolean arg1, Boolean arg2){ 128 if (task.gameoverProperty().get()) 129 gameOver(); 130 } 131 }); 132 } 133 134 void onKeyPressed(KeyEvent event) 135 { 136 if (event.getCode() == KeyCode.UP) {dx = 0; dy = -2;} 137 if(event.getCode() == KeyCode.DOWN) {dx = 0; dy =2;} 138 if(event.getCode() == KeyCode.RIGHT) { dx = 2;dy=0;} 139 if(event.getCode() == KeyCode.LEFT) {dx =- 2; dy = 0;} 140 141 } 142 143 void gameOver() 144 { 145 dlg.setTitle("ゲームオーバー"); 146 dlg.setHeaderText(String.format("ゲームオーバー : 得点=%d", point)); 147 dlg.showAndWait(); 148 Platform.exit(); 149 } 150 public static void main(String[] args) { 151 launch(args); 152 153 } 154 155} 156
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
エラーメッセージをいっさい省略せず質問文に入れてください。とくにエラーが発生した行番号がないと回答が面倒です。
> コードを摸写中エラーが発生しました
[CUTT System:ゲーム作りで学ぶJavaFX & Java 8プログラミング](https://www.cutt.co.jp/book/978-4-87783-388-6.html)
こちらですかね?(出典は質問に明示してください)
