Subversion Repositories sokoban

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 daniel-mar 1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
<!--NewPage-->
3
<HTML>
4
<HEAD>
5
<!-- Generated by javadoc (build 1.6.0-rc) on Sat Jan 24 19:46:57 CET 2009 -->
6
<TITLE>
7
SokobanTest
8
</TITLE>
9
 
10
<META NAME="date" CONTENT="2009-01-24">
11
 
12
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
13
 
14
<SCRIPT type="text/javascript">
15
function windowTitle()
16
{
17
    if (location.href.indexOf('is-external=true') == -1) {
18
        parent.document.title="SokobanTest";
19
    }
20
}
21
</SCRIPT>
22
<NOSCRIPT>
23
</NOSCRIPT>
24
 
25
</HEAD>
26
 
27
<BODY BGCOLOR="white" onload="windowTitle();">
28
<HR>
29
 
30
 
31
<!-- ========= START OF TOP NAVBAR ======= -->
32
<A NAME="navbar_top"><!-- --></A>
33
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
34
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
35
<TR>
36
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
37
<A NAME="navbar_top_firstrow"><!-- --></A>
38
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
39
  <TR ALIGN="center" VALIGN="top">
40
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
41
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
42
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
43
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
44
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
45
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
46
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
47
  </TR>
48
</TABLE>
49
</TD>
50
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
51
</EM>
52
</TD>
53
</TR>
54
 
55
<TR>
56
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
57
&nbsp;PREV CLASS&nbsp;
58
&nbsp;<A HREF="../../../gdi/ws0809/test/SokobanTestAdapter.html" title="class in gdi.ws0809.test"><B>NEXT CLASS</B></A></FONT></TD>
59
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
60
  <A HREF="../../../index.html?gdi/ws0809/test/SokobanTest.html" target="_top"><B>FRAMES</B></A>  &nbsp;
61
&nbsp;<A HREF="SokobanTest.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
62
&nbsp;<SCRIPT type="text/javascript">
63
  <!--
64
  if(window==top) {
65
    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
66
  }
67
  //-->
68
</SCRIPT>
69
<NOSCRIPT>
70
  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
71
</NOSCRIPT>
72
 
73
 
74
</FONT></TD>
75
</TR>
76
<TR>
77
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
78
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
79
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
80
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
81
</TR>
82
</TABLE>
83
<A NAME="skip-navbar_top"></A>
84
<!-- ========= END OF TOP NAVBAR ========= -->
85
 
86
<HR>
87
<!-- ======== START OF CLASS DATA ======== -->
88
<H2>
89
<FONT SIZE="-1">
90
gdi.ws0809.test</FONT>
91
<BR>
92
Interface SokobanTest</H2>
93
<DL>
94
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../gdi/ws0809/test/SokobanTestAdapter.html" title="class in gdi.ws0809.test">SokobanTestAdapter</A></DD>
95
</DL>
96
<HR>
97
<DL>
98
<DT><PRE>public interface <B>SokobanTest</B></DL>
99
</PRE>
100
 
101
<P>
102
All public unit tests access your implementation using methods of this interface exclusively.
103
 You have to provide an implementation of SokobanTestAdapter to map the methods of this interface
104
 to you implementation.
105
<P>
106
 
107
<P>
108
<DL>
109
<DT><B>Author:</B></DT>
110
  <DD>daniel, Steven Arzt</DD>
111
</DL>
112
<HR>
113
 
114
<P>
115
 
116
<!-- ========== METHOD SUMMARY =========== -->
117
 
118
<A NAME="method_summary"><!-- --></A>
119
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
120
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
121
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
122
<B>Method Summary</B></FONT></TH>
123
</TR>
124
<TR BGCOLOR="white" CLASS="TableRowColor">
125
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
126
<CODE>&nbsp;boolean</CODE></FONT></TD>
127
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#canMoveCrate(int, int, char)">canMoveCrate</A></B>(int&nbsp;i,
128
             int&nbsp;j,
129
             char&nbsp;c)</CODE>
130
 
131
<BR>
132
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks whether the crate at position (x, y) can be moved in direction c</TD>
133
</TR>
134
<TR BGCOLOR="white" CLASS="TableRowColor">
135
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
136
<CODE>&nbsp;void</CODE></FONT></TD>
137
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#clearHighscoreList()">clearHighscoreList</A></B>()</CODE>
138
 
139
<BR>
140
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clears the highscore list.</TD>
141
</TR>
142
<TR BGCOLOR="white" CLASS="TableRowColor">
143
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
144
<CODE>&nbsp;boolean</CODE></FONT></TD>
145
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#createHighscoreEntry(java.lang.String, int, int, int)">createHighscoreEntry</A></B>(java.lang.String&nbsp;playername,
146
                     int&nbsp;i,
147
                     int&nbsp;j,
148
                     int&nbsp;k)</CODE>
149
 
150
<BR>
151
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new entry in the highscore list if the given data describes a
152
 new highscore entry.</TD>
153
</TR>
154
<TR BGCOLOR="white" CLASS="TableRowColor">
155
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
156
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
157
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#currentLevelToString()">currentLevelToString</A></B>()</CODE>
158
 
159
<BR>
160
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the String representation of the <i>current</i> level.</TD>
161
</TR>
162
<TR BGCOLOR="white" CLASS="TableRowColor">
163
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
164
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
165
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#getBestPlayerName()">getBestPlayerName</A></B>()</CODE>
166
 
167
<BR>
168
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the name of the best player (the one with with the least moves)
169
 over all levels.</TD>
170
</TR>
171
<TR BGCOLOR="white" CLASS="TableRowColor">
172
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
173
<CODE>&nbsp;int</CODE></FONT></TD>
174
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#getCrateCount()">getCrateCount</A></B>()</CODE>
175
 
176
<BR>
177
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the total number of crates in the current levels</TD>
178
</TR>
179
<TR BGCOLOR="white" CLASS="TableRowColor">
180
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
181
<CODE>&nbsp;int</CODE></FONT></TD>
182
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#getGoalCount()">getGoalCount</A></B>()</CODE>
183
 
184
<BR>
185
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the total number of goals in the current levels</TD>
186
</TR>
187
<TR BGCOLOR="white" CLASS="TableRowColor">
188
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
189
<CODE>&nbsp;int</CODE></FONT></TD>
190
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#getHighscoreCount()">getHighscoreCount</A></B>()</CODE>
191
 
192
<BR>
193
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the count of entries in the highscore list</TD>
194
</TR>
195
<TR BGCOLOR="white" CLASS="TableRowColor">
196
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
197
<CODE>&nbsp;int</CODE></FONT></TD>
198
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#getLevelHeight()">getLevelHeight</A></B>()</CODE>
199
 
200
<BR>
201
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the current level's height</TD>
202
</TR>
203
<TR BGCOLOR="white" CLASS="TableRowColor">
204
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
205
<CODE>&nbsp;int</CODE></FONT></TD>
206
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#getLevelWidth()">getLevelWidth</A></B>()</CODE>
207
 
208
<BR>
209
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the current level's width</TD>
210
</TR>
211
<TR BGCOLOR="white" CLASS="TableRowColor">
212
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
213
<CODE>&nbsp;int</CODE></FONT></TD>
214
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#getStepsInCurrentLevel()">getStepsInCurrentLevel</A></B>()</CODE>
215
 
216
<BR>
217
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the steps performed in the <i>current</i> level, since
218
 the last restart of the level.</TD>
219
</TR>
220
<TR BGCOLOR="white" CLASS="TableRowColor">
221
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
222
<CODE>&nbsp;int</CODE></FONT></TD>
223
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#getWallCount()">getWallCount</A></B>()</CODE>
224
 
225
<BR>
226
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the total number of walls in the current levels</TD>
227
</TR>
228
<TR BGCOLOR="white" CLASS="TableRowColor">
229
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
230
<CODE>&nbsp;int</CODE></FONT></TD>
231
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#getWorkerPositionX()">getWorkerPositionX</A></B>()</CODE>
232
 
233
<BR>
234
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the Y coordinate of the worker's current position</TD>
235
</TR>
236
<TR BGCOLOR="white" CLASS="TableRowColor">
237
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
238
<CODE>&nbsp;int</CODE></FONT></TD>
239
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#getWorkerPositionY()">getWorkerPositionY</A></B>()</CODE>
240
 
241
<BR>
242
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the X coordinate of the worker's current position</TD>
243
</TR>
244
<TR BGCOLOR="white" CLASS="TableRowColor">
245
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
246
<CODE>&nbsp;boolean</CODE></FONT></TD>
247
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#isCrateAt(int, int)">isCrateAt</A></B>(int&nbsp;i,
248
          int&nbsp;j)</CODE>
249
 
250
<BR>
251
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets whether there is a crate at the position identified by the specified
252
 X and Y coordinate</TD>
253
</TR>
254
<TR BGCOLOR="white" CLASS="TableRowColor">
255
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
256
<CODE>&nbsp;boolean</CODE></FONT></TD>
257
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#isDeadlock()">isDeadlock</A></B>()</CODE>
258
 
259
<BR>
260
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether the current level is in a deadlock position.</TD>
261
</TR>
262
<TR BGCOLOR="white" CLASS="TableRowColor">
263
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
264
<CODE>&nbsp;boolean</CODE></FONT></TD>
265
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#isGoalAt(int, int)">isGoalAt</A></B>(int&nbsp;i,
266
         int&nbsp;j)</CODE>
267
 
268
<BR>
269
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets whether there is a goal at the position identified by the specified
270
 X and Y coordinate</TD>
271
</TR>
272
<TR BGCOLOR="white" CLASS="TableRowColor">
273
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
274
<CODE>&nbsp;boolean</CODE></FONT></TD>
275
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#isSolved()">isSolved</A></B>()</CODE>
276
 
277
<BR>
278
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether the <i>current</i> level is solved.</TD>
279
</TR>
280
<TR BGCOLOR="white" CLASS="TableRowColor">
281
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
282
<CODE>&nbsp;boolean</CODE></FONT></TD>
283
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#isWallAt(int, int)">isWallAt</A></B>(int&nbsp;i,
284
         int&nbsp;j)</CODE>
285
 
286
<BR>
287
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets whether there is a wall at the position identified by the specified
288
 X and Y coordinate</TD>
289
</TR>
290
<TR BGCOLOR="white" CLASS="TableRowColor">
291
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
292
<CODE>&nbsp;void</CODE></FONT></TD>
293
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#loadGame(java.io.File)">loadGame</A></B>(java.io.File&nbsp;f)</CODE>
294
 
295
<BR>
296
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save the current game state to the File.</TD>
297
</TR>
298
<TR BGCOLOR="white" CLASS="TableRowColor">
299
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
300
<CODE>&nbsp;void</CODE></FONT></TD>
301
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#loadLevel(java.io.File)">loadLevel</A></B>(java.io.File&nbsp;lvl)</CODE>
302
 
303
<BR>
304
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load a level and parse it into the internal representation.</TD>
305
</TR>
306
<TR BGCOLOR="white" CLASS="TableRowColor">
307
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
308
<CODE>&nbsp;void</CODE></FONT></TD>
309
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#moveWorker(char)">moveWorker</A></B>(char&nbsp;direction)</CODE>
310
 
311
<BR>
312
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Move the worker according to the rules.</TD>
313
</TR>
314
<TR BGCOLOR="white" CLASS="TableRowColor">
315
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
316
<CODE>&nbsp;void</CODE></FONT></TD>
317
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#moveWorkerSequence(java.lang.String)">moveWorkerSequence</A></B>(java.lang.String&nbsp;Sequence)</CODE>
318
 
319
<BR>
320
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Moves the worker with the steps specified in the move sequence string
321
 which needs to be in the RLUD format.</TD>
322
</TR>
323
<TR BGCOLOR="white" CLASS="TableRowColor">
324
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
325
<CODE>&nbsp;void</CODE></FONT></TD>
326
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#redoLastUndoneMove()">redoLastUndoneMove</A></B>()</CODE>
327
 
328
<BR>
329
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Redo the last undone move.</TD>
330
</TR>
331
<TR BGCOLOR="white" CLASS="TableRowColor">
332
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
333
<CODE>&nbsp;void</CODE></FONT></TD>
334
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#saveGame(java.io.File)">saveGame</A></B>(java.io.File&nbsp;f)</CODE>
335
 
336
<BR>
337
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save the current game state to the File.</TD>
338
</TR>
339
<TR BGCOLOR="white" CLASS="TableRowColor">
340
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
341
<CODE>&nbsp;void</CODE></FONT></TD>
342
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#setLevelDir(java.io.File)">setLevelDir</A></B>(java.io.File&nbsp;levelDir)</CODE>
343
 
344
<BR>
345
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load a set of levels from a directory.</TD>
346
</TR>
347
<TR BGCOLOR="white" CLASS="TableRowColor">
348
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
349
<CODE>&nbsp;void</CODE></FONT></TD>
350
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#setPlayerName(java.lang.String)">setPlayerName</A></B>(java.lang.String&nbsp;name)</CODE>
351
 
352
<BR>
353
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the player name used for highscores.</TD>
354
</TR>
355
<TR BGCOLOR="white" CLASS="TableRowColor">
356
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
357
<CODE>&nbsp;void</CODE></FONT></TD>
358
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#startNextLevel()">startNextLevel</A></B>()</CODE>
359
 
360
<BR>
361
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The next level in a set of levels loaded with loadLevelDir
362
 becomes the <i>current</i> level.</TD>
363
</TR>
364
<TR BGCOLOR="white" CLASS="TableRowColor">
365
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
366
<CODE>&nbsp;void</CODE></FONT></TD>
367
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#undoLastMove()">undoLastMove</A></B>()</CODE>
368
 
369
<BR>
370
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Undo the last move.</TD>
371
</TR>
372
<TR BGCOLOR="white" CLASS="TableRowColor">
373
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
374
<CODE>&nbsp;void</CODE></FONT></TD>
375
<TD><CODE><B><A HREF="../../../gdi/ws0809/test/SokobanTest.html#writeHighScoreFile()">writeHighScoreFile</A></B>()</CODE>
376
 
377
<BR>
378
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tells the Sokoban implementation to write the current
379
 highscores to disk, as detailed in the documentation.</TD>
380
</TR>
381
</TABLE>
382
&nbsp;
383
<P>
384
 
385
<!-- ============ METHOD DETAIL ========== -->
386
 
387
<A NAME="method_detail"><!-- --></A>
388
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
389
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
390
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
391
<B>Method Detail</B></FONT></TH>
392
</TR>
393
</TABLE>
394
 
395
<A NAME="loadLevel(java.io.File)"><!-- --></A><H3>
396
loadLevel</H3>
397
<PRE>
398
void <B>loadLevel</B>(java.io.File&nbsp;lvl)
399
               throws java.lang.Exception</PRE>
400
<DL>
401
<DD>Load a level and parse it into the internal representation.
402
 The loaded level is now the  and should
403
 e.g. be shown in the GUI.
404
<P>
405
<DD><DL>
406
<DT><B>Parameters:</B><DD><CODE>lvl</CODE> - The file from which to load the level
407
<DT><B>Throws:</B>
408
<DD><CODE>java.lang.Exception</CODE> - in case the level is not syntactically correct</DL>
409
</DD>
410
</DL>
411
<HR>
412
 
413
<A NAME="currentLevelToString()"><!-- --></A><H3>
414
currentLevelToString</H3>
415
<PRE>
416
java.lang.String <B>currentLevelToString</B>()</PRE>
417
<DL>
418
<DD>Returns the String representation of the <i>current</i> level.
419
<P>
420
<DD><DL>
421
 
422
<DT><B>Returns:</B><DD>the String representation</DL>
423
</DD>
424
</DL>
425
<HR>
426
 
427
<A NAME="isSolved()"><!-- --></A><H3>
428
isSolved</H3>
429
<PRE>
430
boolean <B>isSolved</B>()</PRE>
431
<DL>
432
<DD>Returns whether the <i>current</i> level is solved.
433
<P>
434
<DD><DL>
435
 
436
<DT><B>Returns:</B><DD>True if the current level has been solved, otherwise false</DL>
437
</DD>
438
</DL>
439
<HR>
440
 
441
<A NAME="getLevelWidth()"><!-- --></A><H3>
442
getLevelWidth</H3>
443
<PRE>
444
int <B>getLevelWidth</B>()</PRE>
445
<DL>
446
<DD>Gets the current level's width
447
<P>
448
<DD><DL>
449
 
450
<DT><B>Returns:</B><DD>The width of the current level</DL>
451
</DD>
452
</DL>
453
<HR>
454
 
455
<A NAME="getLevelHeight()"><!-- --></A><H3>
456
getLevelHeight</H3>
457
<PRE>
458
int <B>getLevelHeight</B>()</PRE>
459
<DL>
460
<DD>Gets the current level's height
461
<P>
462
<DD><DL>
463
 
464
<DT><B>Returns:</B><DD>The height of the current level</DL>
465
</DD>
466
</DL>
467
<HR>
468
 
469
<A NAME="getWallCount()"><!-- --></A><H3>
470
getWallCount</H3>
471
<PRE>
472
int <B>getWallCount</B>()</PRE>
473
<DL>
474
<DD>Gets the total number of walls in the current levels
475
<P>
476
<DD><DL>
477
 
478
<DT><B>Returns:</B><DD>The number of walls in the current level</DL>
479
</DD>
480
</DL>
481
<HR>
482
 
483
<A NAME="getCrateCount()"><!-- --></A><H3>
484
getCrateCount</H3>
485
<PRE>
486
int <B>getCrateCount</B>()</PRE>
487
<DL>
488
<DD>Gets the total number of crates in the current levels
489
<P>
490
<DD><DL>
491
 
492
<DT><B>Returns:</B><DD>The number of crates in the current level</DL>
493
</DD>
494
</DL>
495
<HR>
496
 
497
<A NAME="getGoalCount()"><!-- --></A><H3>
498
getGoalCount</H3>
499
<PRE>
500
int <B>getGoalCount</B>()</PRE>
501
<DL>
502
<DD>Gets the total number of goals in the current levels
503
<P>
504
<DD><DL>
505
 
506
<DT><B>Returns:</B><DD>The number of goals in the current level</DL>
507
</DD>
508
</DL>
509
<HR>
510
 
511
<A NAME="moveWorker(char)"><!-- --></A><H3>
512
moveWorker</H3>
513
<PRE>
514
void <B>moveWorker</B>(char&nbsp;direction)</PRE>
515
<DL>
516
<DD>Move the worker according to the rules. The direction to move is either
517
 right, left, up or down, encoded as 'R','L','U' or 'D'.
518
<P>
519
<DD><DL>
520
<DT><B>Parameters:</B><DD><CODE>direction</CODE> - The encoded direction to move the worker</DL>
521
</DD>
522
</DL>
523
<HR>
524
 
525
<A NAME="setLevelDir(java.io.File)"><!-- --></A><H3>
526
setLevelDir</H3>
527
<PRE>
528
void <B>setLevelDir</B>(java.io.File&nbsp;levelDir)</PRE>
529
<DL>
530
<DD>Load a set of levels from a directory. The levels should be
531
 sorted alphabetically. It should not load the first level yet.
532
 Loading the first level should only happen after a call to
533
 startNextLevel().
534
<P>
535
<DD><DL>
536
<DT><B>Parameters:</B><DD><CODE>levelDir</CODE> - the directory from which to load the levels</DL>
537
</DD>
538
</DL>
539
<HR>
540
 
541
<A NAME="startNextLevel()"><!-- --></A><H3>
542
startNextLevel</H3>
543
<PRE>
544
void <B>startNextLevel</B>()
545
                    throws java.lang.Exception</PRE>
546
<DL>
547
<DD>The next level in a set of levels loaded with loadLevelDir
548
 becomes the <i>current</i> level. If there is no more level
549
 left, an exception may be thrown.
550
<P>
551
<DD><DL>
552
 
553
<DT><B>Throws:</B>
554
<DD><CODE>java.lang.Exception</CODE></DL>
555
</DD>
556
</DL>
557
<HR>
558
 
559
<A NAME="getStepsInCurrentLevel()"><!-- --></A><H3>
560
getStepsInCurrentLevel</H3>
561
<PRE>
562
int <B>getStepsInCurrentLevel</B>()</PRE>
563
<DL>
564
<DD>Return the steps performed in the <i>current</i> level, since
565
 the last restart of the level. Remember that only the legal moves
566
 count.
567
<P>
568
<DD><DL>
569
 
570
<DT><B>Returns:</B><DD>performed steps.</DL>
571
</DD>
572
</DL>
573
<HR>
574
 
575
<A NAME="writeHighScoreFile()"><!-- --></A><H3>
576
writeHighScoreFile</H3>
577
<PRE>
578
void <B>writeHighScoreFile</B>()</PRE>
579
<DL>
580
<DD>Tells the Sokoban implementation to write the current
581
 highscores to disk, as detailed in the documentation.
582
<P>
583
<DD><DL>
584
</DL>
585
</DD>
586
</DL>
587
<HR>
588
 
589
<A NAME="setPlayerName(java.lang.String)"><!-- --></A><H3>
590
setPlayerName</H3>
591
<PRE>
592
void <B>setPlayerName</B>(java.lang.String&nbsp;name)</PRE>
593
<DL>
594
<DD>Set the player name used for highscores.
595
<P>
596
<DD><DL>
597
<DT><B>Parameters:</B><DD><CODE>name</CODE> - The player name.</DL>
598
</DD>
599
</DL>
600
<HR>
601
 
602
<A NAME="getWorkerPositionY()"><!-- --></A><H3>
603
getWorkerPositionY</H3>
604
<PRE>
605
int <B>getWorkerPositionY</B>()</PRE>
606
<DL>
607
<DD>Gets the X coordinate of the worker's current position
608
<P>
609
<DD><DL>
610
 
611
<DT><B>Returns:</B><DD>The worker's position's current X coordinate</DL>
612
</DD>
613
</DL>
614
<HR>
615
 
616
<A NAME="getWorkerPositionX()"><!-- --></A><H3>
617
getWorkerPositionX</H3>
618
<PRE>
619
int <B>getWorkerPositionX</B>()</PRE>
620
<DL>
621
<DD>Gets the Y coordinate of the worker's current position
622
<P>
623
<DD><DL>
624
 
625
<DT><B>Returns:</B><DD>The worker's position's current Y coordinate</DL>
626
</DD>
627
</DL>
628
<HR>
629
 
630
<A NAME="isCrateAt(int, int)"><!-- --></A><H3>
631
isCrateAt</H3>
632
<PRE>
633
boolean <B>isCrateAt</B>(int&nbsp;i,
634
                  int&nbsp;j)</PRE>
635
<DL>
636
<DD>Gets whether there is a crate at the position identified by the specified
637
 X and Y coordinate
638
<P>
639
<DD><DL>
640
<DT><B>Parameters:</B><DD><CODE>i</CODE> - The X coordinate of the grid position to check<DD><CODE>j</CODE> - The Y coordinate of the grid position to check
641
<DT><B>Returns:</B><DD>True if there is a crate at the specified position, otherwise
642
 false</DL>
643
</DD>
644
</DL>
645
<HR>
646
 
647
<A NAME="isWallAt(int, int)"><!-- --></A><H3>
648
isWallAt</H3>
649
<PRE>
650
boolean <B>isWallAt</B>(int&nbsp;i,
651
                 int&nbsp;j)</PRE>
652
<DL>
653
<DD>Gets whether there is a wall at the position identified by the specified
654
 X and Y coordinate
655
<P>
656
<DD><DL>
657
<DT><B>Parameters:</B><DD><CODE>i</CODE> - The X coordinate of the grid position to check<DD><CODE>j</CODE> - The Y coordinate of the grid position to check
658
<DT><B>Returns:</B><DD>True if there is a wall at the specified position, otherwise
659
 false</DL>
660
</DD>
661
</DL>
662
<HR>
663
 
664
<A NAME="isGoalAt(int, int)"><!-- --></A><H3>
665
isGoalAt</H3>
666
<PRE>
667
boolean <B>isGoalAt</B>(int&nbsp;i,
668
                 int&nbsp;j)</PRE>
669
<DL>
670
<DD>Gets whether there is a goal at the position identified by the specified
671
 X and Y coordinate
672
<P>
673
<DD><DL>
674
<DT><B>Parameters:</B><DD><CODE>i</CODE> - The X coordinate of the grid position to check<DD><CODE>j</CODE> - The Y coordinate of the grid position to check
675
<DT><B>Returns:</B><DD>True if there is a goal at the specified position, otherwise
676
 false</DL>
677
</DD>
678
</DL>
679
<HR>
680
 
681
<A NAME="canMoveCrate(int, int, char)"><!-- --></A><H3>
682
canMoveCrate</H3>
683
<PRE>
684
boolean <B>canMoveCrate</B>(int&nbsp;i,
685
                     int&nbsp;j,
686
                     char&nbsp;c)</PRE>
687
<DL>
688
<DD>Checks whether the crate at position (x, y) can be moved in direction c
689
<P>
690
<DD><DL>
691
<DT><B>Parameters:</B><DD><CODE>i</CODE> - The x coordinate of the crate to check<DD><CODE>j</CODE> - The y coordinate of the crate to check<DD><CODE>c</CODE> - The direction in which the crate move shall be tested
692
<DT><B>Returns:</B><DD>True if the crate at the specified position can be moved in the
693
 given direction, otherwise false</DL>
694
</DD>
695
</DL>
696
<HR>
697
 
698
<A NAME="getBestPlayerName()"><!-- --></A><H3>
699
getBestPlayerName</H3>
700
<PRE>
701
java.lang.String <B>getBestPlayerName</B>()</PRE>
702
<DL>
703
<DD>Gets the name of the best player (the one with with the least moves)
704
 over all levels. If Player A has completed level L1 with 10 moves and
705
 level L2 with 15 moves and player B has completed level L2 with 11 moves,
706
 the correct return value would be "A" as he has achieved to complete a
707
 level with only 10 moves.
708
 If the highscore list is empty, an empty string shall be returned.
709
<P>
710
<DD><DL>
711
 
712
<DT><B>Returns:</B><DD>The name of the player with the least moves</DL>
713
</DD>
714
</DL>
715
<HR>
716
 
717
<A NAME="clearHighscoreList()"><!-- --></A><H3>
718
clearHighscoreList</H3>
719
<PRE>
720
void <B>clearHighscoreList</B>()</PRE>
721
<DL>
722
<DD>Clears the highscore list. You can either remove all entries from the
723
 "highscore.txt" file or remove the whole file. If there is no highscore
724
 file at the moment, nothing should happen.
725
<P>
726
<DD><DL>
727
</DL>
728
</DD>
729
</DL>
730
<HR>
731
 
732
<A NAME="createHighscoreEntry(java.lang.String, int, int, int)"><!-- --></A><H3>
733
createHighscoreEntry</H3>
734
<PRE>
735
boolean <B>createHighscoreEntry</B>(java.lang.String&nbsp;playername,
736
                             int&nbsp;i,
737
                             int&nbsp;j,
738
                             int&nbsp;k)</PRE>
739
<DL>
740
<DD>Creates a new entry in the highscore list if the given data describes a
741
 new highscore entry. If the specified entry already exists or has too
742
 many steps to be a highscore, nothing happens and false is returned.
743
<P>
744
<DD><DL>
745
<DT><B>Parameters:</B><DD><CODE>playername</CODE> - The name of the player that has achieved the score<DD><CODE>i</CODE> - A unique number identifying the level in which the score has
746
 been reached<DD><CODE>j</CODE> - The count of moves the player has needed to complete the
747
 specified level<DD><CODE>k</CODE> - The time the player has needed to solve the level in seconds
748
<DT><B>Returns:</B><DD>True if a new entry in the highscore list has been created,
749
 otherwise false</DL>
750
</DD>
751
</DL>
752
<HR>
753
 
754
<A NAME="getHighscoreCount()"><!-- --></A><H3>
755
getHighscoreCount</H3>
756
<PRE>
757
int <B>getHighscoreCount</B>()</PRE>
758
<DL>
759
<DD>Gets the count of entries in the highscore list
760
<P>
761
<DD><DL>
762
 
763
<DT><B>Returns:</B><DD>The count of entries in the highscore list</DL>
764
</DD>
765
</DL>
766
<HR>
767
 
768
<A NAME="undoLastMove()"><!-- --></A><H3>
769
undoLastMove</H3>
770
<PRE>
771
void <B>undoLastMove</B>()
772
                  throws java.lang.Exception</PRE>
773
<DL>
774
<DD>Undo the last move. If no move can be undone (e.g. no move has been performed) an Exception is thrown.
775
<P>
776
<DD><DL>
777
 
778
<DT><B>Throws:</B>
779
<DD><CODE>java.lang.Exception</CODE> - notifying the client that no move could be undone</DL>
780
</DD>
781
</DL>
782
<HR>
783
 
784
<A NAME="redoLastUndoneMove()"><!-- --></A><H3>
785
redoLastUndoneMove</H3>
786
<PRE>
787
void <B>redoLastUndoneMove</B>()
788
                        throws java.lang.Exception</PRE>
789
<DL>
790
<DD>Redo the last undone move. If no move can be redone (e.g. no move has been undone) an Exception is thrown.
791
<P>
792
<DD><DL>
793
 
794
<DT><B>Throws:</B>
795
<DD><CODE>java.lang.Exception</CODE> - notifying the client that no move could be redone</DL>
796
</DD>
797
</DL>
798
<HR>
799
 
800
<A NAME="saveGame(java.io.File)"><!-- --></A><H3>
801
saveGame</H3>
802
<PRE>
803
void <B>saveGame</B>(java.io.File&nbsp;f)</PRE>
804
<DL>
805
<DD>Save the current game state to the File.
806
<P>
807
<DD><DL>
808
<DT><B>Parameters:</B><DD><CODE>f</CODE> - the file to save the game state in.</DL>
809
</DD>
810
</DL>
811
<HR>
812
 
813
<A NAME="loadGame(java.io.File)"><!-- --></A><H3>
814
loadGame</H3>
815
<PRE>
816
void <B>loadGame</B>(java.io.File&nbsp;f)</PRE>
817
<DL>
818
<DD>Save the current game state to the File.
819
<P>
820
<DD><DL>
821
<DT><B>Parameters:</B><DD><CODE>f</CODE> - the file to save the game state in.</DL>
822
</DD>
823
</DL>
824
<HR>
825
 
826
<A NAME="isDeadlock()"><!-- --></A><H3>
827
isDeadlock</H3>
828
<PRE>
829
boolean <B>isDeadlock</B>()</PRE>
830
<DL>
831
<DD>Returns whether the current level is in a deadlock position.
832
<P>
833
<DD><DL>
834
 
835
<DT><B>Returns:</B><DD>returns whether the current level is in a deadlock position.</DL>
836
</DD>
837
</DL>
838
<HR>
839
 
840
<A NAME="moveWorkerSequence(java.lang.String)"><!-- --></A><H3>
841
moveWorkerSequence</H3>
842
<PRE>
843
void <B>moveWorkerSequence</B>(java.lang.String&nbsp;Sequence)</PRE>
844
<DL>
845
<DD>Moves the worker with the steps specified in the move sequence string
846
 which needs to be in the RLUD format.
847
<P>
848
<DD><DL>
849
<DT><B>Parameters:</B><DD><CODE>Sequence</CODE> - The move sequence in the RLUD format</DL>
850
</DD>
851
</DL>
852
<!-- ========= END OF CLASS DATA ========= -->
853
<HR>
854
 
855
 
856
<!-- ======= START OF BOTTOM NAVBAR ====== -->
857
<A NAME="navbar_bottom"><!-- --></A>
858
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
859
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
860
<TR>
861
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
862
<A NAME="navbar_bottom_firstrow"><!-- --></A>
863
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
864
  <TR ALIGN="center" VALIGN="top">
865
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
866
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
867
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
868
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
869
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
870
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
871
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
872
  </TR>
873
</TABLE>
874
</TD>
875
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
876
</EM>
877
</TD>
878
</TR>
879
 
880
<TR>
881
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
882
&nbsp;PREV CLASS&nbsp;
883
&nbsp;<A HREF="../../../gdi/ws0809/test/SokobanTestAdapter.html" title="class in gdi.ws0809.test"><B>NEXT CLASS</B></A></FONT></TD>
884
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
885
  <A HREF="../../../index.html?gdi/ws0809/test/SokobanTest.html" target="_top"><B>FRAMES</B></A>  &nbsp;
886
&nbsp;<A HREF="SokobanTest.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
887
&nbsp;<SCRIPT type="text/javascript">
888
  <!--
889
  if(window==top) {
890
    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
891
  }
892
  //-->
893
</SCRIPT>
894
<NOSCRIPT>
895
  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
896
</NOSCRIPT>
897
 
898
 
899
</FONT></TD>
900
</TR>
901
<TR>
902
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
903
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
904
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
905
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
906
</TR>
907
</TABLE>
908
<A NAME="skip-navbar_bottom"></A>
909
<!-- ======== END OF BOTTOM NAVBAR ======= -->
910
 
911
<HR>
912
 
913
</BODY>
914
</HTML>