Difference between revisions of "Script Classes for Adventure Games/Game Class"

From SCI Wiki
Jump to navigationJump to search
m (Collector moved page Script Classes for Adventure Games/Game to Script Classes for Adventure Games/Game Class without leaving a redirect)
 
(7 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
Chapter:  
 
Chapter:  
 
[[Script Classes for Adventure Games/Introduction|1]] |  
 
[[Script Classes for Adventure Games/Introduction|1]] |  
[[Script Classes for Adventure Games/RootObj|2]] |  
+
[[Script Classes for Adventure Games/RootObj Class|2]] |  
[[Script Classes for Adventure Games/Object|3]] |  
+
[[Script Classes for Adventure Games/Object Class|3]] |  
[[Script Classes for Adventure Games/Collection|4]] |  
+
[[Script Classes for Adventure Games/Collection Class|4]] |  
[[Script Classes for Adventure Games/List|5]] |  
+
[[Script Classes for Adventure Games/Script Class|5]] |  
[[Script Classes for Adventure Games/Set|6]] |  
+
[[Script Classes for Adventure Games/Timer Class|6]] |  
[[Script Classes for Adventure Games/EventHandler|7]] |  
+
[[Script Classes for Adventure Games/Feature Class|7]] |  
[[Script Classes for Adventure Games/Inventory|8]] |  
+
[[Script Classes for Adventure Games/View Class|8]] |  
[[Script Classes for Adventure Games/Script|9]] |  
+
[[Script Classes for Adventure Games/PicView Class|9]] |  
[[Script Classes for Adventure Games/Timer|10]] |  
+
[[Script Classes for Adventure Games/Cycling Classes|10]] |  
[[Script Classes for Adventure Games/Feature|11]] |  
+
[[Script Classes for Adventure Games/Motion Classes|11]] |  
[[Script Classes for Adventure Games/View|12]] |  
+
[[Script Classes for Adventure Games/Avoider Class|12]] |  
[[Script Classes for Adventure Games/Prop|13]] |  
+
[[Script Classes for Adventure Games/Event Class|13]] |  
[[Script Classes for Adventure Games/Actor|14]] |
+
[[Script Classes for Adventure Games/User Class|14]]<br />
[[Script Classes for Adventure Games/Ego|15]] |
+
[[Script Classes for Adventure Games/Game Class|15]] |  
[[Script Classes for Adventure Games/PicView|16]] |
+
[[Script Classes for Adventure Games/Locale Class|16]] |  
[[Script Classes for Adventure Games/Cycle|17]] |
+
[[Script Classes for Adventure Games/Region Class|17]] |  
[[Script Classes for Adventure Games/Forward|18]] |
+
[[Script Classes for Adventure Games/Room Class|18]] |  
[[Script Classes for Adventure Games/Walk|19]] |
+
[[Script Classes for Adventure Games/Timer2 Class|19]] |  
[[Script Classes for Adventure Games/Reverse|20]] |
+
[[Script Classes for Adventure Games/InvItem Class|20]] |  
[[Script Classes for Adventure Games/CycleTo|21]] |
+
[[Script Classes for Adventure Games/Block Class|21]] |  
[[Script Classes for Adventure Games/EndLoop|22]] |
+
[[Script Classes for Adventure Games/Cage Class|22]] |  
[[Script Classes for Adventure Games/BegLoop|23]] |
+
[[Script Classes for Adventure Games/Sound Class|23]] |  
[[Script Classes for Adventure Games/Motion|24]] |
+
[[Script Classes for Adventure Games/StatusLine Class|24]] |  
[[Script Classes for Adventure Games/MoveTo|25]] |
+
[[Script Classes for Adventure Games/File Class|25]] |  
[[Script Classes for Adventure Games/Wander|26]]<br />
+
[[Script Classes for Adventure Games/Code Class|26]] |  
[[Script Classes for Adventure Games/Follow|27]] |
+
[[Script Classes for Adventure Games/Global Variables|27]] |  
[[Script Classes for Adventure Games/Chase|28]] |
 
[[Script Classes for Adventure Games/Jump|29]] |
 
[[Script Classes for Adventure Games/JumpTo|30]] |
 
[[Script Classes for Adventure Games/Orbit|31]] |
 
[[Script Classes for Adventure Games/Path|32]] |
 
[[Script Classes for Adventure Games/RelPath|33]] |
 
[[Script Classes for Adventure Games/Avoider|34]] |
 
[[Script Classes for Adventure Games/Event|35]] |
 
[[Script Classes for Adventure Games/User|36]] |
 
[[Script Classes for Adventure Games/Game|37]] |  
 
[[Script Classes for Adventure Games/Locale|38]] |  
 
[[Script Classes for Adventure Games/Region|39]] |  
 
[[Script Classes for Adventure Games/Room|40]] |  
 
[[Script Classes for Adventure Games/Timer2|41]] |
 
[[Script Classes for Adventure Games/TimeOut|42]] |  
 
[[Script Classes for Adventure Games/InvItem|43]] |  
 
[[Script Classes for Adventure Games/Block|44]] |  
 
[[Script Classes for Adventure Games/Cage|45]] |  
 
[[Script Classes for Adventure Games/Sound|46]] |  
 
[[Script Classes for Adventure Games/StatusLine|47]] |  
 
[[Script Classes for Adventure Games/File|48]] |  
 
[[Script Classes for Adventure Games/Code|49]] |  
 
[[Script Classes for Adventure Games/Global Variables|50]] |  
 
 
[[Script Classes for Adventure Games/Index|Index]]
 
[[Script Classes for Adventure Games/Index|Index]]
 
</div><br />
 
</div><br />
Line 62: Line 39:
 
&nbsp;
 
&nbsp;
  
xxxxxxx body xxxxxxxx
+
==<br /> The Game Class ==
 +
 
 +
The Game class implements the game which is being written. The game author creates a source file with script number 0 which contains the instance of the class Game which is the game. This instance is where, for example, input not handled by any Actor, Room, Region, etc. will be handled.
 +
 
 +
{|
 +
|width= "125"|In file:||game.sc
 +
|-
 +
|Inherits from:||Object
 +
|-
 +
|Inherited by:||none
 +
|}
 +
 
 +
 
 +
===<br /> Properties ===
 +
 
 +
==== score ====
 +
<blockquote>The user's current score.
 +
 
 +
==== possibleScore ====
 +
<blockquote>The maximum number of points possible in the game.
 +
 
 +
==== speed ====
 +
<blockquote>The number of timer ticks (1/60th of a second) between animation intervals. Don't set this directly — use changeSpeed:.</blockquote>
 +
</blockquote>
 +
 
 +
==== timers ====
 +
<blockquote>A Set of the currently running Timers. The doit: method of the Game is what runs the timers.</blockquote>
 +
</blockquote>
 +
 
 +
===<br /> Methods ===
 +
 
 +
<blockquote>
 +
==== play: ====
 +
<blockquote>Your game is started by the kernel issuing the play: message to the object whose ID is in entry 0 of script.000. The play: method, as defined in the Game class, is basically
 +
 
 +
<blockquote><div class="CodeBlockHeader">Code:</div>
 +
<syntaxhighlight lang="sci">
 +
 
 +
(self init:)
 +
(while (not quit)
 +
    (self doit:)
 +
    (Wait speed)
 +
)</syntaxhighlight></blockquote></blockquote>
 +
 
 +
==== init: ====
 +
<blockquote>Initializes the game, setting up some global variables and initializing the menu and inventory.</blockquote>
 +
 
 +
==== doit: ====
 +
<blockquote>This method is invoked once per animation cycle and passes the doit: method along to the rest of the game. It is responsible for changing rooms when a newRoom: has been done by the current Room.</blockquote>
 +
 
 +
==== newRoom: n ====
 +
<blockquote>Make room number n the current room. This should not be called directly from user code. This method deletes the cast and the old Room from the heap, then invokes the startRoom: method to load and initialize the new Room.</blockquote>
 +
 
 +
==== startRoom: n ====
 +
<blockquote>Load and initialize room number n. When this method is invoked, the heap has been cleaned up from the previous room. Reimplement this to load any Regions which will span several Rooms and create heap fragmentation problems. Loading such regions below the Rooms lets them stay in the heap without fragmenting it.</blockquote>
 +
 
 +
==== changeScore: n ====
 +
<blockquote>Add the number n (which may be negative) to the user's current game score. If the StatusLine is being displayed, update the score shown there.</blockquote>
 +
 
 +
==== handleEvent: event ====
 +
<blockquote>After passing an event to the MenuBar and the cast, the User class sends the handleEvent: event message to the game, which in turn sends it to the regions. This method may be modified in the game instance to do a (super handleEvent:event) followed by processing to handle unclaimed events by printing an "I don't understand you" message.</blockquote>
 +
 
 +
==== setSpeed: n ====
 +
<blockquote>Set the number of timer ticks (1/60th of a second) between animation cycles to n. This also resets any Timers in the timers Set to account for the change in speed.</blockquote>
 +
 
 +
==== restart: ====
 +
<blockquote>This restarts the game at the beginning, allowing the user to start again without rebooting the game.</blockquote>
 +
 
 +
==== save: ====
 +
<blockquote>Saves the current state of the game to disk, allowing the user to quit the game and restart at the same point later using restore:. Not implemented.</blockquote>
 +
 
 +
==== restore: ====
 +
<blockquote>Restores a saved game state. Not implemented.</blockquote>
 +
 
 +
==== showMem: ====
 +
<blockquote>Displays the amount of memory remaining in heap and hunk space.</blockquote>
 +
</blockquote>
  
 
&nbsp;
 
&nbsp;
Line 75: Line 128:
 
&nbsp;
 
&nbsp;
  
<span style="float: left">[[Script Classes for Adventure Games/User|&lt; Previous: User]]</span>
+
<span style="float: left">[[Script Classes for Adventure Games/User Class|&lt; Previous: The User Class]]</span>
<span style="float: right">[[Script Classes for Adventure Games/Locale|Next: Locale &gt;]]</span>
+
<span style="float: right">[[Script Classes for Adventure Games/Region Class|Next: The Region Class &gt;]]</span>
 +
<!-- <span style="float: right">[[Script Classes for Adventure Games/Locale Class|Next: The Locale Class &gt;]]</span> -->
  
 
&nbsp;
 
&nbsp;

Latest revision as of 01:18, 11 December 2015

Official SCI Documentation

Chapter: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14
15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | Index


The Game Class

Author: Jeff Stephenson

Date: 5 April 1988

 


The Game Class

The Game class implements the game which is being written. The game author creates a source file with script number 0 which contains the instance of the class Game which is the game. This instance is where, for example, input not handled by any Actor, Room, Region, etc. will be handled.

In file: game.sc
Inherits from: Object
Inherited by: none



Properties

score

The user's current score.

possibleScore

The maximum number of points possible in the game.

speed

The number of timer ticks (1/60th of a second) between animation intervals. Don't set this directly — use changeSpeed:.

timers

A Set of the currently running Timers. The doit: method of the Game is what runs the timers.


Methods

play:

Your game is started by the kernel issuing the play: message to the object whose ID is in entry 0 of script.000. The play: method, as defined in the Game class, is basically

Code:
(self init:)
(while (not quit)
     (self doit:)
     (Wait speed)
)

init:

Initializes the game, setting up some global variables and initializing the menu and inventory.

doit:

This method is invoked once per animation cycle and passes the doit: method along to the rest of the game. It is responsible for changing rooms when a newRoom: has been done by the current Room.

newRoom: n

Make room number n the current room. This should not be called directly from user code. This method deletes the cast and the old Room from the heap, then invokes the startRoom: method to load and initialize the new Room.

startRoom: n

Load and initialize room number n. When this method is invoked, the heap has been cleaned up from the previous room. Reimplement this to load any Regions which will span several Rooms and create heap fragmentation problems. Loading such regions below the Rooms lets them stay in the heap without fragmenting it.

changeScore: n

Add the number n (which may be negative) to the user's current game score. If the StatusLine is being displayed, update the score shown there.

handleEvent: event

After passing an event to the MenuBar and the cast, the User class sends the handleEvent: event message to the game, which in turn sends it to the regions. This method may be modified in the game instance to do a (super handleEvent:event) followed by processing to handle unclaimed events by printing an "I don't understand you" message.

setSpeed: n

Set the number of timer ticks (1/60th of a second) between animation cycles to n. This also resets any Timers in the timers Set to account for the change in speed.

restart:

This restarts the game at the beginning, allowing the user to start again without rebooting the game.

save:

Saves the current state of the game to disk, allowing the user to quit the game and restart at the same point later using restore:. Not implemented.

restore:

Restores a saved game state. Not implemented.

showMem:

Displays the amount of memory remaining in heap and hunk space.

 

Notes


 

Table of Contents

 

< Previous: The User Class Next: The Region Class >