@@ -7,6 +7,7 @@ var Font = java.awt.Font;
7
7
8
8
var KeyAdapter = java . awt . event . KeyAdapter ;
9
9
var KeyEvent = java . awt . event . KeyEvent ;
10
+ var WindowAdapter = java . awt . event . WindowAdapter ;
10
11
11
12
var BufferedImage = java . awt . image . BufferedImage ;
12
13
@@ -27,9 +28,9 @@ var JFrame = javax.swing.JFrame;
27
28
var JPanel = javax . swing . JPanel ;
28
29
29
30
// implemented on use
30
- var MyPanel = Java . extend ( JPanel , Runnable ) ;
31
-
32
31
var MyKeyListener = Java . extend ( KeyAdapter ) ;
32
+ var MyPanel = Java . extend ( JPanel , Runnable ) ;
33
+ var MyWindowListener = Java . extend ( WindowAdapter ) ;
33
34
34
35
// class definitions end here
35
36
@@ -94,6 +95,15 @@ if (!highscore_file.exists()) {
94
95
reader . close ( ) ;
95
96
}
96
97
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
+
97
107
function init ( ) {
98
108
y = 0.5 ;
99
109
@@ -118,11 +128,8 @@ init();
118
128
119
129
// delta - elapsed milliseconds since last update call
120
130
function 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 ( ) ;
126
133
}
127
134
128
135
y += speed . y ;
@@ -247,21 +254,34 @@ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
247
254
frame . setTitle ( "Hello World!" ) ;
248
255
249
256
// class is implemented here bcs i did it with the panel class, too
250
- var listener = new MyKeyListener ( {
257
+ var keyListener = new MyKeyListener ( {
251
258
keyPressed : function ( e ) {
252
259
if ( e . getKeyCode ( ) == KeyEvent . VK_ESCAPE ) {
260
+ checkHighscore ( ) ;
253
261
System . exit ( 0 ) ;
254
262
} else if ( e . getKeyCode ( ) == KeyEvent . VK_SPACE ) {
255
263
if ( ! gameover ) {
256
264
speed . y = - 1 / 1000 ;
257
265
}
258
266
} else if ( e . getKeyCode ( ) == KeyEvent . VK_R ) {
267
+ checkHighscore ( ) ;
259
268
init ( ) ;
260
269
}
261
270
}
262
271
} ) ;
263
272
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 ) ;
265
285
266
286
// class is implemented here bcs idk how else to do Java.super()
267
287
var panel = new MyPanel ( {
0 commit comments