Today, let's preview the results of tonight, as shown in the following figure ):
Today, I mainly designed the selector to display the game list during the game and then use it to select an idiot function of the game.
The selector is based on yesterday's game class and I made some modifications to yesterday's code:
Copy codeThe Code is as follows:
// 5. Game class: name, logical method, keyboard method, start method, start level method, and end Method
Var Game = function (name, logicalFn, keyFn, startFn, loadFn, endFn ){
// Game name
This. _ name = name | "not named ";
// 5. a.1: Logical Control
This. _ LControl = logicalFn | function (date ){
// Simple game logic control
If (this. _ FrameMain ){
Var innHTML = "game time:" + date. getSeconds () + "second" + date. getMilliseconds ();
InnHTML + = "<br/> the current game is not written. You can press Esc to exit the game ;";
This. _ FrameMain. innerHTML = innHTML;
}
};
// 5.a.2: keyboard control
This. _ KControl = keyFn | function (event ){
// Simple keyboard Logic
Alert ("You knocked" + event. keyCode + "key ");
};
// 5. B .1: Title Area
This. _ FrameTitle = null;
// 5. B .2: Game Region
This. _ FrameMain = null;
// 5. B .3: Status display area
This. _ FrameState = null;
// 5. B .4: Control Area
This. _ FrameControl = null;
// 5. c.1: Opening Animation
This. _ AnmLoad = new Animation ("enter the game", null );
// 5. c.2: Pass Animation
This. _ AnmNext = new Animation ("loading", null );
// 5. c.3: End Animation
This. _ AnmEnd = new Animation ("end", null );
// 5. d.1: Start: Call the start animation, start the processing method, and load the game.
This. _ Start = function (){
This. _ AnmLoad = this. _ AnmLoad | new Animation (null );
Var temp = this; // get the current object
This. _ AnmLoad. _ palyEnd = this. _ AnmLoad. _ palyEnd | function (){
StartFn & startFn ();
Temp. _ Load ();
};
This. _ AnmLoad. _ play ();
};
// 5. d.2: End
This. _ End = endFn | function (){
Alert ("game ended ");
};
// 5. d.3: loading: each time the game starts (the level starts)
This. _ Load = function (){
This. _ AnmNext = this. _ AnmNext | new Animation (null );
Var temp = this; // get the current object
This. _ AnmNext. _ palyEnd = this. _ AnmNext. _ palyEnd | function (){
If (! LoadFn ){
Temp. _ FrameTitle = _ HtmlControl. _ newPanel (0, 0,400, 30 );
Temp. _ FrameTitle. innerHTML = temp. _ name | "Unnamed game ";
Temp. _ FrameMain = _ HtmlControl. _ newPanel (0, 30,350,370 );
Temp. _ FrameState = _ HtmlControl. _ newPanel (350, 30, 50,180 );
Temp. _ FrameControl = _ HtmlControl. _ newPanel (350,210, 50,190 );
_ HtmlControl. _ ClearArea ();
_ HtmlControl. _ AddControl (temp. _ FrameTitle );
_ HtmlControl. _ AddControl (temp. _ FrameMain );
_ HtmlControl. _ AddControl (temp. _ FrameState );
_ HtmlControl. _ AddControl (temp. _ FrameControl );
} Else {
LoadFn ();
}
}
This. _ AnmNext & this. _ AnmNext. _ play ();
}
// 5. e Map
This. _ Map = [];
MapIndex =-1;
};
That is to say, the selector is also an object of the game class, including loading animations and keyboard processing:
Copy codeThe Code is as follows:
// Create a game
Var game1 = new Game ("snake", null, null );
Var game2 = new Game ("Tetris", null, null );
Var game3 = new Game ("Push box", null, null );
Var game4 = new Game ("racing car", null, null );
Var game5 = new Game ("tank wars", null, null );
//----------------------------------------------------
// 6. Game list
Var _ GameList = [game1, game2, game3, game4, game5];
//----------------------------------------------------
// 7. Game Selector
Var _ GameChoose = new Game ("selector", null, null );
{
_ GameChoose. _ Map = _ GameList;
_ GameChoose. _ Load = function (){
This. _ FrameTitle = _ HtmlControl. _ newPanel (0, 0,400, 30 );
This. _ FrameTitle. innerHTML = "select a game ";
This. _ FrameMain = _ HtmlControl. _ newPanel (0, 30,240,370 );
This. _ FrameState = _ HtmlControl. _ newPanel (240, 30,160,180 );
This. _ FrameState. innerHTML = "you can <br/> use the up/down key <br/> select a game ";
This. _ FrameControl = _ HtmlControl. _ newPanel (240,210,160,190 );
This. _ FrameControl. innerHTML = "Press Enter <br/> to Enter the game ";
This. _ tempButtons = [];
This. _ tempButtonsIndex = 0;
// This. _ FrameMain. style. scroll bar //
If (this. _ Map. length> 0 ){
For (var I = 0; I <this. _ Map. length; I ++ ){
Var button = _ HtmlControl. _ newButton (this. _ Map [I]. _ name, 200, 30 );
This. _ FrameMain. appendChild (button );
This. _ tempButtons. push (button );
}
This. _ tempButtons [0]. select ();
}
_ HtmlControl. _ AddControl (this. _ FrameTitle );
_ HtmlControl. _ AddControl (this. _ FrameMain );
_ HtmlControl. _ AddControl (this. _ FrameState );
_ HtmlControl. _ AddControl (this. _ FrameControl );
};
_ GameChoose. _ LControl = function (date ){
If (mapIndex! =-1 ){
This. _ Map & this. _ Map [mapIndex]. _ LControl (date );
}
};
_ GameChoose. _ KControl = function (event ){
If (mapIndex =-1 ){
Switch (event. keyCode ){
Case _ KeyParameters. KeyUp:
{
// Alert ("up to t ");
If (this. _ tempButtonsIndex> 0 ){
This. _ tempButtonsIndex --;
For (var I = 0; I <this. _ tempButtons. length; I ++ ){
This. _ tempButtons [I]. unselect ();
}
This. _ tempButtons [this. _ tempButtonsIndex]. select ();
}
}
Break;
Case _ KeyParameters. KeyDown:
{
// Alert ("bottom ");
If (this. _ tempButtonsIndex <this. _ tempButtons. length-1 ){
This. _ tempButtonsIndex ++;
For (var I = 0; I <this. _ tempButtons. length; I ++ ){
This. _ tempButtons [I]. unselect ();
}
This. _ tempButtons [this. _ tempButtonsIndex]. select ();
}
}
Break;
Case _ KeyParameters. KeyEnter:
{
MapIndex = this. _ tempButtonsIndex;
This. _ Map & this. _ Map [mapIndex]. _ Start ();
}
Break;
Default:
{
} Break;
}
} Else {
If (event. keyCode = _ KeyParameters. KeyESC ){
MapIndex =-1;
This. _ Start ();
Return;
}
This. _ Map & this. _ Map [mapIndex]. _ KControl (event );
}
}
}
So I wrote the content. Due to the time relationship, the snake was still not done. Yesterday, the last slogan was said by the company, saying that I threw away the task assigned by the company.
Today, I want to change a slogan to promote the completion of the first game: daytime permission, evening greedy snake, I want to make the ultimate greedy snake, hey...
<! DOCTYPE html PUBLIC "-// W3C // dtd xhtml 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ptml> <pead> <title> </pead> <body> <style type = "text/css">. button {}</style> </body> </ptml>
[Ctrl + A select all Note: If you need to introduce external Js, You need to refresh it to execute]
Writing is obviously frustrating, but I am still posting it to improve my abilities in all aspects. Thank you for your criticism.