@@ -7,6 +7,7 @@ var Font = java.awt.Font;
77
88var KeyAdapter = java . awt . event . KeyAdapter ;
99var KeyEvent = java . awt . event . KeyEvent ;
10+ var WindowAdapter = java . awt . event . WindowAdapter ;
1011
1112var BufferedImage = java . awt . image . BufferedImage ;
1213
@@ -27,9 +28,9 @@ var JFrame = javax.swing.JFrame;
2728var JPanel = javax . swing . JPanel ;
2829
2930// implemented on use
30- var MyPanel = Java . extend ( JPanel , Runnable ) ;
31-
3231var MyKeyListener = Java . extend ( KeyAdapter ) ;
32+ var MyPanel = Java . extend ( JPanel , Runnable ) ;
33+ var MyWindowListener = Java . extend ( WindowAdapter ) ;
3334
3435// class definitions end here
3536
@@ -94,6 +95,15 @@ if (!highscore_file.exists()) {
9495 reader . close ( ) ;
9596}
9697
98+ function checkHighscore ( ) {
99+ if ( old_highscore == highscore )
100+ return ;
101+ var writer = new FileWriter ( highscore_file ) ;
102+ writer . write ( Integer . toString ( highscore ) ) ;
103+ writer . close ( ) ;
104+ old_highscore = highscore ;
105+ }
106+
97107function init ( ) {
98108 y = 0.5 ;
99109
@@ -118,11 +128,8 @@ init();
118128
119129// delta - elapsed milliseconds since last update call
120130function update ( delta ) {
121- if ( gameover && old_highscore != highscore ) {
122- var writer = new FileWriter ( highscore_file ) ;
123- writer . write ( Integer . toString ( highscore ) ) ;
124- writer . close ( ) ;
125- old_highscore = highscore ;
131+ if ( gameover ) {
132+ checkHighscore ( ) ;
126133 }
127134
128135 y += speed . y ;
@@ -247,21 +254,34 @@ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
247254frame . setTitle ( "Hello World!" ) ;
248255
249256// class is implemented here bcs i did it with the panel class, too
250- var listener = new MyKeyListener ( {
257+ var keyListener = new MyKeyListener ( {
251258 keyPressed : function ( e ) {
252259 if ( e . getKeyCode ( ) == KeyEvent . VK_ESCAPE ) {
260+ checkHighscore ( ) ;
253261 System . exit ( 0 ) ;
254262 } else if ( e . getKeyCode ( ) == KeyEvent . VK_SPACE ) {
255263 if ( ! gameover ) {
256264 speed . y = - 1 / 1000 ;
257265 }
258266 } else if ( e . getKeyCode ( ) == KeyEvent . VK_R ) {
267+ checkHighscore ( ) ;
259268 init ( ) ;
260269 }
261270 }
262271} ) ;
263272
264- frame . addKeyListener ( listener ) ;
273+ frame . addKeyListener ( keyListener ) ;
274+
275+ var windowListener = new MyWindowListener ( {
276+ windowClosed : function ( e ) {
277+ checkHighscore ( ) ;
278+ } ,
279+ windowClosing : function ( e ) {
280+ checkHighscore ( ) ;
281+ }
282+ } ) ;
283+
284+ frame . addWindowListener ( windowListener ) ;
265285
266286// class is implemented here bcs idk how else to do Java.super()
267287var panel = new MyPanel ( {
0 commit comments