Title:
Storage medium storing puzzle game program, puzzle game apparatus, and puzzle game controlling method
Kind Code:
A1


Abstract:
A game apparatus includes a first LCD and a second LCD, and on the second LCD, a touch panel is set. On the first LCD and the second LCD, game screens each including gear objects provided with a socket object are displayed. When a player makes a touch operation, the gear object on the game screen displayed on the second LCD is rotated in response thereto, one or more gear objects on the game screen displayed on the first LCD is accordingly rotated. At that time, a ball object held in the socket object of the gear object moves to other gear object. When each of the ball objects are accepted (held) in the socket object of the gear objects each applied with the same color as that of the ball objects, the puzzle game is cleared.



Inventors:
Shirakawa, Mari (Kyoto, JP)
Goddard, Giles (Kyoto, JP)
Application Number:
12/068056
Publication Date:
12/04/2008
Filing Date:
02/01/2008
Assignee:
Nintendo Co., Ltd. (Kyoto, JP)
VITEI INC. (Kyoto, JP)
Primary Class:
Other Classes:
463/31, 463/37, 463/43
International Classes:
A63F9/24
View Patent Images:
Related US Applications:



Primary Examiner:
GALKA, LAWRENCE STEFAN
Attorney, Agent or Firm:
NIXON & VANDERHYE, P.C. (901 NORTH GLEBE ROAD, 11TH FLOOR, ARLINGTON, VA, 22203, US)
Claims:
What is claimed is:

1. A storage medium storing a puzzle game program of a puzzle game apparatus having a storing means, a display means and an operating means, wherein said puzzle game program causes a computer of said puzzle game apparatus to execute: a game image displaying step for arranging a plurality of rotating objects each being provided with at least one acceptor unit by using image data stored in said storing means, and displaying a game image in which at least one moving object is accepted in any one of acceptor units on said display means; a rotation processing step for rotating said rotating object according to operation data input from said operating means in response to an operation by a player; a relation determining step for determining whether or not a first accepting unit in which said moving object is accepted and a second accepting unit provided in other rotating object being different from the rotating object provided with said first accepting unit have a predetermined relationship as a result of the rotation of said rotating object by said rotation processing step; and a movement processing step for updating said game image such that said moving object moves from said first accepting unit to said second accepting unit when it is determined that the predetermined relationship is satisfied by said relation determining step.

2. A storage medium storing a puzzle game program according to claim 1, wherein said storing means is set with an attribute of each of said moving object and said rotating object, said puzzle game program causes said computer to further execute an attribute determining step for determining whether or not the attribute of said moving object and the attribute of the rotating object in which said moving object is accepted are coincident, and a game processing step for changing a progress of the game when it is determined that they are coincident with each other by said attribute determining step.

3. A storage medium storing a puzzle game program according to claim 1, wherein said rotating object includes a first rotating object permitting an operation by said player and a second rotating object not permitting an operation by said player, and said rotation processing step rotates said second rotating object on the basis of the rotation of said first rotating object when said first rotating object is rotated according to the operation data input from said operating means in response to the operation by said player.

4. A storage medium storing a puzzle game program according to claim 2, wherein said rotating object includes a first rotating object permitting an operation by said player and a second rotating object not permitting an operation by said player, and said rotation processing step rotates said second rotating object on the basis of the rotation of said first rotating object when said first rotating object is rotated according to the operation data input from said operating means in response to the operation by said player.

5. A storage medium storing a puzzle game program according to claim 3, wherein said rotating object includes said plurality of first rotating objects and said plurality of second rotating objects, and said rotation processing step rotates one or said plurality of second rotating objects on the basis of the rotation of at least one of said first rotating object.

6. A storage medium storing a puzzle game program according to claim 4, wherein said rotating object includes said plurality of first rotating objects and said plurality of second rotating objects, and said rotation processing step rotates one or said plurality of second rotating objects on the basis of the rotation of said at least one of said first rotating objects.

7. A storage medium storing a puzzle game program according to claim 1, wherein said puzzle game program causes said computer to further execute an angle calculating step for calculating a first angle of said first accepting unit with respect to a reference position set to said rotating object and a second angle of said second accepting unit with respect to the reference position set to said other rotating object as a result of the rotation of said rotating object by said rotation processing step, said relation determining step determines whether or not a difference between said first angle and said second angle is within a predetermined range, and said movement processing step updates said game image such that said moving object moves from said first accepting unit to said second accepting unit by updating positional data of said moving object stored in said storing means when it is determined that said difference is within the predetermined range by said relation determining step.

8. A storage medium storing a puzzle game program according to claim 1, wherein said puzzle game program causes said computer to further execute a position detecting step for detecting a position on a screen instructed by the operation from the player according to the operation data input by said operating means, and a position determining step for determining whether or not the position detected by said position detecting step instructs said rotating object, and said rotation processing step rotates said rotating object on the basis of a change of position per a predetermined time when it is determined that said rotating object is instructed by said position determining step.

9. A puzzle game apparatus comprising: a game image displaying means for arranging a plurality of rotating objects each being provided with at least one acceptor unit, and displaying a game image in which at least one moving object is accepted in any one of acceptor units on said display means; a rotation processing means for rotating said rotating object in response to an operation by a player; a relation determining means for determining whether or not a first accepting unit in which said moving object is accepted and a second accepting unit provided in other rotating object being different from the rotating object provided with said first accepting unit have a predetermined relationship as a result of the rotation of said rotating object by said rotation processing means; and a movement processing means for moving said moving object to said second accepting unit when it is determined by said relation determining means that the predetermined relationship is satisfied.

10. A puzzle game controlling method of a puzzle game apparatus including following steps of: (a) arranging a plurality of rotating objects each being provided with at least one acceptor unit, and displaying a game image in which at least one moving object is accepted in any one of acceptor units on said display means, (b) rotating said rotating object in response to an operation by a player, (c) determining whether or not a first accepting unit in which said moving object is accepted and a second accepting unit provided in other rotating object being different from the rotating object provided with said first accepting unit have a predetermined relationship as a result of the rotation of said rotating object by said step (b), and (d) moving said moving object to said second accepting unit when it is determined that the predetermined relationship is satisfied by said step (c).

Description:

CROSS REFERENCE OF RELATED APPLICATION

The disclosure of Japanese Patent Application No. 2007-141936 is incorporated herein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The invention relates to a storage medium storing a puzzle game program, a puzzle game apparatus and a puzzle game controlling method. More specifically, the present invention relates to a storage medium storing a puzzle game program, a puzzle game apparatus and a puzzle game controlling method that are for playing a puzzle game.

2. Description of the Related Art

An example of this kind of the related art is disclosed in Japanese Patent Application Laid-Open No. 2002-301265 [A63F 13/00] laid-open on Oct. 15, 2002. In the puzzle game, for example, out of the plurality of balls displayed on a display screen, regarding an arbitrary ball as a center, balls surrounding the ball are rotatively moved. In this puzzle game, a plurality of balls having various attributes are regularly displayed at lattice pattern of a plurality of regular triangles on the display screen. Then, if on the basis of the coordinates of the center selected by an operation with the controller and the radius therefrom, a plurality of relevant balls are present, attributes of balls forming a shape as a minimum unit are changed to the attribute the same as that of the ball as the center, and if a ball is surrounded by balls having the same attribute, the attribute of the surrounded ball is changed to the attribute of the surrounding balls.

Furthermore, another example of this kind of the related art is disclosed in the site of the Internet (http://www.nintendo.co.jp/n08/bit_g/index.html “DIALHEX”). In the puzzle game of the other example, triangle objects having different colors fall at random from above of the game screen, and arranged on the game space. The player makes a hexagon using triangle objects having the same color by moving and rotating a hexagonal dial. Then, the hexagon disappears from the game screen. That is, the six triangle objects comprising the hexagon are erased from the game space.

However, in the former puzzle game, by regarding a certain ball as a center, balls surrounding the ball are merely rotatively moved, and therefore, the game is short of the degree of freedom of the movements of the balls, simple and predictable. Thus, there is a problem that the player is tired of the game. Similarly, in the latter puzzle game, the plurality of triangle objects surrounded by the dial are merely rotated, and therefore, there is a problem that the player is tired of the game.

SUMMARY OF THE INVENTION

Therefore, it is a primary object of the present invention to provide a novel storage medium storing a puzzle game program, puzzle game apparatus, and puzzle game controlling method.

Another object of the present invention is to provide a storage medium storing a puzzle game program, a puzzle game apparatus and a puzzle game controlling method capable of playing an innovative puzzle game.

The present invention employs following features in order to solve the above-described problems. It should be noted that reference numerals inside the parentheses and supplements show one example of a corresponding relationship with the embodiments described later for easy understanding of the present invention, and does not limit the present invention.

A first invention is a storage medium storing a puzzle game program of a puzzle game apparatus comprising a storing means, a display means and an operating means, and the puzzle game program causes a computer of the puzzle game apparatus to execute a game image displaying step, a rotation processing step, a relation determining step, and a movement processing step. The game image displaying step arranges a plurality of rotating objects each being provided with at least one acceptor unit by using image data stored in the storing means, and displays a game image in which at least one moving object is accepted in any one of acceptor units on said display means. The rotation processing step rotates the rotating object according to operation data input from the operating means in response to an operation by a player. The relation determining step determines whether or not a first accepting unit in which the moving object is accepted and a second accepting unit provided in other rotating object being different from the rotating object provided with the first accepting unit have a predetermined relationship as a result of the rotation of the rotating object by the rotation processing step. The movement processing step updates the game image such that the moving object moves from the first accepting unit to the second accepting unit when it is determined that the predetermined relationship is satisfied by the relation determining step.

In the first invention, a puzzle game apparatus (10) comprises a storing means (28, 42), a display means (12, 14) and an operating means (22, 24). The puzzle game program causes a computer of the puzzle game apparatus to execute a game image displaying step (34, S3, S53, S123), a rotation processing step (34, S7), a relation determining step (34, S9), and a movement processing step (34, S11). The game image displaying step arranges a plurality of rotating objects each being provided with at least one acceptor unit by using image data stored in the storing means, and displays a game image (300, 320) in which at least one moving object is accepted in any one of acceptor units on the display means. The rotation processing step rotates the rotating object (302, 304, 306, 322, 324, 326) according to operation data input from the operating means in response to an operation by a player. For example, when the player makes a sliding operation on a rotating object, the rotating object is rotated according to the sliding operation. The relation determining step determines whether or not a first accepting unit (302a, 302b, 304a, 304b, 306a, 306b, 322a, 322b, 324a, 324b, 326a, 326b) in which the moving object (312a, 312b, 314a, 314b, 316a, 316b) is accepted and a second accepting unit (302a, 302b, 304a, 304b, 306a, 306b, 322a, 322b, 324a, 324b, 326a, 326b) provided in other rotating object being different from the rotating object provided with the first accepting unit have a predetermined relationship as a result of the rotation of the rotating object by the rotation processing step. For example, it is determined whether or not the first accepting unit and the second accepting unit to which a setting (connection setting) of making the moving object movable is set are arranged in a straight line or approximate straight line. Then, the movement processing step updates the game image such that the moving object moves from the first accepting unit to the second accepting unit when it is determined that the predetermined relationship is satisfied by the relation determining step by updating the position data of the moving object stored in the storing means.

According to the first invention, by rotating the plurality of rotating objects each having an acceptor unit, a moving object accepted in an acceptor unit of a certain rotating object is moved to an acceptor unit of other rotating object, and therefore, it is possible to provide an innovative puzzle game.

A second invention is dependent on the first invention, and the storing means is set with an attribute of each of the moving object and the rotating object, the puzzle game program causes the computer to further execute an attribute determining step for determining whether or not the attribute of the moving object and the attribute of the rotating object in which the moving object is accepted are coincident, and a game processing step for changing a progress of the game when it is determined that they are coincident with each other by the attribute determining step.

In the second invention, in the storing means, attributes (color, for example) of each of the moving object and the rotating object are set (stored). The puzzle game program causes a computer to further execute an attribute determining step (34, S13) and a game processing step (34, S15). The attribute determining step determines whether or not the attribute of the moving object and the attribute of the rotating object in which the moving object is accepted are coincident. The game processing step changes a progress of the game when it is determined that they are coincident with each other by the attribute determining step. For example, when the attributes of all the moving objects and the attributes of the rotating objects in which the moving objects are accepted are coincident, it is determined that the puzzle is solved (the game is cleared).

According to the second invention, the player is requested to strategically rotate a rotating object such that a moving object is accepted in the rotating object having an attribute the same as that of the moving object, capable of providing a more interesting puzzle game.

A third invention is dependent on the first or the second invention, and the rotating object includes a first rotating object permitting an operation by the player and a second rotating object not permitting an operation by the player, and the rotation processing step rotates the second rotating object on the basis of the rotation of the first rotating object when the first rotating object is rotated according to the operation data input from the operating means in response to the operation by the player.

In the third invention, the rotating object includes a first rotating object (322, 324, 326) permitting an operation by the player and a second rotating object (302, 304, 306) not permitting an operation by the player. The rotation processing step rotates the second rotating object on the basis of the rotation of the first rotating object when the first rotating object is rotated according to the operation data input from the operating means in response to the operation by the player. For example, when the first rotating object is rotated, the second rotating object is rotated in the same direction and by the same rotation amount (angle) corresponding thereto. However, the rotation direction of the second rotating object may be reversed, and the rotation amount may be less or more than the rotation amount of the first rotating object.

According to the third invention, other corresponding rotating object is also rotated in conjunction with the rotating object rotated by the player's operation, and therefore, it is possible to provide a puzzle game with a high strategic characteristic.

A fourth invention is dependent on the third invention, and the rotating object includes the plurality of first rotating objects and the plurality of second rotating objects, and the rotation processing step rotates one or the plurality of second rotating objects on the basis of the rotation of at least one of the first rotating object.

In the fourth invention, the rotating object includes the plurality of first rotating objects and the plurality of second rotating objects. The rotation processing step rotates one or the plurality of second rotating objects on the basis of the rotation of at least one of the first rotating object. That is, two or more second rotating objects are rotated in conjunction with one first rotating object. In this case, if the number of first rotating objects and the number of second rotating objects are the same, a second object not being operatively connected with the first rotating object may be present.

According to the fourth invention, similar to the third invention, it is possible to provide the puzzle game superior in strategic characteristics.

A fifth invention is dependent on any one of the first to fourth inventions, and the puzzle game program causes the computer to further execute an angle calculating step for calculating a first angle of the first accepting unit with respect to a reference position set to the rotating object and a second angle of the second accepting unit with respect to the reference position set to the other rotating object as a result of the rotation of the rotating object by the rotation processing step, the relation determining step determines whether or not a difference between the first angle and the second angle is within a predetermined range, and the movement processing step updates the game image such that the moving object moves from the first accepting unit to the second accepting unit by updating positional data of the moving object stored in the storing means when it is determined that the difference is within the predetermined range by the relation determining step.

In the fifth invention, the puzzle game program causes a computer to further execute an angle calculating step (34, S81). The angle calculating step calculates a first angle of the first accepting unit with respect to a reference position set to the rotating object and a second angle of the second accepting unit with respect to the reference position set to the other rotating object as a result of the rotation of the rotating object by the rotation processing step. The relation determining step determines whether or not a difference between the first angle and the second angle is within a predetermined range. Here, in this embodiment, disk-shape rotating objects are arranged, and the reference positions of all the rotating objects are set to the same position, and the predetermined relationship means that the first accepting unit and the second accepting unit are arranged in a straight line or an approximate straight line. Thus, a determination whether an angle obtained by subtracting 180° angle from the difference between the first angle and the second angle is within the predetermined range is made. The movement processing step updates the game image such that the moving object moves from the first accepting unit to the second accepting unit by updating the positional data of the moving object stored in the storing means when it is determined that the difference is within the predetermined range by the relation determining step.

According to the fifth invention, since whether or not the respective acceptor units of the two rotating objects satisfy the predetermined relationship is determined on the basis of the angular difference between the two acceptor units, it is possible to make the determination with simple processing.

A sixth invention is dependent on any one of the first to fifth inventions, and the puzzle game program causes the computer to further execute a position detecting step for detecting a position on a screen instructed by the operation from the player according to the operation data input by the operating means, and a position determining step for determining whether or not the position detected by the position detecting step instructs the rotating object, and the rotation processing step rotates the rotating object on the basis of a change of position per a predetermined time when it is determined that the rotating object is instructed by the position determining step.

In the sixth invention, the puzzle game program causes the computer to further execute a position detecting step (34, S33, S35) and a position determining step (34, S37). The position detecting step detects a position on a screen instructed by the operation from the player according to the operation data input by the operating means. The position determining step determines whether or not the position detected by the position detecting step instructs the rotating object. The rotation processing step rotates the rotating object on the basis of a change of position per a predetermined time when it is determined that the rotating object is instructed by the position determining step.

According to the sixth invention, since the rotating object is rotated according to the position on the screen instructed by a player's operation, it is possible to realize an intuitive operation. Thus, it is possible to improve operability of the game apparatus.

A seventh invention is a puzzle game apparatus comprising a game image displaying means, a rotation processing means, a relation determining means, and a movement processing means. The game image displaying means arranges a plurality of rotating objects each being provided with at least one acceptor unit, and displays a game image in which at least one moving object is accepted in any one of acceptor units on the display means. The rotation processing means rotates the rotating object in response to an operation by a player. The relation determining means determines whether or not a first accepting unit in which the moving object is accepted and a second accepting unit provided in other rotating object being different from the rotating object provided with the first accepting unit have a predetermined relationship as a result of the rotation of the rotating object by the rotation processing means. The movement processing means moves the moving object to the second accepting unit when it is determined that the predetermined relationship is satisfied by the relation determining means.

In also the seventh invention, similar to the first invention, it is possible to provide an innovative puzzle game.

An eighth invention is a puzzle game controlling method of a puzzle game apparatus and includes following steps of: (a) arranging a plurality of rotating objects each being provided with at least one acceptor unit, and displaying a game image in which at least one moving object is accepted in any one of acceptor units on the display means, (b) rotating the rotating object in response to an operation by a player, (c) determining whether or not a first accepting unit in which the moving object is accepted and a second accepting unit provided in other rotating object being different from the rotating object provided with the first accepting unit have a predetermined relationship as a result of the rotation of the rotating object by the step (b), and (d) moving the moving object to the second accepting unit when it is determined that the predetermined relationship is satisfied by the step (c).

In also the eighth invention, similar to the first invention, it is possible to provide an innovative puzzle game.

The above described objects and other objects, features, aspects and advantages of the present invention will become more apparent from the following detailed description of the present invention when taken in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an illustrative view showing one embodiment of a game apparatus of the present invention;

FIG. 2 is a block diagram showing an electric configuration of the game apparatus shown in FIG. 1;

FIG. 3 is an illustrative view showing one example of game screens to be displayed on a first LCD and a second LCD of the game apparatus shown in FIG. 1;

FIG. 4 is an illustrative view showing another example of the game screen to be displayed on the second LCD of the game apparatus shown in FIG. 1;

FIG. 5 is an illustrative view showing a still another example of the game screens to be displayed on the first LCD and the second LCD of the game apparatus shown in FIG. 1;

FIG. 6 is an illustrative view explaining a calculation method of a rotation amount of a gear object displayed on the game screen according to the rotation by a player's operation;

FIG. 7 is an illustrative view explaining angle offset values of a ball object held in a socket object provided in a gear object and an invisible socket object correspondingly provided in the gear object the socket object;

FIG. 8 is an illustrative view showing a layer of invisible gear objects each provided to the game screen displayed on the first LCD and the second LCD of the game apparatus shown in FIG. 1;

FIG. 9 is an illustrative view for explaining the presence or absence of a connection setting between the gear objects;

FIG. 10 is an illustrative view for explaining a connected state of the socket objects provided to the two adjacent gear objects;

FIG. 11 is an illustrative view explaining a position of a ball object and a position of an invisible socket object provided to a gear object adjacent to the gear object holding the ball object when the ball object moves between the socket objects which are in a connected state;

FIG. 12 is an illustrative view showing one example of a memory map of a RAM shown in FIG. 2;

FIG. 13 is an illustrative view showing a detailed content of a gear object data memory area provided in the data memory area shown in FIG. 12;

FIG. 14 is an illustrative view showing a detailed content of a ball object data memory area provided in the data memory area shown in FIG. 12;

FIG. 15 is an illustrative view showing a detailed content of an invisible gear object data memory area provided in the data memory area shown in FIG. 12;

FIG. 16 is a flowchart showing game entire processing of the CPU core shown in FIG. 2;

FIG. 17 is a flowchart showing gear object rotating processing of the CPU core shown in FIG. 2;

FIG. 18 is a flowchart showing a part of socket connection determining processing of the CPU core shown in FIG. 2;

FIG. 19 is another part of the socket connection determining processing of the CPU core shown in FIG. 2, and continuing from FIG. 18;

FIG. 20 is a flowchart showing a part of ball moving processing of the CPU core shown in FIG. 2; and

FIG. 21 is a flowchart showing another part of the ball moving processing of the CPU core shown in FIG. 2, and continuing from FIG. 20.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Referring to FIG. 1, a game apparatus 10 according to an embodiment of the present invention stores a puzzle game program to thereby function as a puzzle game apparatus as described later. The game apparatus 10 includes a first liquid crystal display (LCD) 12 and a second LCD 14. The LCD 12 and the LCD 14 are provided on a housing 16 so as to be arranged in a predetermined position. In this embodiment, the housing 16 comprises an upper housing 16a and a lower housing 16b, and the LCD 12 is provided on the upper housing 16a while the LCD 14 is provided on the lower housing 16b. Accordingly, the LCD 12 and the LCD 14 are closely arranged so as to be longitudinally (vertically) parallel with each other.

In addition, although an LCD is utilized as a display in this embodiment, an EL (Electronic Luminescence) display, a plasmatic display, etc. may be used in place of the LCD.

As can be understood from FIG. 1, the upper housing 16a has a plane shape little larger than a plane shape of the LCD 12, and has an opening formed so as to expose a display surface of the LCD 12 from one main surface thereof. On the other hand, the lower housing 16b has a plane shape being approximately the same as the upper housing 16a, and has an opening formed so as to expose a display surface of the LCD 14 at an approximately center of the horizontal direction. On the left side of the LCD 14 of the lower housing 16b, a power switch 18 is provided.

Furthermore, the upper housing 16a is provided with sound release holes 20a and 20b on both sides of the LCD 12 for speakers 36a and 36b (FIG. 2). The lower housing 16b is provided with a microphone hole 20c for a microphone (not illustrated) and operating switches 22 (22a, 22b, 22c, 22d, 22e, 22L and 22R).

In addition, the upper housing 16a and the lower housing 16b are rotatably connected at a lower side (lower edge) of the upper housing 16a and a part of an upper side (upper edge) of the lower housing 16b. Accordingly, in a case of not playing a game, for example, if the upper housing 16a is rotatably folded such that the display surface of the LCD 12 and the display surface of the LCD 14 are face to face with each other, it is possible to prevent the display surface of the LCD 12 and the display surface of the LCD 14 from being damaged such as a flaw, etc. It should be noted that the upper housing 16a and the lower housing 16b are not necessarily rotatably connected with each other, and may alternatively be provided integrally (fixedly) to form the housing 16.

The operating switch 22 includes a direction instructing switch (cross switch) 22a, a start switch 22b, a select switch 22c, an action switch (A button) 22d, an action switch (B button) 22e, an action switch (X button) 22f, an action switch (Y button) 22g, an action switch (L button) 22L, and an action switch (R button) 22R. The switch 22a is arranged at the left of the LCD 14 on one surface of the lower housing 16b. Other switches 22b-22g are arranged at the right of the LCD 14 on the one surface of the lower housing 16b. In addition, the switch 22L and the switch 22R are arranged at the right and left corners sandwiching the connected portion with the upper housing 16a on the upper side surface of the lower housing 16b.

The direction instructing switch 22a functions as a digital joystick, and is utilized for instructing a moving direction of a player character (or player object) to be operated by a user or a player and for instructing a moving direction of a cursor, and so forth by operating any one of four depression portions. Also, a specific role can be assigned to each of the four depression portions, and by operating any one of the four depression portions, it is possible to instruct (designate) the assigned role.

The start switch 22b is formed by a push button, and is utilized for starting (restarting), temporarily stopping (pausing) a game, and so forth. The select switch 22c is formed by the push button, and utilized for a game mode selection, etc.

The action switch 22d, that is, the A button is formed by the push button, and allows the player character to perform an arbitrary action, except for instructing the direction, such as hitting (punching), throwing, holding (obtaining), riding, jumping, etc. For example, in an action game, it is possible to apply an instruction of jumping, punching, moving arms, etc. In a role-playing game (RPG) and a simulation RPG, it is possible to apply an instruction of obtaining an item, selecting and determining arms or command, etc. The action switch 22e, that is, the B button is formed by the push button, and is utilized for changing a game mode selected by the select switch 22c, canceling an action determined by the A button 22d, and so forth.

The action switch 22f, that is, the X button and the action switch 22g, that is, the Y button are formed by the push buttons, and are utilized for a subsidiary operation when the game cannot be advanced only with the A button 22d and the B button 22e. It should be noted that the X button 22f and the Y button 22g can be used for the similar operation to the A button 22d and B button 22e. Of course, the X button 22f and the Y button 22g are not necessarily utilized in the game play.

The action switch (left depression button) 22L and the action switch (right depression button) 22R are formed by the push button, and the left depression button (L button) 22L and the right depression button (R button) 22R can perform the same operation as the A button 22d and the B button 22e, and also function as a subsidiary of the A button 22d and the B button 22e. In addition, the L button 22L and the R button 22R can change the roles assigned to the direction switch 22a, the A button 22d, the B button 22e, the X button 22f, and the Y button 22g to other roles.

Also, on a top surface of the LCD 14, a touch panel 24 is provided. As the touch panel 24, any one of kinds of a resistance film system, an optical system (infrared rays system) and an electrostatic capacitive coupling system, for example, can be utilized. In response to an operation (touch operation) by depressing, stroking, touching, and so forth with a stick 26, a pen (stylus pen), or a finger (hereinafter, referred to as “stick 26, etc.”) on a top surface of the touch panel 24, the touch panel 24 detects coordinates of an operated position of the stick 26, etc. (that is, touched) to output coordinates data corresponding to the detected coordinates.

It should be noted that in this embodiment, a resolution of the display surface of the LCD 14 (the same is true for the LCD 12) is 256 dots×192 dots, and a detection accuracy of the touch panel 24 is also rendered 256 dots×192 dots in correspondence to the resolution of the display surface. However, the detection accuracy of the touch panel 24 may be lower than the resolution of the display surface, or higher than it.

Different game screens may be displayed on the LCD 12 and the LCD 14. For example, in a racing game, a screen viewed from a driving seat is displayed on the one LCD, and a screen of entire race (course) may be displayed on the other LCD. Furthermore, in the RPG, characters such as a map, a player character, etc. are displayed on the one LCD, and items belonging to the player character may be displayed on the other LCD. Additionally, a game play screen may be displayed on the one LCD (LCD 14 in this embodiment), and a game screen including information relating to the game (score, level, etc.) can be displayed on the other LCD (LCD 12 in this embodiment). Furthermore, by utilizing the two LCD 12 and LCD 14 as one screen, it is possible to display a large monster (enemy character) to be defeated by the player character.

Accordingly, the player is able to point (operate) an image such as a player character, an enemy character, an item character, an operating object, etc. to be displayed on the screen of the LCD 14 and select (input) commands by operating the touch panel 24 with the use of the stick 26, etc. Also, it is possible to change the direction of a virtual camera (viewpoint) (direction of the line of sight) provided in the three-dimensional game space, and instruct a scrolling (gradual moving display) direction of the game screen (map).

It should be noted that depending on the kind of the game, other input instructions can be made with the use of the touch panel 24. For example, it is possible to input a coordinates input instruction, and input texts, numbers, symbols, etc. on the LCD 14.

Thus, the game apparatus 10 has the LCD 12 and the LCD 14 as a display portion of two screens, and by providing the touch panel 24 on an upper surface of any one of them (LCD 14 in this embodiment), the game apparatus 10 has the two screens (12, 14) and the operating portions (22, 24) of two systems.

In addition, in this embodiment, the stick 26 can be housed in the housing portion (shown by dotted lines in FIG. 1) provided on the lower housing 16b, for example, and taken out as necessary. It should be noted that if the stick 26 is not provided, the housing portion also need not to be provided.

Also, the game apparatus 10 includes a memory card (or cartridge) 28. The memory card 28 is detachable, and inserted into a loading slot 30 (shown by dotted lines in FIG. 1) provided on a rear surface or a lower edge (bottom surface) of the lower housing 16b. Although omitted in FIG. 1, a connector 32 (see FIG. 2) is provided at a depth portion of the loading slot 30 for connecting a connector (not shown) provided at an end portion of the memory card 28 in the loading direction, and when the memory card 28 is loaded into the loading slot 30, the connectors are connected with each other, and therefore, the memory card 28 is accessible by a CPU core 34 (see FIG. 2) of the game apparatus 10.

It should be noted that although not illustrated in FIG. 1, the speakers 36a and 36b (see FIG. 2) are provided at a position corresponding to the sound release holes 20a and 20b inside the upper housing 16a.

Furthermore although omitted in FIG. 1, for example, a battery accommodating box is provided on a rear surface of the lower housing 16b, and a volume switch, an external expansion connector, an earphone jack, etc. are provided on a bottom surface of the lower housing 16b.

FIG. 2 is a block diagram showing an electrical configuration of the game apparatus 10. Referring to FIG. 2, the game apparatus 10 includes an electronic circuit board 38, and on the electronic circuit board 38, a circuit component such as a CPU core 34, etc. is mounted. The CPU core 34 is connected to the above-described connectors 32 via a bus 40, and is connected with a RAM 42, a first graphics processing unit (GPU) 44, a second GPU 46, an input-output interface circuit (hereinafter, referred to as “I/F circuit”) 48, and an LCD controller 50.

The connector 32 is detachably connected with the memory card 28 as described above. The memory card 28 includes a ROM 28a and a RAM 28b, and although illustration is omitted, the ROM 28a and the RAM 28b are connected with each other via a bus and also connected with a connector (not shown) to be connected with the connector 32. Accordingly, the CPU core 34 gains access to the ROM 28a and the RAM 28b as described above.

The ROM 28a stores in advance a game program for a game to be executed by the game apparatus 10, image data (text and object image, background image, item image, icon (button) image, message image, etc.), data of the sound (music) necessary for the game (sound data), etc. The RAM (backup RAM) 28b stores (saves) proceeding data of the game, result data of the game, etc.

The RAM 42 is utilized as a buffer memory or a working memory. That is, the CPU core 34 loads the game program, the image data, the sound data, etc. stored in the ROM 28a of the memory card 28 into the RAM 42, and executes the loaded game program. The CPU core 34 executes a game process while storing data (game data, flag data, etc.) generated or obtained in correspondence with a progress of the game in the RAM 42.

It should be noted that the game program, the image data, the sound data, etc. are stored (loaded) from the ROM 28a entirely at a time, or partially and sequentially so as to be stored into the RAM 42.

However, a program as to an application except for the game and image data required to execute the application may be stored in the ROM 28a of the memory card 28. In addition, sound (music) data may be stored therein as necessary. In such a case, in the game apparatus 10, the application is executed.

Each of the GPU 44 and the GPU 46 forms a part of a rendering means, is constructed by, for example, a single chip ASIC, and receives a graphics command (rendering command) from the CPU core 34 to generate image data according to the graphics command. It should be noted that the CPU core 34 applies an image generation program (included in the game program) required to generate the image data to both of the CPU 44 and GPU 46 in addition to the graphics command.

Furthermore, the GPU 44 is connected with a first video RAM (hereinafter referred to as “VRAM”) 52, and the GPU 46 is connected with a second VRAM 54. The GPU 44 and the GPU 46 respectively access the first VRAM 52 and the second VRAM 54 to obtain data (image data: polygon data, texture data, etc.) required to execute the rendering command.

It should be noted that the CPU core 34 writes image data necessary for rendering to the first VRAM 52 and the second VRAM 54 via the GPU 44 and the GPU 46. The GPU 44 accesses the VRAM 52 to create image data for rendering, and the GPU 46 accesses the VRAM 54 to create image data for rendering.

The VRAM 52 and the VRAM 54 are connected to the LCD controller 50. The LCD controller 50 includes a register 56, and the register 56 consists of, for example, one bit, and stores a value of “0” or “1” (data value) according to an instruction of the CPU core 34. The LCD controller 50 outputs the image data created by the GPU 44 to the LCD 12, and outputs the image data created by the GPU 46 to the LCD 14 in a case that the data value of the register 56 is “0”. Additionally, the LCD controller 50 outputs the image data created by the GPU 44 to the LCD 14, and outputs the image data created by the GPU 46 to the LCD 12 in a case that the data value of the register 56 is “1”.

It should be noted that the LCD controller 50 can directly read the image data from the VRAM 52 and the VRAM 54, or read the image data from the VRAM 52 and the VRAM 54 via the GPU 44 and the GPU 46.

The I/F circuit 48 is connected with the operating switch 22, the touch panel 24 and the speakers 36a, 36b. Here, the operating switch 22 is the above-described switches 22a, 22b, 22c, 22d, 22e, 22L and 22R, and in response to an operation of the operating switch 22, a corresponding operation signal (operation data) is input to the CPU core 34 via the I/F circuit 48. Furthermore, the coordinates data output from the touch panel 24 is input to the CPU core 34 via the I/F circuit 48. In addition, the CPU core 34 reads from the RAM 42 the sound data necessary for the game such as a game music (BGM), a sound effect or voices of a game character (onomatopoeic sound), etc., and outputs it from the speakers 36a, 36b via the I/F circuit 48.

FIG. 3 is one example of a game screen 300 to be displayed on the LCD 12 and a game screen 320 to be displayed on the LCD 14 in a case that a virtual game (puzzle game) in this embodiment is played by utilizing the game apparatus 10 shown in FIG. 1 and FIG. 2. The game screen 300 includes rotating objects (gear objects) 302, 304, 306. The three gear objects 302, 304, 306 are displayed so as to be arranged in a straight line in a longitudinal direction. The gear object 302 is provided with two socket objects 302a, 302b as acceptor units (see FIG. 5), and ball objects 312a, 312b are held in the socket objects 302a, 302b, respectively. The gear object 304 is provided with two socket objects 304a, 304b (see FIG. 5), and ball objects 314a, 314b are held in the socket objects 304a, 304b, respectively. The gear object 306 is provided with two socket objects 306a, 306b (see FIG. 5), and ball objects 316a, 316b are held in the socket objects 306a, 306b, respectively.

Furthermore, the game screen 320 includes three gear objects 322, 324, 326, and the three gear objects 322, 324, 326 are displayed so as to be arranged in a straight line in a longitudinal direction. The gear object 322 is provided with two socket objects 322a, 322b, the gear object 324 is provided with two socket objects 324a, 324b, and the gear object 326 is provided with two socket objects 326a, 326b.

It should be noted that the game screen 300 and the game screen 320 shown in FIG. 3 are merely one example. For example, the ball objects 312a, 312b, 314a, 314b, 316a, 316b may be held in any socket objects 302a, 302b, 304a, 304b, 306a, 306b, 322a, 322b, 324a, 324b, 326a, 326b. Furthermore, the alignment of the gear objects 302, 304, 306 displayed on the game screen 300 and the alignment of the gear objects 322, 324, 326 displayed on the game screen 320 may be a different way.

Describing briefly the puzzle game in this embodiment, a touch panel 24 is provided on the LCD 14 as described above, and the player can rotate the gear objects (322, 324, 326) by making a sliding operation on the gear objects (322, 324, 326) by means of the stick 26. Furthermore, at this time, the gear objects (302, 304, 306) in conjunction with the gear objects (322, 324, 326) is also rotated. In the example shown in FIG. 3, the gear object 302 and the gear object 322 are operatively associated. Although illustration is omitted, the gear object 304 and the gear object 324 are operatively associated. Although illustration is further omitted, the gear object 306 and the gear object 326 are operatively associated.

For example, other gear object (302, 304, 306) corresponding to a certain gear object (322, 324, 326) may be rotated in the direction the same as that of the certain gear object (322, 324, 326), or may reversely rotated. Furthermore, in this embodiment, the rotation amount (rotation angle) is made equal, but may be more or less that it. In addition, two or more gear objects (302, 304, 306) may be brought into correspondence with one gear object (322, 324, 326). These may be set by a programmer or a developer of the puzzle game at his or her own discretion.

Furthermore, as shown in FIG. 3, colors (shown by a sloped line pattern, a striped pattern, and a mesh pattern for the sake of drawings) are applied to the ball objects 312a, 312b, 314a, 314b, 316a, 316b, and colors are also applied to the gear objects 322, 324, 326. As understood from FIG. 3, a color (“sloped line pattern” in FIG. 3) the same as the gear object 322 is applied to each of the ball objects 312a, 312b. Furthermore, a color (“vertical striped pattern” in FIG. 3) the same as the gear object 324 is applied to each of the ball objects 314a, 314b. In addition, a color (“mesh pattern” in FIG. 3) the same as the gear object 326 is applied to each of the ball objects 316a, 316b.

In this embodiment, two socket objects (302a, 302b), (304a, 304b), (306a, 306b), (322a, 322b), (324a, 324b), and (326a, 326b) are provided to the gear objects 302, 304, 306, 322, 324, 326, respectively. However, this is a merely example, at least one socket object is only needed to one gear object, or three or more socket objects may be provided. It should be noted that as described later, since the gear object is allowed to be rotated or stopped for each predetermined angle (15° angle in this embodiment), the number of socket objects provided for each predetermined angle is the maximum number of socket objects.

As described above, the gear object (322, 324, 326) are rotated to also rotate the gear object (302, 304, 306). When the socket objects (302a, 302b, 304a, 304b, 306a, 306b, 322a, 322b, 324a, 324b, 326a, 326b) of adjacent gear objects (302, 304, 306, 322, 324, 326) satisfy a predetermined relationship, the ball object (312a, 312b, 314a, 314b, 316a, 316b) move from the one socket object to the other socket object which satisfy the predetermined relationship.

For example, as shown in FIG. 4(A), the ball object 314a (or 314b) is held in the socket object 322b of the gear object 322 on the game screen 320. When the gear object 322 is rotated by a player's touch operation as shown in FIG. 4(B), the socket object 322b of the gear object 322 and the socket object 324b of the gear object 324 are arranged in a straight line. At this time, the ball object 314a (or 314b) moves from the socket object 322a (or 322b) to the socket object 324a (or 324b). That is, the ball object 314a (or 314b) moves from the gear object 322 to the gear object 324.

In this manner, each of the ball objects 312a, 312b, 314a, 314b, 316a, 316b is moved, and as shown in FIG. 5, when each of the ball objects 312a, 312b, 314a, 314b, 316a, 316b moves to the gear object (322, 324, 326) applied with the color the same as each of the ball objects 312a, 312b, 314a, 314b, 316a, 316b, the puzzle game is cleared.

Although detailed description is omitted, the game screen 300 and the game screen 320 are operatively associated with each other, so that the ball object (312a, 312b, 314a, 314b, 316a, 316b) can move from the gear object 306 to the gear object 322. That is, in a normal case, the ball object (312a, 312b, 314a, 314b, 316a, 316b) moves from the upper portion of the game screen 300 to the lower portion of the game screen 320. However, the ball object (312a, 312b, 314a, 314b, 316a, 316b) can be moved from the gear object 326 to the gear object 302. This is because of the prevention of a so-called stalemate situation as in immovability of the ball object (312a, 312b, 314a, 314b, 316a, 316b). It should be noted that depending on the level or the like of the game, the ball object (312a, 312b, 314a, 314b, 316a, 316b) may not be moved from the lower game screen 320 to the upper game screen 300.

By utilizing drawings, a rotation of the gear object (302, 304, 306, 322, 324, 326), a predetermined relationship between the socket objects (302a, 302b, 304a, 304b, 306a, 306b, 322a, 322b, 324a, 324b, 326a, 326b), and a movement of the ball object (312a, 312b, 314a, 314b, 316a, 316b) are explained in detail below.

Referring to FIG. 6, the rotation of the gear object (322, 324, 326) (calculation method of a rotation amount) by an operation (touch operation) of the player is explained. It should be noted that in FIG. 6, for simplicity, the socket objects 322a, 322b, 324a, 324b, 326a, 326b and the ball objects 312a, 312b, 314a, 314b, 316a, 316b are omitted.

As shown in FIG. 6, assuming that a touch operation (sliding operation) is executed on the gear object (302, 304, 306, 322, 324, 326). Here, f0 is a touched position at a current frame (current frame), and f1 is a touched position at a frame (preceding frame) immediately before. Furthermore, the frame is a screen updating rate ( 1/60 seconds in this embodiment). The rotation amount L of the gear object (322, 324, 326) taking the center c of the gear object 322, 324, 326 as a center is calculated in response to the touch operation.

First, a vector V0 is evaluated from the coordinates of the center c (central coordinates) of the gear object (322, 324, 326) and a touched position (touched coordinates) f0 of the current frame. Here, with respect to the vector V0, the central coordinates are a starting point, and the touched position f0 is an end point. Next, the vector V0 is normalized to evaluate a vector U0. The vector U0 is a unit vector of the vector V0. Succeedingly, a position on the circumference r0 of the gear object (322, 324, 326) corresponding to the touched coordinates at the current frame f0 is evaluated from Equation 1.


r0=|f0−c|×r+c [Equation 1]

It should be noted that |f0−c| is the unit vector U0 obtained by normalizing the vector V0 (=f0−c).

Similarly, a position on the circumference r1 of the gear object (322, 324, 326) corresponding to the touched position at the preceding frame f1 is evaluated from Equation 2.


r1=|f1−c|×r+c [Equation 2]

It should be noted that |f1−c| means the unit vector obtained by normalizing the vector V1 (=f1−c).

Furthermore, a vector rV is evaluated from the position on the circumference (position coordinate) r0 obtained from Equation 1 and the position r1 obtained from Equation 2. As to the vector rV, the position r1 is regarded as a starting point, and the position r0 is regarded as an end point. Then, according to Equation 3, a rotation amount L of the gear object (322, 324, 326) is evaluated.


L1=(U0x×(−rVy))+(U0y×rVxk


(0≦k≦1) [Equation 3]

Here, U0x is an X component of the vector U0, U0y is a Y component of the vector U0, rVx is an X component of the vector rV, and rVy is a Y component of the vector rV.

According to the rotation amount L thus calculated, the gear object (322, 324, 326) is rotated (displayed so as to be rotated) to thereby rotate the gear object (302, 304, 306) operatively associated therewith. In this embodiment, the clockwise direction is a positive rotation direction, and the counterclockwise direction is a negative rotation direction.

Here, as shown in FIG. 7, a ball object and an invisible socket object are arranged according to their angle offset value when the game screen 300 and the game screen 320 are displayed. In this embodiment, a reference position or a reference direction is an upper direction of the gear object (302, 304, 306, 322, 324, 326) and an invisible gear object (402, 404, 406, 422, 424, 426 (see FIG. 8)) described later. The angle offset value is set taking the upper direction as 0° angle.

It should be noted that in FIG. 7, ba is an angle offset value of the ball object held in the socket object of the gear object, and s′a is an angle offset value of the invisible socket object set in correspondence with the gear object. Furthermore, in this embodiment, an offset value of the rotation angle in the left direction (counterclockwise) from the reference position is represented by minus, whereas an offset value of the rotation angle in the right direction (clockwise) from the reference position is represented by plus. That is, the angle offset value is set between −180° angle to +180° angle.

Furthermore, the gear object (302, 304, 306, 322, 324, 326) is rotated according to an operation by the player to thereby rotate the ball object (312a, 312b, 314a, 314b, 316a, 316b). Thus, the angle offset values of the gear object (302, 304, 306, 322, 324, 326) and the ball object (312a, 312b, 314a, 314b, 316a, 316b) are updated every rotation.

Accordingly, in a case that the gear object (302, 304, 306, 322, 324, 326) is rotated, the offset value is added to the rotation amount L calculated as described above, and then, a positional relationship (angular difference A described later) between the socket objects provided in the adjacent gear objects is determined. Similarly, a positional relationship (angular difference A′ described later) between the ball object and an invisible socket object provided to a gear object adjacent to the gear object provided with the ball object is determined.

However, as described later, the invisible gear object is not rotated, and therefore, as to the invisible socket object (invisible socket object) provided thereto, only the angle offset value may be considered without taking the rotation amount into account.

Furthermore, in this embodiment, the gear object (302, 304, 306, 322, 324, 326) is rotated by a rotation amount L, but the rotated position may be corrected such that the gear object is rotated every predetermined angle. For example, if the rotation angle of the socket object (302a, 302b, 34a, 304b, 306a, 306b, 322a, 322b, 324a, 324b, 326a, 326b) according to the rotation amount L is an integral multiple of a predetermined angle ±7.5, the rotation amount L is adjusted so as to become the integral multiple angle.

For example, in a case that the rotation amount L is 37° angle, the rotation angle is 15° angle×2(30° angle)+7° angle, the rotation amount L at this time is adjusted to 30° angle. Furthermore, if the rotation amount L is 55° angle, the rotation angle is 15×4 (60° angle)−5° angle, and the rotation amount L at this time is adjusted to 60° angle at this time.

Next, a predetermined relationship between the socket objects (302a, 302b, 304a, 304b, 306a, 306b, 322a, 322b, 324a, 324b, 326a, 326b) is explained.

As shown in FIG. 8(A) and FIG. 8(B), a layer 400 and a layer 420 on which invisible gear object corresponding to the gear objects are arranged are set on the game screen 300 and the game screen 320, respectively. Although illustration is omitted, since the layer 400 and the layer 420 are set under the layer on which the game images as to the game screen 300 and the game screen 320 are drawn, that is, at the depth from the viewpoint, the layer 400 and the layer 420 are never displayed on the game screen 300 and the game screen 320, respectively. It should be noted that in a case that invisible gear objects and invisible socket objects described later are made transparent, and the layer provided therewith are also made transparent, the layers 400 and 420 are placed in front of the layer (on the side of the viewpoint) on which the game images of the game screen 300 and the game screen 320 are drawn.

As shown in FIG. 8(A), on the layer 400, invisible disk objects (hereinafter, referred to as an invisible gear object) 402, 404, 406 are provided by being brought into correspondence with the gear objects 302, 304, 306, respectively. The invisible gear object 402 is provided with invisible socket objects 402a, 402b, the invisible gear object 404 is provided with invisible socket objects 404a, 404b, and the invisible gear object 406 is provided with invisible socket objects 406a, 406b.

Furthermore, as shown in FIG. 8(B), on the layer 420, invisible gear objects 422, 424, 426 are provided by being brought into correspondence with gear objects 322, 324, 326. The invisible gear object 422 is provided with invisible socket objects 422a, 422b, the invisible gear object 424 is provided with invisible socket objects 424a, 424b, and the invisible gear object 426 is provided with invisible socket objects 426a, 426b.

The invisible gear object (402, 404, 406, 422, 424, 426) is fixedly arranged, and never rotated unlikely to the gear object (302, 304, 306, 322, 324, 326). Accordingly, the position of the invisible socket object (402a, 402b, 404a, 404b, 406a, 406b, 422a, 422b, 424a, 424b, 426a, 426b) is never changed.

The invisible gear object (402, 404, 406, 422, 424, 426) and the invisible socket object (402a, 402b, 404a, 404b, 406a, 406b, 422a, 422b, 424a, 424b, 426a, 426b) are provided for determining whether or not they have a predetermined relationship with the socket object (302a, 302b, 304a, 304b, 306a, 306b, 322a, 322b, 324a, 324b, 326a, 326b) of the gear object (302, 304, 306, 322, 324, 326) corresponding to the invisible object. It should be noted that the invisible socket object (402a, 402b, 404a, 404b, 406a, 406b, 422a, 422b, 424a, 424b, 426a, 426b) is set only to the gear object (302, 304, 306, 322, 324, 326) on which a connection setting is made.

With reference to FIG. 9, a connection setting is described. Referring to FIG. 9, assuming that gear objects C1, C2, C3 are arranged in a straight line, and invisible gear objects B1, B2, B3 are set by being brought into correspondence with the respective gear objects.

FIG. 9 shows that the gear objects C1-C3 and the invisible gear objects B1-B3 are arranged in the same plane, but are actually arranged in different layers as described above.

As shown in FIG. 9, there is no connection setting between the gear object C1 and the gear object C2. Thus, even if a socket object S1 (or S2) of the gear object C1 and a socket object S3 (or S4) of the gear object C2 are arranged in a straight line, a ball object (omitted in FIG. 9) never moves from the gear object C1 to the gear object C2 or from the gear object C2 to the gear object C1. In such a case, the connection state (ball object movable state) need not to be determined, and therefore, the respective invisible gear object B1 and the invisible gear object B2 are not provided with invisible socket objects on the side approaching one another.

However, there is a connection setting between the gear object C2 and the gear object C3. More specifically, the connection setting is performed on the gear object C2 such that the ball object can move from the gear object C2 to the gear object C3. Thus, the invisible gear object B2 and the invisible gear object B3 are respectively provided with an invisible socket object BS1 and an invisible socket object BS2 on the sides approaching to one another.

In such a case, when the socket object S3 (or S4) of the gear object C2 exists at a position (the angular difference is equal to or less than 5° angle in this embodiment. The same will be applied hereinafter.) overlapping the invisible socket object BS1 of the invisible gear object B2, and a socket object S5 (or S6) of the gear object C3 exists at a position overlapping an invisible socket object BS2 of the invisible gear object B3, a predetermined relationship is satisfied, and that the socket object S3 (or S4) and the socket object S5 (or S6) are in a connected state is set by a flag (described later “connection flag”). That is, the predetermined relationship means that the respective socket objects provided in the two gear objects on which the connection setting is performed exist at positions overlapping with the invisible socket objects respectively corresponding to the gear objects. At this time, the two socket objects are arranged in a straight line or approximate straight line.

Here, with reference to FIG. 10, a determination method whether or not socket objects S11, S12 respectively provided in adjacent two gear objects C11, C12 are in a connected state will be explained. In FIG. 10, the rotation amount of the gear object C11 is L, and the angle offset value is sa. On the other hand, the rotation amount of the gear object C12 is L′, and the angle offset value is s′a. It should be noted that in this embodiment, the reference position for calculating the rotation amounts L, L′ is set to the same position (direction) with respect to the gear object (302, 304, 306, 322, 324, 326). Accordingly, where out of the adjacent two gear objects C11, C12, the rotation amount of the gear object C11 of the noting one is L, and the rotation amount of the other adjacent gear object C12 is L′, the angular difference A between the socket object S11 and socket object S12 can be evaluated from Equation 4. Each of the angle offset value sa and s′a is decided by an angle displaced from the reference position when the gear objects C11, C12 are displayed, but after one rotation, it is updated to the angle after rotation from the reference position.


A=|(sa+L)−(s′a+L′)−180| [Equation 4]

It should be noted that |•| means an absolute value. Additionally, in this embodiment, the reference position is set to the same position (direction) with respect to all the gear objects (302, 304, 306, 322, 324, 326), and therefore, the angular difference A is evaluated by subtraction of 180° angle, but if the reference position of the adjacent gear objects is displaced by 180° angle, there is no need of the subtraction.

Then, in a case that the angular difference A calculated according to Equation 4 is less than a predetermined angle (5° angle, for example), the connected state is set while in a case that the angular difference A is equal to or more than the predetermined angle, the connected state is not set.

Returning to FIG. 9, in a case that the connected state is set, the ball object held in the socket object S3 (or S4) of the gear object C2 is moved to and held in the socket object S5 (or S6) of the gear object C3. However, even if the connected state is set, but the ball object is not held in the socket object S3 (or S4) of the gear object C2, the ball object is naturally never moved to the socket object S5 (or S6) of the gear object C3.

Here, since there is no connection setting from the gear object C3 to the gear object C2, even if the connected state is set, the ball object is never moved from the socket object S5 (or S6) of the gear object C3 to the socket object S3 (or S4) of the gear object C2.

Next, as shown in FIG. 11, the position of a ball object held in a socket object not illustrated) of a gear object C11 and the position of a socket object in which the ball object is to be accepted when the ball object is moved from the gear object C11 to a gear object C12 are respectively shown in Equation 5 and Equation 6.

X component and Y component of position coordinates of the ball object


x=(p+q)×cos(sa)+(p+q)×(−sin(sa))


y=(p+q)×sin(sa)+(p+q)×cos(sa) [Equation 5]

X component and Y component of position coordinates of the socket object


x=p×cos(sa)+(−sin(sa))


y=p×sin(sa)+p×cos(sa) [Equation 6]

Here, p is the distance from the center of the gear object C12 to the center of the invisible socket object of the gear object C12. Furthermore, q is the distance from the center of the invisible socket object of the gear object C12 to the center of the ball object of the gear object C11.

By means of the position coordinates of the ball object and the socket object, the ball object is moved. It should be noted that when the ball object moves from the gear object C11 to the gear object C12, the distance q is reset. More specifically, the distance q is subtracted for each frame until the distance q becomes 0 (q=0). Accordingly, a scene in which the ball object moves from the gear object C11 to the gear object C12 is displayed on the game screen 300 and the game screen 320.

It should be noted that whether the ball object is moveable or not is determined on the basis of the angular difference A′ between a ball object held in a socket object of a certain gear object and an invisible socket object provided at a position to which the ball object has to be moved in other gear object on which a connection setting with the certain gear object is performed. The angular difference A′ is calculated according to Equation 7. The calculation method of the angular difference A′ is similar to the calculation method of the angular difference A. It should be noted that the rotation amount of the ball object is the same as the rotation amount L of the socket object holding the ball object. Furthermore, since the invisible socket object is fixedly provided, only the angle offset value bsa is considered. As understood from FIG. 11, the reference position for deciding the angle offset value bsa of the invisible socket object is an upper direction of the invisible gear object similar to the gear object.


A′=|bsa−(sa+L)−180| [Equation 7]

When the angular difference A′ is less than the predetermined angle (5° angle in this embodiment), it is determined that the ball object is moveable. Then, if the socket object holding the ball object and a socket object corresponding to the invisible socket object about which the angular difference A′ is evaluated are in the connected state, the ball object is moved.

FIG. 12 is an illustrative view showing a memory map of the RAM 42 shown in FIG. 2. As shown in FIG. 12, the RAM 42 includes a program memory area 70 and a data memory area 72. The program memory area 70 stores a puzzle game program, and the puzzle game program is made up of a game main processing program 70a, an image generating program 70b, an image displaying program 70c, an image updating program 70d, an instructed position detecting program 70e, a gear object rotating processing program 70f, a socket connection determining program 70g, a ball movement processing program 70h, a game clear processing program 70i, etc.

The game main processing program 70a is a program for processing a main routine of the puzzle game in this embodiment. The image generating program 70b is a program for generating a game image including respective objects by utilizing image data (data such as a polygon, a texture) described later. Furthermore, the image generating program 70b also generates a layer including respective invisible gear objects by utilizing polygon data (100b, etc.) described later. The image displaying program 70c is a program for displaying the game image generated according to the image generating program 70b as game screens (300, 320) on the LCDs 12, 14. The image updating program 70d is a program for updating a game image (game screen) to be displayed on the LCDs 12, 14.

The instructed position detecting program 70e is a program for detecting the presence or absence of coordinate data from the touch panel 24, and when coordinate data is present, fetching the coordinate data to store the same in the data memory area 72. The gear object rotating processing program 70f is a program for rotating the gear object (302, 304, 306, 322, 324, 326) according to an operation by the player. The gear object rotating processing program 70f controls not only the rotation of the gear object (322, 324, 326) directly rotated by the player, but also the rotation of the gear object (302, 304, 306) operatively associated therewith.

The socket connection determining program 70g is a program for determining whether or not the socket objects (302a, 302b, 304a, 304b, 306a, 306b, 322a, 322b, 324a, 324b, 326a, 326b) provided to the adjacent gear objects (302, 304, 306, 322, 324, 326) are in the connected state. More specifically, when a noting socket object (302a, 302b, 304a, 304b, 306a, 306b, 322a, 322b, 324a, 324b, 326a, 326b) of a noting gear object (302, 304, 306, 322, 324, 326) overlaps a corresponding invisible socket object (402a, 402b, 404a, 404b, 406a, 406b, 422a, 422b, 424a, 424b, 426a, 426b), the presence or absence of the connection setting with an adjacent gear object is determined. Next, the angular difference A between the noting socket object and the socket object provided to the gear object on which the connection setting is performed is calculated. On the basis of the angular difference A whether the connected state or not is determined. In this embodiment, in a case that the angular difference A is less than the predetermined angle (5° angle) for example, it is determined to be the connected state. Then, when it is determined to be the connected state, data or a flag showing the connected state with respect to the two socket objects which are in the connected state is stored (set) in the RAM 42.

Here, whether or not the socket object overlaps the invisible socket object is determined by whether or not the angular difference B is less than the predetermined angle (5° angle, for example). If the angular difference B is less than the predetermined angle, it is determined that the socket object overlaps the invisible socket object. It should be noted that the angular difference B is calculated according to Equation 8.


B=|bsa−(sa+L)| [Equation 8]

The ball movement processing program 70h is a program for moving the ball object (312a, 312b, 314a, 314b, 316a, 316b) held in the gear object (302, 304, 306, 322, 324, 326) to other gear object. More specifically, the angular difference A′ between the ball object (312a, 312b, 314a, 314b, 316a, 316b) and the invisible socket object (402a, 402b, 404a, 404b, 406a, 406b, 422a, 422b, 424a, 424b, 426a, 426b) provided in other gear object except for the gear object (302, 304, 306, 322, 324, 326) holding the ball object is calculated. In a case that the angular difference A′ is less than the predetermined angle (5′ angle, for example), and the socket object (302a, 302b, 304a, 304b, 306a, 306b, 322a, 322b, 324a, 324b) holding the ball object and the socket object corresponding to the invisible socket object are in the connected state, the ball object is moved according to the connection setting.

The game clear processing program 70i is a program for determining whether or not the puzzle game is to be cleared, and for executing clear processing when the puzzle game is cleared. For example, in a case that the puzzle is solved, a message showing that it is possible to clear the stage or the level is displayed on the game screen 300 (or game screen 320) to allow a puzzle game at a next state or level to be played. It should be noted that in this embodiment, when each of the ball objects 312a, 312b, 314a, 314b, 316a, 316b are held in the gear objects 322, 324, 326 each applied with the color the same as that of each of the ball objects, it is determined to be a game clear (that the puzzle is solved).

Although illustration is omitted, the puzzle game program includes a game sound outputting program and a backup program. The game sound outputting program is a program for outputting sound necessary for the game such as sound effect, voice (onomatopoeic sound), BGM, etc. by means of sound (music) data. The backup program is a program for storing (saving) the game data (proceeding data, result data) stored in the RAM 42 in the RAM 28b of the memory card 28.

Furthermore, the data memory area 72 is provided with an instructed position memory area 72a and an object data memory area 72b. In the data memory area 72, score data 72c is stored, and a touch-on flag 72d is provided.

In the instructed position memory area 72a, current frame's touched position coordinate data 720 and preceding frame's touched position coordinate data 722 are stored. It should be noted that directly after the start of the puzzle game, the coordinate data 722 of the touched coordinates at the preceding frame is not stored. Although detailed description is omitted, before the current frame's touched position coordinate data 720 is stored, the coordinate data 720 stored in the instructed position memory area 72a is stored (overwritten by) in the preceding frame's touched position coordinate data.

The object data memory area 72b further includes a gear object data memory area 724, a ball object data memory area 726 and an invisible gear object data memory area 728.

As shown in FIG. 13, the gear object data memory area 724 stores first gear object data 80, second gear object data 82, and so on. The first gear object data 80 is only described below, but this will be applied to other gear object data such as the second gear object data 82, etc.

As shown in FIG. 13, the first gear object data 80 includes image data 80a, positional data 80b, color data 80c, rotation amount data 80d, cooperative gear setting data 80e, connection setting data 80f and socket object data 80g.

The image data 80a is image data (data such as a polygon, a texture, etc.) for drawing the first gear object (except for the socket object described later). By the image data 80a also, the size (and shape) of the first gear object is decided. The positional data 80b is coordinate data of the three-dimensional position of the first gear object. However, if a position (position in the Z direction) of the layer (400) on which the first gear object is arranged is separately stored, the position on the layer except for the depth direction (Z-axis direction) of the three-dimensional virtual space (two-dimensional coordinates) only need to be stored.

The color data 80c is data as to a color applied to the first gear object. The rotation amount data 80d is data of the rotation amount L (angle data) calculated according to the above-described Equation 3 according to an operation by the player. The cooperative gear setting data 80e is data of identification information as to a gear (other gear object) operatively associated with the first gear object or an address pointer storing other gear object data. With respect to the other gear object, the rotation amount is decided by the above-described rotation amount data 80d. Additionally, the rotation direction is decided by the sign (+, −) of the rotation amount data 80, but if the rotation direction is reversed, the sign is reversed. Furthermore, in a case that the rotation amount is changed, a magnification ratio depending on the change is multiplied by the rotation amount L indicated by the rotation amount data 80.

The connection setting data 80f is data of identification information of other gear object on which the connection setting is performed with the first gear object and an address pointer storing other gear object data. The data stored in the connection setting data 80f is data of identification information, etc. of other gear object when the ball object can move from the first gear object to the other gear object. Accordingly, in a case that the ball object can move from the other gear object to the first gear object, data of the identification information of the first gear object or an address pointer storing the first gear object data 80 are stored in the connection setting data of the other gear object.

The socket object data 80g is data of the socket object provided to the first gear object, and includes first socket object data 800, second socket object data 802, and so on. Only the first socket object data 800 is described below, but this will be applied to other socket object data such as the second socket object data 802, etc.

As shown in FIG. 13, the first socket object data 800 includes image data 800a, positional data 800b, angle offset value data 800c, a connection flag 800d, and a coincidence flag 800e.

The image data 800a is image data (data, such as a polygon, a texture, etc.) for drawing the first socket object. The positional data 800b is coordinate data of the position (three-dimensional position) of the first socket object. In a case that a Z coordinate of the layer (400) on which the first socket object is arranged is separately stored, the coordinate data of the two-dimensional coordinates of the first socket object on the layer is stored. The angle offset value data 800c is angle data of the angle sa as to the position of the first socket object with respect to the reference position of the first gear object provided with the first socket object as described above.

The connection flag 800d is a flag for determining whether or not the first socket object is in a connected state with other socket object. For example, the connection flag 800d is made up of one bit register, and if the connection flag 800d is turned on (established), a data value “1” is stored in the register, and if the connection flag 800d is turned off (unestablished), the data value “0” is stored in the register. Here, if the first socket object is in the connected state with other socket object, the connection flag 800d is turned on. On the other hand, if the first socket object is not in the connected state with other socket object, the connection flag 800d is turned off. The turning on and off of the connection flag 800d is executed according to the socket connection determining program 70g.

The coincidence flag 800e is a flag for determining whether or not the color applied to the ball object held in the first socket object is coincident with the color applied to the gear object provided with the first socket object. The coincidence flag 800e is made up of one bit register, and if the coincidence flag 800e is turned on, a data value “1” is stored in the register, and if the coincidence flag 800e is turned off, a data value “0” is stored in the register. Here, if the color applied to the ball object held in the first socket object and the color applied to the gear object provided with the first socket object are coincident, the coincidence flag 800e is turned on. On the other hand, if the color applied to the ball object held in the first socket object and the color applied to the gear object provided with the first socket object are not coincident, the coincidence flag 800e is turned off.

FIG. 14 is an illustrative view showing the ball object data memory area 726 shown in FIG. 12 in detail. The ball object data memory area 726 stores data, etc. of the first ball object and the second ball object (90, 92) utilized in the puzzle game. Only the first ball object data 90 is described below, but this will be applied to other ball object data such as the second ball object data 92, etc.

As shown in FIG. 14, the first ball object data 90 includes image data 90a, positional data 90b, color data 90c and angle offset value data 90d.

The image data 90a is image data (data such as a polygon, a texture, and etc.) for drawing a first ball object. Also, the size (shape) of the first ball object is decided by the image data. The positional data 90b is coordinate data of the position (three-dimensional position) of the first ball object. However, if a Z coordinate of the layer (400) on which the first ball object is arranged is separately stored, the coordinate data in the two-dimensional coordinates of the first ball object on the layer is stored. The color data 90c is data as to a color applied to the first ball object. The angle offset value data 90d is angle data of the angle ba as to the position of the ball object with respect to the reference position of the gear object provided with the first ball object.

FIG. 15 is an illustrative view showing an invisible gear object data memory area 728 shown in FIG. 12 in detail. As shown in FIG. 15, in the invisible gear object data memory area 728, first invisible gear object data 100, second invisible gear object data 102, and so on are stored. Only the first invisible gear object data 100 is described below, but this will be applied to other invisible gear object such as the second invisible gear object data 102, etc.

As shown in FIG. 15, the first invisible gear object data 100 includes positional data 100a, polygon data 100b and invisible socket object data 100c.

The positional data 100a is coordinate data of the position (three-dimensional position) of the first invisible gear object. However, if a Z coordinate of the layer (400) on which the first invisible gear object is arranged is separately stored, the coordinate data in the two-dimensional coordinates of the first ball object on the layer is stored. The polygon data 100b is polygon data for forming the first invisible gear object. Here, since the first invisible gear object is formed by the polygon data 100b, the size (radius or diameter in this embodiment) is defined by the polygon data 100b.

The invisible socket object data 100c includes first invisible socket object data 1000, second invisible socket object data 1002, and so on. Only the first invisible socket object data 1000 will be described below, but this will be applied to other invisible socket object data such as the second invisible socket object data 1002.

As shown in FIG. 15, the first invisible socket object data 1000 includes positional data 1000a, polygon data 1000b and angle offset value data 1000c.

The positional data 1000a is coordinate data of the position (three-dimensional position) of the first invisible socket object. However, if a Z coordinate of the layer (420) on which the first invisible socket object is arranged is decided, coordinate data of the two-dimensional position on the layer is stored. The polygon data 1000b is polygon data for forming the first invisible socket object, and defines the size (radius or diameter in this embodiment) thereof. The angle offset value data 1000c is angle data of the angle s′a as to the position of the first invisible socket object with respect to the reference position of the first invisible gear object provided with the first invisible socket object.

Returning to FIG. 12, the data memory area 72 stores score data 72c as described above. The score data 72c is numerical value data of scores of the puzzle game to be added according to the progress of the game. Here, data as to a level of the player or the player character as well as the scores may be stored.

Furthermore, as described above, the data memory area 72 is provided with a touch-on flag 72d. The touch-on flag 72d is a flag for determining the presence or absence of a touch input (touch operation). The touch-on flag 72d is made up of one bit register, for example, and when the touch-on flag 72d is turned on, a data value “1” is set to the register, and if the touch-on flag 72d is turned off, a data value “0” is set to the register. It should be noted that if there is a touch operation, the touch-on flag 72d is turned on, and if there is no touch operation, the touch-on flag 72d is turned off. Additionally, the presence or absence of a touch operation can be easily informed by the presence or absence of the coordinate data.

More specifically, the CPU core 34 shown in FIG. 2 executes entire processing according to the flowchart shown in FIG. 16. As shown in FIG. 16, when starting the entire processing, the CPU core 34 performs an initial setting in a step S1. For example, when starting the game from the beginning, the CPU core 34 clears the buffer area of the RAM 42, resets various flags and a timer, and so forth. Furthermore, if the game is started from where the player left off in the previous play, the CPU core 34 clears the buffer area of the RAM 42, loads the save data stored in the RAM 28b, and so forth.

In a succeeding step S3, a game image is displayed. As shown in FIG. 3, a game screen 300 is displayed on the LCD 12, and a game screen 320 is displayed on the LCD 14. In a next step S5, it is determined whether or not the touch-on flag 72d is turned on. That is, it is determined whether or not there is a touch operation. If “NO” is determined in the step S5, that is, if the touch-on flag 72d is turned off, it is determined that there is no touch operation, the process proceeds to a step S13 as it is.

However, if “YES” is determined in the step S5, that is, if the touch-on flag 72d is turned on, it is determined that there is a touch operation, gear object rotating processing (see FIG. 17) described later is executed in a step S7, socket connection determining processing (see FIG. 18 and FIG. 19) described later is executed in a step S9, ball moving processing (see FIG. 20 and FIG. 21) described later is executed in a step S11, and then, the process proceeds to the step S13.

In the step S13, it is determined whether or not all the coincidence flags (800e, etc.) are turned on. That is, it is determined whether or not all the ball objects 312a, 312b, 314a, 314b, 316a, 316b are respectively held in the socket object 322a, 322b, 324a, 324b, 326a, 326b of the gear object 322, 324, 326 each applied with the color the same as that of each of the corresponding ball objects.

If “NO” is determined in the step S13, that is, if any one of the coincidence flags is turned off, it is determined that the game is not to be cleared, and the process proceeds to a step S17 as it is. On the other hand, if “YES” is determined in the step S13, that is, if all the coincidence flags are turned on, it is determined that the game is to be cleared, game clear processing is executed in a step S15, and then, the process proceeds to the step S17.

In the step S17, it is determined whether or not the game is to be ended. That is, it is determined whether or not the game is over, an instruction of the game end is issued from the player, and so forth. If “NO” is determined in the step S17, that is, if the game is not to be ended, it is determined that the game is to be continued, the process returns to the step S3. On the other hand, if “YES” is determined in the step S17, that is, if the game is to be ended, the entire processing is ended as it is.

FIG. 17 is a flowchart showing the gear object rotating processing in the step S7 shown in FIG. 16. As shown in FIG. 17, starting the gear object rotating processing, the CPU core 34 rests the variable i (i=1) in a step S31. Here, the variable i is set for counting the gear object. The same will be applied hereinafter. Next, in a step S33, a touched position f1 at the preceding frame is read, and in a step S35, a touched position f0 at the current frame is read. That is, the CPU core 34 reads the coordinate data 720 and the coordinate data 722 stored in the data memory area 72.

In a succeeding step S37, it is determined whether or not the touched position f0 and the touched position f1 are on a gear object i. That is, it is determined whether or not a touch operation is made on a gear object i. If “NO” is determined in the step S37, that is, if any one of the touched position f0 or the touched position f1 is not on a gear object i, it is determined that no touch operation for rotating the gear object i is made, and the process proceeds to a step S55.

However, if “YES” is determined in the step S37, that is, if the touched position f0 and the touched position f1 are on a gear object i, a vector V0 is evaluated from the center c of the gear object i and the touched position f0 at the current frame in a step S39. In addition, in a step S41, the vector V0 is normalized to evaluate a vector U0. Here, as described above, the vector U0 is a unit vector of the vector V0.

Successively, a position on the circumference r0 corresponding to the touched position f0 at the current frame is evaluated according to Equation 1 in a step S43, a position on the circumference r1 corresponding to the touched position f1 at the preceding frame is evaluated according to Equation 2 in a step S45, and a vector rV is evaluated from the position r0 and the position r1 in a step S47. Then, in a step S49, a rotation amount L is evaluated according to Equation 3.

Then, in a step S51, rotation processing of the gear object i is performed on the basis of the rotation amount L. Furthermore, in a step S53, rotation processing of a gear object j operatively associated with the gear object i is performed on the basis of the rotation amount L. For example, the gear object j is rotated in a direction the same or an opposite as and to the gear object i by an angle the same as the gear object i. Although illustration is omitted, when the rotation processing in the step S53 is executed, the angle offset value data (800c, etc.) of the socket object and the angle offset value data (90d, etc.) of the ball object are updated.

In the step S55, the variable i is added by 1 (i=i+1). Then, in a step S57, it is determined whether or not the variable i is above a maximum value imax. Here, the maximum value imax is a total number of gear objects. If “NO” is determined in the step S57, that is, if the variable i is equal to or less than the maximum value imax, the process returns to the step S33 as it is, and processing as to a next gear object i is executed. On the other hand, if “YES” is determined in the step S57, that is, if the variable i is above the maximum value imax, it is determined that processing as to all the gear objects i is completed, and the process returns to the entire processing.

FIG. 18 and FIG. 19 are a flowchart showing the socket connection determining processing in the step S9 shown in FIG. 16. When starting the socket connection determining processing as shown in FIG. 18, the CPU core 34 initializes the variable i (i=1) in a step S71. In a succeeding step S73, it is determined whether or not there is a connection setting of the gear object i. If “NO” is determined in the step S73, that is, if there is no connection setting of the gear object i, the process proceeds to a step S95 shown in FIG. 19.

However, if “YES” is determined in the step S73, that is, if there is a connection setting of the gear object i, a variable s is initialized (s=1) in a step S75. Here, the variable is set for identifying a socket object s provided in the gear object i. The same will be applied hereinafter. Successively, in a step S77, a variable s′ is initialized (s′=1). Here, the variable s′ is set for identifying a socket object s′ provided in other gear object i′ on which a connection setting with the gear object i is performed. Then, in a step S79, it is determined whether or not the socket object s provided in the gear object i overlaps the invisible socket object bs. More specifically, an angular difference B is calculated according to Equation 8, and then, it is determined whether or not the angular difference B is less than a predetermined angle (5° angle, for example).

If “NO” is determined in the step S79, that is, if the socket object s provided in the gear object i does not overlap the invisible socket object bs, the process proceeds to a step S93 shown in FIG. 19 as it is. On the other hand, if “YES” is determined in the step S79, that is, if the socket object s provided in the gear object i overlaps the invisible socket object bs, the angular difference A between the socket object s provided in the gear object i and the socket object s′ provided in the gear object i′ on which a connection setting with the gear object i is performed is evaluated according to Equation 4 in a step S81.

Next, in a step S83 shown in FIG. 19, it is determined whether or not the angular difference A is less than a definite angle m. In this embodiment, the definite angle m is set to 5° angle, but can arbitrarily be set between 0° angle to 360° angle. If “YES” is determined in the step S83, that is, if the angular difference A is less than the definite angle m, the socket object s and the socket object s′ are set to a connected state in a step S85, that is, a connection flag as to the socket object s is turned on, and the process proceeds to a step S89. On the other hand, if “NO” in the step 83, that is, if the angular difference A is equal to or more than the angle m, the socket object s and the socket object s′ are set to a disconnected state in a step S87, that is, the connection flag as to the socket object s is turned off, and the process proceeds to the step S89.

In the step S89, the variable s′ is added by one (s′=s′+1). That is, setting processing as to the presence or absence of the connected state is performed on a next socket object s′. Accordingly, in this embodiment, a connected state is established in one-to-one correspondence between the socket object s and the socket object s′, “YES” is determined in the step S83, and if the processing in the step S85 is executed, the process may proceed to a step S97 as it is.

In a next step S91, it is determined whether or not the variable s′ is a maximum value s′max. Here, the maximum value s′ max is a total number of socket object s′ provided in the gear object i′. That is, in the step S91, the CPU core 34 determines whether or not the processing as to all the socket objects s′ of the gear object i′ is to be completed.

If “NO” is determined in the step S91, that is, if the variable s′ is equal to or less than the maximum value s′ max, the process returns to the step S79 shown in FIG. 18. On the other hand, if “YES” is determined in the step S91, that is, if the variable s′ is above the maximum value s′max, the variable s is added by 1 (s=s+1) in the step S93. In the succeeding step S95, it is determined whether or not the variable s is above the maximum value smax.

If “NO” is determined in the step S95, that is, if the variable s is equal to or less than the maximum value smax, the process returns to the step S77 shown in FIG. 18. On the other hand, if “YES” is determined in the step S95, that is, if the variable s is above the maximum value smax, the variable i is added by 1 (i=i+1) in the step S97. Then, in a step S99, it is determined whether or not the variable i is above the maximum value imax.

If “NO” is determined in the step S99, that is, if the variable i is equal to or less than the maximum value imax, the process returns to the step S73 shown in FIG. 18. On the other hand, if “YES” is determined in the step S99, that is, if the variable i is above the maximum value imax, the process proceeds to the entire processing shown in FIG. 16.

FIG. 20 and FIG. 21 are a flowchart of the ball moving processing shown in the step S11 in FIG. 16. As shown in FIG. 20, starting the ball moving processing, the CPU core 34 initializes a variable b (b=1) in a step S111. Here, the variable b is set for identifying the ball object b. In a succeeding step S113, a rotation angle B (B=sa+L) of the ball object b is calculated. In a next step S115, a variable bs is initialized (bs=1). Here, the variable bs is set for identifying an invisible socket object bs. In a next step S117, an angular difference A′ between the ball object b and the invisible socket object bs is calculated according to Equation 7.

Succeedingly, in a step S119, it is determined whether or not the angular difference A′ is less than a definite angle k. In this embodiment, the definite angle k is set to 5° angle, but can arbitrarily be set between 0° angle to 360° angle. If “NO” is determined in the step S119, that is, if the angular difference A′ is equal to or more than the definite angle k, the process proceeds to a step S133 shown in FIG. 21. On the other hand, if “YES” is determined in the step S119, that is, if the angular difference A′ is less than the definite angle k, it is determined whether or not a connection flag between the socket object s holding the ball object b and a socket object s′ provided in the gear object i′ provided with respect to the invisible socket object bs is turned on in a step S121.

If “NO” is determined in the step S121, that is, if a connection flag between the socket object s holding the ball object b and a socket object s′ provided in the gear object i′ set with respect to the invisible socket object bs is turned off, the process proceeds to the step S133 as it is. On the other hand, if “YES” is determined in the step S121, that is, if a connection flag between the socket object s holding the ball object b and a socket object s′ provided in the gear object i′ set with respect to the invisible socket object bs is turned on, the ball object b is moved to the socket object s′ in a step S123, and in a step S125 shown in FIG. 21, color data of the ball object b and the gear object i′ in which the socket object s′ is provided are checked.

In a succeeding step S127, it is determined whether or not the colors of the ball object b and the gear object i′ are coincident with each other. If “YES” is determined in the step S127, that is, if the colors of the ball object b and the gear object i′ are coincident with each other, a coincidence flag set to the socket object s′ is turned on in a step S129, and the process proceeds to the step S133. On the other hand, if “NO” is determined in the step S127, that is, if the colors of the ball object b and the gear object i′ are not coincident with each other, the coincidence flag set to the socket object s′ is turned off in a step S131, and the process proceeds to the step S133.

In the step S133, the variable bs is added by 1 (bs=bs+1). Then, in a step S135, it is determined whether or not the variable bs is above a maximum value bsmax. If “NO” is determined in the step S135, that is, if the variable bs is equal to or less than the maximum value bsmax, the process returns to the step S117 shown in FIG. 20. On the other hand, if “YES” is determined in the step S135, that is, if the variable bs is above the maximum value bsmax, the variable b is added by 1 (b=b+1) in a step S137.

Then, in a step S139, it is determined whether or not the variable b is above a maximum value bmax. If “NO” is determined in the step S139, that is, if the variable b is equal to or less than the maximum value bmax, the process returns to the step S113 shown in FIG. 20. On the other hand, if “YES” is determined in the step S139, that is, if the variable b is above the maximum value bmax, the process returns to the entire processing shown in FIG. 16.

According to this embodiment, since the puzzle game is played by rotating the gear object to move the ball object, and therefore, it is possible to enjoy a novel puzzle game.

In this embodiment, for the sake of simplicity, an invisible gear object is provided by being brought into correspondence with a gear object, but at least an invisible socket object only need to be set, and therefore, it is possible to omit the invisible gear object. In such a case, it is possible to omit the data relating to the invisible gear object such as the positional data 100a, and the polygon data 100b, etc. as described by means of FIG. 15.

Furthermore, in this embodiment, the shapes of the gear object and the ball object are set to a circle in order to intuitively play the puzzle game as they look, but the shape need not to be restricted thereto. For example, the gear object and the ball object may take an arbitrary shape such as a polygon like a triangle, a quadrangle or a star.

In addition, in this embodiment, a touch panel is used as a pointing device, but it may be possible to use other pointing devices like a pen tablet, a touch pad, a computer mouse, and so on. It should be noted that in a case that other pointing device is used, an instruction image such as mouse pointer for indicating an instructed position on the screen need to be displayed.

In addition, the feature of the game apparatus should not be limited to the feature of the above-described embodiment. For example, one LCD is appropriate, or the touch panel may be provided on each of the two LCDs.

Although the present invention has been described and illustrated in detail, it is clearly understood that the same is by way of illustration and example only and is not to be taken by way of limitation, the spirit and scope of the present invention being limited only by the terms of the appended claims.