第一次提交 游戏界面资源数据已更新

This commit is contained in:
2026-02-02 17:47:01 +08:00
commit de17737ca1
8152 changed files with 3079449 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
[Chinese]
ÑùÀý¹¤³Ì1=http://www.html5abc.com
ÑùÀý¹¤³Ì2=http://www.html5abc.com
ÑùÀý¹¤³Ì3=http://www.html5abc.com
[English]
Demo1=http://www.html5abc.com
Demo2=http://www.html5abc.com
Demo3=http://www.html5abc.com

View File

@@ -0,0 +1,358 @@
[Root]
DockControlCount=12
[0]
ClassName=TdxDockSite
Name=dkSiteMain
ParentForm=frmMain_edit
ChildCount=2
Children0=7
Children1=11
AllowDockClientsLeft=1
AllowDockClientsTop=1
AllowDockClientsRight=1
AllowDockClientsBottom=1
AllowDockClientsClient=1
Width=2552
Height=1224
OriginalWidth=2552
OriginalHeight=1224
Visible=1
AutoSize=0
[7]
ClassName=TdxLayoutDockSite
Name=dxLayoutDockSite7
ParentForm=frmMain_edit
ChildCount=2
Children0=8
Children1=10
DockType=1
AllowDockLeft=1
AllowDockTop=1
AllowDockRight=1
AllowDockBottom=1
AllowDockClient=1
AllowDockClientsLeft=1
AllowDockClientsTop=1
AllowDockClientsRight=1
AllowDockClientsBottom=1
AllowDockClientsClient=1
AllowFloating=1
CaptionButtonClose=1
CaptionButtonHide=1
CaptionButtonMaximize=1
Dockable=1
Width=2224
Height=1224
OriginalWidth=300
OriginalHeight=200
Visible=1
AutoHide=0
StoredAutoHide=0
[8]
ClassName=TdxLayoutDockSite
Name=dxLayoutDockSite2
ParentForm=frmMain_edit
ChildCount=2
Children0=9
Children1=1
DockType=1
AllowDockLeft=1
AllowDockTop=1
AllowDockRight=1
AllowDockBottom=1
AllowDockClient=1
AllowDockClientsLeft=1
AllowDockClientsTop=1
AllowDockClientsRight=1
AllowDockClientsBottom=1
AllowDockClientsClient=1
AllowFloating=1
CaptionButtonClose=1
CaptionButtonHide=1
CaptionButtonMaximize=1
Dockable=1
Width=2224
Height=1224
OriginalWidth=300
OriginalHeight=200
Visible=1
AutoHide=0
StoredAutoHide=0
[9]
ClassName=TdxLayoutDockSite
Name=dxLayoutDockSite5
ParentForm=frmMain_edit
ChildCount=0
DockType=1
AllowDockLeft=1
AllowDockTop=1
AllowDockRight=1
AllowDockBottom=1
AllowDockClient=1
AllowDockClientsLeft=1
AllowDockClientsTop=1
AllowDockClientsRight=1
AllowDockClientsBottom=1
AllowDockClientsClient=1
AllowFloating=1
CaptionButtonClose=1
CaptionButtonHide=1
CaptionButtonMaximize=1
Dockable=1
Width=2224
Height=1224
OriginalWidth=300
OriginalHeight=200
Visible=1
AutoHide=0
StoredAutoHide=0
[1]
ClassName=TdxDockPanel
Name=dkPnlMain
ParentForm=frmMain_edit
ChildCount=0
DockType=1
AllowDockLeft=1
AllowDockTop=1
AllowDockRight=1
AllowDockBottom=1
AllowDockClient=1
AllowDockClientsLeft=0
AllowDockClientsTop=0
AllowDockClientsRight=0
AllowDockClientsBottom=0
AllowDockClientsClient=0
AllowFloating=0
CaptionButtonClose=1
CaptionButtonHide=1
CaptionButtonMaximize=1
Dockable=0
Width=2224
Height=1224
OriginalWidth=185
OriginalHeight=140
Visible=1
AutoHide=0
StoredAutoHide=0
[10]
ClassName=TdxTabContainerDockSite
Name=dxTabContainerDockSite2
ParentForm=frmMain_edit
ChildCount=2
Children0=2
Children1=3
DockType=5
AllowDockLeft=1
AllowDockTop=1
AllowDockRight=1
AllowDockBottom=1
AllowDockClient=1
AllowDockClientsLeft=1
AllowDockClientsTop=1
AllowDockClientsRight=1
AllowDockClientsBottom=1
AllowDockClientsClient=1
AllowFloating=1
CaptionButtonClose=1
CaptionButtonHide=1
CaptionButtonMaximize=1
Dockable=1
Width=2224
Height=359
OriginalWidth=185
OriginalHeight=359
Visible=0
AutoHide=0
StoredAutoHide=0
ActiveChildIndex=-1
ShowCaption=1
TabsPosition=1
TabsScroll=1
[2]
ClassName=TdxDockPanel
Name=dkPnlOutput
ParentForm=frmMain_edit
ChildCount=0
DockType=1
AllowDockLeft=1
AllowDockTop=1
AllowDockRight=1
AllowDockBottom=1
AllowDockClient=1
AllowDockClientsLeft=1
AllowDockClientsTop=1
AllowDockClientsRight=1
AllowDockClientsBottom=1
AllowDockClientsClient=1
AllowFloating=0
CaptionButtonClose=1
CaptionButtonHide=1
CaptionButtonMaximize=1
Dockable=1
Width=848
Height=67
OriginalWidth=185
OriginalHeight=115
Visible=0
AutoHide=0
StoredAutoHide=0
[3]
ClassName=TdxDockPanel
Name=dkPnlFindOut
ParentForm=frmMain_edit
ChildCount=0
DockType=1
AllowDockLeft=1
AllowDockTop=1
AllowDockRight=1
AllowDockBottom=1
AllowDockClient=1
AllowDockClientsLeft=1
AllowDockClientsTop=1
AllowDockClientsRight=1
AllowDockClientsBottom=1
AllowDockClientsClient=1
AllowFloating=0
CaptionButtonClose=1
CaptionButtonHide=1
CaptionButtonMaximize=1
Dockable=1
Width=2224
Height=359
OriginalWidth=185
OriginalHeight=359
Visible=0
AutoHide=0
StoredAutoHide=0
[11]
ClassName=TdxTabContainerDockSite
Name=dxTabContainerDockSite1
ParentForm=frmMain_edit
ChildCount=3
Children0=4
Children1=5
Children2=6
DockType=2
AllowDockLeft=1
AllowDockTop=1
AllowDockRight=1
AllowDockBottom=1
AllowDockClient=1
AllowDockClientsLeft=1
AllowDockClientsTop=1
AllowDockClientsRight=1
AllowDockClientsBottom=1
AllowDockClientsClient=1
AllowFloating=1
CaptionButtonClose=1
CaptionButtonHide=1
CaptionButtonMaximize=1
Dockable=1
Width=328
Height=1224
OriginalWidth=328
OriginalHeight=140
Visible=1
AutoHide=0
StoredAutoHide=0
ActiveChildIndex=0
ShowCaption=1
TabsPosition=1
TabsScroll=1
[4]
ClassName=TdxDockPanel
Name=dkPnlProject
ParentForm=frmMain_edit
ChildCount=0
DockType=1
AllowDockLeft=1
AllowDockTop=1
AllowDockRight=1
AllowDockBottom=1
AllowDockClient=1
AllowDockClientsLeft=1
AllowDockClientsTop=1
AllowDockClientsRight=1
AllowDockClientsBottom=1
AllowDockClientsClient=1
AllowFloating=0
CaptionButtonClose=1
CaptionButtonHide=1
CaptionButtonMaximize=1
Dockable=1
Width=324
Height=1176
OriginalWidth=328
OriginalHeight=140
Visible=1
AutoHide=0
StoredAutoHide=0
[5]
ClassName=TdxDockPanel
Name=dkPnlScript
ParentForm=frmMain_edit
ChildCount=0
DockType=1
AllowDockLeft=1
AllowDockTop=1
AllowDockRight=1
AllowDockBottom=1
AllowDockClient=1
AllowDockClientsLeft=1
AllowDockClientsTop=1
AllowDockClientsRight=1
AllowDockClientsBottom=1
AllowDockClientsClient=1
AllowFloating=0
CaptionButtonClose=1
CaptionButtonHide=1
CaptionButtonMaximize=1
Dockable=1
Width=324
Height=1176
OriginalWidth=328
OriginalHeight=140
Visible=1
AutoHide=0
StoredAutoHide=0
[6]
ClassName=TdxDockPanel
Name=dkPnlEngine
ParentForm=frmMain_edit
ChildCount=0
DockType=1
AllowDockLeft=1
AllowDockTop=1
AllowDockRight=1
AllowDockBottom=1
AllowDockClient=1
AllowDockClientsLeft=1
AllowDockClientsTop=1
AllowDockClientsRight=1
AllowDockClientsBottom=1
AllowDockClientsClient=1
AllowFloating=0
CaptionButtonClose=1
CaptionButtonHide=1
CaptionButtonMaximize=1
Dockable=1
Width=324
Height=1176
OriginalWidth=328
OriginalHeight=140
Visible=1
AutoHide=0
StoredAutoHide=0

View File

@@ -0,0 +1,471 @@
<?xml version="1.0" encoding="windows-1251"?>
<SynUniHighlighter Version="2.0">
<SyntaxColoring>
<Info>
<General Name="HTML" Extensions="htm html asp" Version="1" Revision="0" Sample="&lt;!doctype html public &quot;-//w3c//dtd html 4.0 transitional//en&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;/head&gt;
&lt;!-- Styles example: --&gt;
&lt;style&gt;
H1 {
background-color :black;
color : White;
font-family : Arial, Helvetica, sans-serif;
font : 9pt Arial;
font-size : 9pt;}
&lt;/style&gt;
&lt;body bgcolor=&quot;#DDDDDD&quot; onLoad =&quot;checkowner()&quot;&gt;
&lt;form method=&quot;POST&quot; name=&quot;Form1&quot;&gt;&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;center&gt;&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=&quot;1&quot;&gt;&lt;/font&gt;&lt;/td&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;coolmenu.js&quot;&gt;&lt;/script&gt;
&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;&lt;font size=&quot;1&quot;&gt;&lt;input
type=&quot;button&quot; name=&quot;b2&quot; value=&quot;&amp;lt;&amp;lt;Íàçà?quot;
onclick=&quot;previous(Form1)&quot;&gt; &lt;input type=&quot;button&quot;
name=&quot;b1&quot; value=&quot;&amp;lt;&amp;lt;Íàçà?quot;
onclick=&quot;next(Form1)&quot;&gt; &lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;!-- Javascript --&gt;
&lt;script language=&quot;JavaScript&quot;&gt;
function checkowner()
{
try
{
if (parent.window.frames[1].name !=&quot;main&quot;)
{
window.document.location =&quot;start.htm&quot;
}
}
catch(errorObject)
/*from page1*/
_child = new String;
if (parent.window.frames[0].name==&quot;f1&quot;)
{
return
}//if (parent.window.frames[0].name==&quot;f1&quot;)
if (parseInt(_child) &gt; _chcount)
{
_chcount = _chcount+1
return
}//if (_child != &quot;0&quot;)
else
&lt;/script&gt;
&lt;html&gt;
&lt;!-- VBscript --&gt;
&lt;SCRIPT LANGUAGE=&quot;VBScript&quot;&gt;
&lt;!--
Function CanDeliver(Dt)
CanDeliver = (CDate(Dt) - Now()) &gt; 2
End Function
--&gt;
&lt;/SCRIPT&gt;
&lt;TITLE&gt;Place Your Order&lt;/TITLE&gt;
&lt;SCRIPT LANGUAGE=&quot;VBScript&quot;&gt;
&lt;!--
Function CanDeliver(Dt)
CanDeliver = (CDate(Dt) - Now()) &gt; 2
End Function
//Copyright?1998 Microsoft Corporation. All Rights Reserved.
//**Start Encode**
function verifyCorrectBrowser(){
if(navigator.appName == &quot;Microsoft Internet Explorert&quot;)
if (navigator.appVersion.indexOf (&quot;5.&quot;) &gt;= 0)
return(true);
else
return(false);
}
function getAppropriatePage(){
var str4 = &quot;would have been loaded.&quot;;
if (verifyCorrectBrowser())
document.write(str1 + str3 + str4);
else
document.write(str1 + str2 + str3 + str4);
}
--&gt;
&lt;/SCRIPT&gt;
&lt;!-- ASP (VB Script) --&gt;
&lt;%
Option Explicit
Dim sql,rsRoot
username = Request.Cookies(&quot;pb_username&quot;)
'repliesdisplay alters amount of replies to display on page
if recordnum = &quot;&quot; then recordnum = 0 end if
id = Request.QueryString(&quot;id&quot;)
%&gt;
&lt;!--#include file=&quot;conn.asp&quot;--&gt;
" History=""/>
<Author Name="Vitaly Nevzorov" Mail="nevzorov@yahoo.com" Web="www.delphist.com" Copyright="Copyright (c) Vitaly Nevzorov, 2002" Company="N/A" Remark=""/>
</Info>
<Schemes/>
<Editor/>
<MainRules Name="SyntaxColoring" Style="Root">
<Attributes Foreground="clBlack" Background="clWhite"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<SubRules>
<Range Name="HTML Tag" Style="">
<Attributes Foreground="clBlack" Background="clWhite" ParentBackground="True"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<OpenToken StartLine=""/>
<CloseToken StartLine=""/>
<Properties/>
<MultiTokens>
<Tokens Open="&lt;" Close="&gt;"/>
</MultiTokens>
<SubRules>
<Range Name="Values &quot;...&quot;" Style="">
<Attributes Foreground="$00FF0080" Background="clWhite" ParentBackground="True"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<OpenToken StartLine=""/>
<CloseToken StartLine=""/>
<Properties/>
<MultiTokens>
<Tokens Open="&quot;" Close="&quot;"/>
</MultiTokens>
<SubRules/>
</Range>
<Range Name="Values '...'" Style="">
<Attributes Foreground="$00FF0080" Background="clWhite" ParentBackground="True"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<OpenToken StartLine=""/>
<CloseToken StartLine=""/>
<Properties/>
<MultiTokens>
<Tokens Open="'" Close="'"/>
</MultiTokens>
<SubRules/>
</Range>
<KeyList Name="Standard Tags" Enabled="True" Style="" Words="html
head
meta
body
form
div
tr
td
center
table
font
a
abbr
acronym
address
applet
area
b
base
basefont
bdo
big
blockquote
button
cite
br
caption
code
dd
dfn
col
colgroup
dir
dl
dt
em
fieldset
h2
iframe
h1
i
frame
frameset
h3
h4
h5
h6
hr
ilayer
img
input
isindex
kbd
label
legend
li
link
map
noframes
object
p
menu
ol
noscript
optgroup
option
param
pre
q
s
samp
select
small
span
strike
strong
sub
sup
tbody
text
textarea
tfoot
th
thead
title
tt
ul
u
var
style
script
">
<Attributes Foreground="$00A00000" Background="clWhite" ParentBackground="True"/>
</KeyList>
<KeyList Name="Attributes" Enabled="True" Style="" Words="abbr
accept-charset
accept
accesskey
action
align
alink
alt
archive
axis
background
bgcolor
border
cellpadding
cellspacing
char
charoff
charset
checked
cite=
class
classid
clear
code=
codebase
codetype
color
cols
colspan
compact
content
coords
data
datetime
declare
defer
dir=
disabled
enctype
face
for
frame=
frameborder
headers
height
href
hreflang
hspace
http-equiv
id
ismap
label=
lang
language
link
longdesc
mailto
marginheight
marginwidth
maxlength
media
method
multiple
name
nohref
noresize
noshade
nowrap
object=
profile
prompt
readonly
rel
rev
rows
rowspan
rules
scheme
scope
scrolling
selected
shape
size
span=
src
standby
start
style=
summary
tabindex
target
text=
title=
type
usemap
valign
value
valuetype
version
vlink
vspace
width
">
<Attributes Foreground="clRed" Background="clWhite" ParentBackground="True"/>
</KeyList>
<KeyList Name="Standard Events" Enabled="True" Style="" Words="onblur
onchange
onclick
ondblclick
onfocus
onkeydown
onkeypress
onkeyup
onload
onmousedown
onmousemove
onmouseout
onmouseover
onmouseup
onreset
onselect
onsubmit
onunload
">
<Attributes Foreground="clRed" Background="clWhite" ParentBackground="True"/>
</KeyList>
</SubRules>
</Range>
<Range Name="HTML Remarks" Style="">
<Attributes Foreground="clGreen" Background="clWhite" ParentBackground="True"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<OpenToken StartLine=""/>
<CloseToken StartLine=""/>
<Properties/>
<MultiTokens>
<Tokens Open="&lt;!--" Close="--&gt;"/>
</MultiTokens>
<SubRules/>
</Range>
<Range Name="Doc Type" Style="Doc Type">
<Attributes Foreground="clBlack" Background="$0080FFFF"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<OpenToken StartLine=""/>
<CloseToken StartLine=""/>
<Properties/>
<MultiTokens>
<Tokens Open="&lt;!" Close="&gt;"/>
</MultiTokens>
<SubRules/>
</Range>
<Range Name="Include" Style="">
<Attributes Foreground="$00A00000" Background="clWhite" ParentBackground="True"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<OpenToken StartLine=""/>
<CloseToken StartLine=""/>
<Properties/>
<MultiTokens>
<Tokens Open="&lt;!--#include" Close="--&gt;"/>
</MultiTokens>
<SubRules>
<Range Name="Name" Style="">
<Attributes Foreground="clRed" Background="clWhite" ParentBackground="True"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<OpenToken StartLine=""/>
<CloseToken StartLine=""/>
<Properties/>
<MultiTokens>
<Tokens Open="&quot;" Close="&quot;"/>
</MultiTokens>
<SubRules/>
</Range>
</SubRules>
</Range>
</SubRules>
</MainRules>
</SyntaxColoring>
<CodeFolding>
<SkipRegion>
<Open Symbol="&lt;!--"/>
<Close Symbol="--&gt;"/>
<RegionType Type="1"/>
</SkipRegion>
<FoldRegion Name="Style" Type="1">
<OpenToken Symbol="&lt;STYLE"/>
<CloseToken Symbol="&lt;/STYLE&gt;"/>
<Properties AllowNoSubs="True"/>
<SubRegions/>
</FoldRegion>
<FoldRegion Name="VB Script" Type="1">
<OpenToken Symbol="&lt;SCRIPT LANGUAGE=&quot;V"/>
<CloseToken Symbol="&lt;/SCRIPT&gt;"/>
<Properties/>
<SubRegions/>
</FoldRegion>
<FoldRegion Name="Body" Type="1">
<OpenToken Symbol="&lt;BODY"/>
<CloseToken Symbol="&lt;/BODY"/>
<Properties/>
<SubRegions/>
</FoldRegion>
<FoldRegion Name="ASP" Type="1">
<OpenToken Symbol="&lt;%"/>
<CloseToken Symbol="%&gt;"/>
<Properties AllowNoSubs="True"/>
<SubRegions/>
</FoldRegion>
<FoldRegion Name="Java Script" Type="1">
<OpenToken Symbol="&lt;SCRIPT LANGUAGE=&quot;J"/>
<CloseToken Symbol="&lt;/SCRIPT&gt;"/>
<Properties AllowNoSubs="True"/>
<SubRegions/>
</FoldRegion>
<FoldRegion Name="Head" Type="1">
<OpenToken Symbol="&lt;HEAD"/>
<CloseToken Symbol="&lt;/HEAD&gt;"/>
<Properties/>
<SubRegions/>
</FoldRegion>
<FoldRegion Name="Table" Type="1">
<OpenToken Symbol="&lt;TABLE"/>
<CloseToken Symbol="&lt;/TABLE&gt;"/>
<Properties/>
<SubRegions/>
</FoldRegion>
<FoldRegion Name="{..}" Type="0">
<OpenToken Symbol="{"/>
<CloseToken Symbol="}"/>
<Properties/>
<SubRegions/>
</FoldRegion>
</CodeFolding>
<CustomData/>
</SynUniHighlighter>

View File

@@ -0,0 +1,186 @@
<?xml version="1.0" encoding="windows-1251"?>
<SynUniHighlighter Version="2.0">
<SyntaxColoring>
<Info>
<General Name="Java script" Extensions="js" Version="1" Revision="0" Sample="// Syntax highlighting
function printNumber()
{
var number = 1234;
var x;
document.write(&quot;The number is &quot; + number);
for (var i = 0; i &lt;= number; i++)
{
x++;
x--;
x += 1.0;
}
i += @; // illegal character
}
body.onLoad = printNumber;
" History=""/>
<Author Name="Vitaly Nevzorov" Mail="nevzorov@yahoo.com" Web="www.delphist.com" Copyright="Copyright (c) Vitaly Nevzorov, 2002" Company="N/A" Remark=""/>
</Info>
<Schemes/>
<Editor/>
<MainRules Name="SyntaxColoring" CaseSensitive="True" Style="Root">
<Attributes Foreground="clBlack" Background="clWhite"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<SubRules>
<Range Name="Remark //" CaseSensitive="True" Style="">
<Attributes Foreground="clGreen" Background="clWhite" ParentBackground="True"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<OpenToken StartLine=""/>
<CloseToken StartLine=""/>
<Properties CloseOnEol="True"/>
<MultiTokens>
<Tokens Open="//"/>
</MultiTokens>
<SubRules/>
</Range>
<Range Name="Remark /*...*/" CaseSensitive="True" Style="">
<Attributes Foreground="clGreen" Background="clWhite" ParentBackground="True"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<OpenToken StartLine=""/>
<CloseToken StartLine=""/>
<Properties/>
<MultiTokens>
<Tokens Open="/*" Close="*/"/>
</MultiTokens>
<SubRules/>
</Range>
<Range Name="Strings &quot;...&quot;" CaseSensitive="True" Style="Strings">
<Attributes Foreground="$008000FF" Background="clWhite" ParentBackground="True"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<OpenToken StartLine=""/>
<CloseToken StartLine=""/>
<Properties/>
<MultiTokens>
<Tokens Open="&quot;" Close="&quot;"/>
</MultiTokens>
<SubRules/>
</Range>
<Range Name="Strings '...'" CaseSensitive="True" Style="Strings">
<Attributes Foreground="$008000FF" Background="clWhite" ParentBackground="True"/>
<Delimiters Value="!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^`{|}~"/>
<OpenToken StartLine=""/>
<CloseToken StartLine=""/>
<Properties/>
<MultiTokens>
<Tokens Open="'" Close="'"/>
</MultiTokens>
<SubRules/>
</Range>
<KeyList Name="Reserved words" Enabled="True" Style="" Words="if
do
in
case
NaN
char
catch
break
callee
for
else
var
new
false
int
package
long
void
delete
byte
enum
class
float
this
while
goto
double
Null
null
with
try
public
boolean
true
default
debugger
const
native
static
start
finally
super
short
interface
switch
throw
abstract
typeof
import
extends
private
return
export
continue
function
throws
instanceof
protected
transient
implements
prototype
synchronized
constructor
final
">
<Attributes Foreground="clBlue" Background="clWhite" ParentBackground="True" Style="BI"/>
</KeyList>
<KeyList Name="Symbols" Enabled="True" Style="" Words="{
}
(
)
[
]
">
<Attributes Foreground="clBlack" Background="clWhite" ParentForeground="True" ParentBackground="True" Style="B"/>
</KeyList>
<Set Name="Numbers" Enabled="True" Style="" Symbols="0123456789" Quantity="0">
<Attributes Foreground="clRed" Background="clWhite" ParentBackground="True"/>
</Set>
</SubRules>
</MainRules>
</SyntaxColoring>
<CodeFolding>
<SkipRegion>
<Open Symbol="/*"/>
<Close Symbol="*/"/>
<RegionType Type="1"/>
</SkipRegion>
<SkipRegion>
<Open Symbol="//"/>
<RegionType Type="2"/>
</SkipRegion>
<SkipRegion>
<Open Symbol="'"/>
<Close Symbol="'"/>
<RegionType Type="0"/>
</SkipRegion>
<SkipRegion>
<Open Symbol="&quot;"/>
<Close Symbol="&quot;"/>
<RegionType Type="0"/>
</SkipRegion>
<FoldRegion Name="{..}" Type="1">
<OpenToken Symbol="{"/>
<CloseToken Symbol="}"/>
<Properties/>
<SubRegions/>
</FoldRegion>
</CodeFolding>
<CustomData/>
</SynUniHighlighter>

View File

@@ -0,0 +1,43 @@
[for{...} | ]
for (|) {
}
[fori{...} | ]
for (var i = 0; i < |Things.length; i++) {
Things[i]
}
[function{...} | ]
function |function_name () {
};
[func{...} | ]
|function_name = function() {
};
[if{...} | ]
if (|) {
}
[if{...}else{...} | ]
if (|) {
} else {
}
[switch_case{...} | ]
switch (|){
case value:
break;
default:
break;
}
[while{...} | ]
while (|) {
}
[try{}catch(e) | ]
try{
|
}catch(e){
//TODO handle the exception
}

View File

@@ -0,0 +1,64 @@
if
do
in
case
NaN
char
catch
break
callee
for
else
var
new
false
int
package
long
void
delete
byte
enum
class
float
this
while
goto
double
Null
null
with
try
public
boolean
true
default
debugger
const
native
static
start
finally
super
short
interface
switch
throw
abstract
typeof
import
extends
private
return
export
continue
function
throws
instanceof
protected
transient
implements
prototype
synchronized
constructor
final

View File

@@ -0,0 +1,169 @@
[Language]
Name=Chinese
[frmMain]
actFileNew.Caption=新建
actFileOpen.Caption=打开...
actFileSave.Caption=保存
actFileSaveAs.Caption=另存为...
actFileSaveAll.Caption=全部保存
actFileClose.Caption=关闭
actFileCloseAll.Caption=全部关闭
actFilePrint.Caption=打印...
actFileExit.Caption=退出
actFileMRUClear.Caption=清空文件列表
actEditCut.Caption=剪切
actEditCopy.Caption=复制
actEditPaste.Caption=粘贴
actEditDel.Caption=删除
actEditDelLine.Caption=删除行
actEditDelBol.Caption=删除至行首
actEditDelEol.Caption=删除至行尾
actEditSelAll.Caption=全选
actEditSelLineBol.Caption=选择至行首
actEditSelLineEol.Caption=选择至行尾
actEditIndent.Caption=插入制表符
actEditUnIndent.Caption=删除制表符
actEditUndo.Caption=撤销
actEditRedo.Caption=重做
actEditBackWards.Caption=后退
actEditForWards.Caption=前进
actEditComment.Caption=添加/删除 注释
actSearchFind.Caption=查找...
actSearchFindNext.Caption=查找下一个
actSearchReplace.Caption=替换...
actSearchFindInFiles.Caption=在文件中查找
actGoToLine.Caption=转到指定行...
actToolOptions.Caption=设置...
actCodeFormat.Caption=代码格式化
actCodeToDefined.Caption=转到定义
actProFilesOrd.Caption=文件加载顺序...
actToolEncode.Caption=转换文本编码...
actViewTools.Caption=工具栏
actViewStatusBar.Caption=状态栏
actViewProject.Caption=项目
actViewScript.Caption=脚本
actViewEngine.Caption=引擎
actViewOutput.Caption=输出结果
actViewFindOut.Caption=搜索结果
actViewUncollapseAll.Caption=展开所有层
actViewCollapseAll.Caption=折叠所有层
miFile.Caption=文件
miFileRecentFiles.Caption=最近打开的文件
miEdit.Caption=编辑
miEditDel.Caption=删除
miEditSel.Caption=选择
miEditIndent.Caption=缩进
miSearch.Caption=搜索
miTools.Caption=工具
miView.Caption=视图
miWindowView.Caption=界面布局
dkPnlProject.Caption=项目
dkPnlScript.Caption=脚本
dkPnlEngine.Caption=引擎
dkPnlOutput.Caption=输出结果
dkPnlFindOut.Caption=搜索结果
[SearchDialog]
tsFind.Caption=查找
lblFind.Caption=查找项:
btnFind.Caption=查找下一个
tsReplace.Caption=替换
lblReplace.Caption=替换项:
btnReplace.Caption=替换下一个
btnReplaceAll.Caption=全部替换
tsFindInFile.Caption=文件中查找
lblDir.Caption=目录:
chkSubDir.Caption=包含子目录
btnFindInFile.Caption=全部查找
btnDir.Caption=...
btnClose.Caption=取消
gbConditions.Caption=选项
chkWhole.Caption=全词匹配
chkCase.Caption=区分大小写
chkRegExp.Caption=正则表达式
chkLoop.Caption=循环查找
gbDirection.Caption=方向
rbUp.Caption=向上
rbDown.Caption=向下
gbPosition.Caption=文件位置
rbFileActive.Caption=当前打开
rbFilesInDir.Caption=选择目录中
rbFilesInProject.Caption=当前项目中
rbFilesOpen.Caption=所有已打开
[OptionsDialog]
Caption=设置
tsGeneral.Caption=常规
tsEditor.Caption=编辑
tsKeyboard.Caption=键盘
lblInterfaceLanguage.Caption=界面语言:
lblDefDocumentType.Caption=默认文件类型:
lblDefDocumentEncode.Caption=默认文件编码:
gbGeneral.Caption=常用
chkAutoIndent.Caption=自动缩进
chkCodeFolding.Caption=代码折叠
chkCodeFoldHint.Caption=显示折叠代码提示
chkIndentGuides.Caption=显示折叠线
chkMatchSymbol.Caption=符号自动匹配
chkHighlightLine.Caption=高亮显示当前行
chkSpecialCharacters.Caption=显示特殊字符
chkTabsToSpaces.Caption=Tab转换为空格
chkWordWrap.Caption=自动换行
lblActiveLine.Caption=当前行高亮颜色:
lblTabWidth.Caption=Tab宽度:
chkDropEdit.Caption=允许拖动编辑
chkDropFiles.Caption=允许外部文件拖放
gbGutterMargin.Caption=行号栏及右边线
chkShowGutter.Caption=显示行号栏
chkShowRightMargin.Caption=显示右边缘线
chkShowLineNumbers.Caption=显示行号
lblRightMarginPos.Caption=右边缘线位置:
lblGutterColor.Caption=行号栏背景:
lblFoldingButton.Caption=折叠按钮样式:
lblFoldingBarColor.Caption=折叠栏背景:
lblFoldingLinesColor.Caption=折叠线颜色:
gbKeyboard.Caption=快捷键
chkCtrl.Caption=Ctrl
chkShift.Caption=Shift
chkAlt.Caption=Alt
btnOK.Caption=保存
btnCancel.Caption=关闭
btnRecovery.Caption=还原默认
[FileListDialog]
Caption=调整文件加载顺序
lblTip.Caption=拖动文件调整加载顺序
btnSave.Caption=保存
btnCancel.Caption=取消
[EncodeDialog]
Caption=转换文本编码
lblSetEncode.Caption=选择编码方式:
btnOK.Caption=确定
btnCancel.Caption=取消
[GoToLineDialog]
Caption=转到指定行
lblGoTo.Caption=请输入行号:
btnOK.Caption=确定
btnCancel.Caption=取消
[Strings]
String0=更改
String1=插入
String2=覆盖
String3=只读
String4=大写锁定
String5=小键盘锁定
String6=<Unknown>
String7=new%d
String8=文件不存在:"%s"
String9=提示
String10=是否保存对 "%s" 的修改?
String11=没有找到字符串:"%s"
String12="%s" 已标识为只读
String13=字体: %s, %d
String14=搜索 "%s" : %d个结果

View File

@@ -0,0 +1,174 @@
[Editor]
ActiveLineColor=$00C0C0C0
AutoIndent=1
CodeFolding=0
CodeFoldHint=1
ExtraLineSpacing=0
FontName=Consolas
FontSize=14
GroupUndo=1
GutterColor=$20000000
HighlightActiveLine=1
HighlightIndentGuides=1
InsertCaret=0
InsertMode=1
LeadingZeros=0
MaxUndo=1024
OverwriteCaret=3
RightMarginPosition=80
ScrollPastEOF=0
ScrollPastEOL=0
ShowGutter=1
ShowIndentGuides=1
ShowLineNumbers=1
ShowRightMargin=0
ShowSpecialChars=0
TabWidth=4
TabsToSpaces=0
TrimTrailingSpaces=0
WordWrap=0
ZeroStart=0
FoldingButtonStyle=0
ShowLeadingZeros=0
FoldingBarColor=$20000000
FoldingBarLinesColor=$20000000
EnhanceHomeKey=0
DragDropEditing=1
DropFiles=1
TabIndent=1
MatchSymbol=1
[EditorFonts]
FontName1=Courier New
FontSize1=10
FontName2=Courier
FontSize2=10
FontName3=Terminal
FontSize3=9
FontName4=Lucida Console
FontSize4=9
FontName5=Fixedsys
FontSize5=9
[Filters]
Filter0=Any file (*.*)|*.*|
Filter1=JavaScript (*.js)|*.js|
Filter2=HTML (*.htm;*.html)|*.htm;*.html|
[General]
ActiveLanguage=Chinese
DefaultDocumentType=0
DefaultDocumentEncode=4
MRUFilesCount=10
[Keyboard]
actFileNew=Ctrl+N
actFileOpen=Ctrl+O
actFileSave=Ctrl+S
actFileSaveAs=
actFileSaveAll=Shift+Ctrl+S
actFileClose=Ctrl+W
actFileCloseAll=Shift+Ctrl+W
actFilePrint=Ctrl+P
actFileExit=
actEditCut=Ctrl+X
actEditCopy=Ctrl+C
actEditPaste=Ctrl+V
actEditDel=Del
actEditDelLine=Ctrl+Y
actEditDelBol=Shift+BkSp
actEditDelEol=Shift+Del
actEditSelAll=Ctrl+A
actEditSelLineBol=Shift+Home
actEditSelLineEol=Shift+End
actEditIndent=Tab
actEditUnIndent=Shift+Tab
actEditUndo=Ctrl+Z
actEditRedo=Shift+Ctrl+Z
actEditBackWards=
actEditForWards=
actEditComment=Ctrl+Q
actSearchFind=Ctrl+F
actSearchFindNext=F3
actSearchReplace=Ctrl+H
actSearchFindInFiles=Shift+Ctrl+F
actToolOptions=
actCodeFormat=Ctrl+D
actCodeToDefined=
actProFilesOrd=
actViewTools=
actViewStatusBar=
actViewProject=
actViewScript=
actViewEngine=
actViewOutput=
actViewFindOut=
actViewUncollapseAll=
actViewCollapseAll=
actToolEncode=
actGoToLine=
[DocumentTypes]
DocumentTypeName0=JavaScript
DocumentTypeExtensions0=.js
DocumentTypeSyntaxFile0=Java Script.xml
DocumentTypeAutoCPFile0=js\autocp.js
DocumentTypeKeyWordsFile0=js\keywords.js
DocumentTypeFunctionRegExp0=^function([\x20\t]*)[A-Za-z]+[A-Za-z0-9_]*\([^)]*\)
DocumentTypeName1=HTML
DocumentTypeExtensions1=.html;.htm
DocumentTypeSyntaxFile1=HTML.xml
DocumentTypeAutoCPFile1=
DocumentTypeKeyWordsFile1=
DocumentTypeFunctionRegExp1=
[MRUFiles]
MRUItem1=G:\Works\YouleGames\games\games\Projects\clinet\zpy\js\gamemain.js
MRUItem2=G:\Works\YouleGames\games\games\Projects\clinet\sangelaok\js\gamemain.js
MRUItem3=G:\Works\YouleGames\games\games\Projects\clinet\niuniu\js\gamemain.js
MRUItem4=G:\Works\YouleGames\games\games\Projects\clinet\guanpai-jx\js\gamemain.js
MRUItem5=G:\Works\YouleGames\games\games\Projects\Project1\js\gamemain.js
MRUItem6=G:\Works\YouleGames\games\games\Projects\clinet\doudizhu\js\gamemain.js
MRUItem7=G:\Works\JinXianProjects\JinXianMahjong\Projects\client\js\gamemain.js
MRUItem8=G:\Works\JinXianProjects\JinXianMahjong\Projects\Project1\js\gamemain.js
MRUItem9=G:\Works\JinXianProjects\JinXianMahjong\Projects\client\js\client_Event.js
MRUItem10=G:\Works\JinXianProjects\JinXianMahjong\Projects\client\js\01_SubGame\00_SubGame_Config.js
[MRUFindText]
MRUItem1=ÅäÖÃ
MRUItem2=GameData.sysConfig
MRUItem3=sysConfig.deviceLogin
MRUItem4=3254
MRUItem5=3253
MRUItem6=ÊÖ»ú
MRUItem7=.PlayerList
MRUItem8=Desk.PlayerList
MRUItem9=GameUI.updatePlayerInfoUI
MRUItem10=Func.SwitchOverGameData
MRUItem11=SwitchOverGameData
MRUItem12=1405
MRUItem13=selectCard
MRUItem14=select
MRUItem15=updateJushuKouka
MRUItem16=Game_Modify.CreateRoomData.Type_9
MRUItem17=Game_Modify.Type_1
MRUItem18=Game_Modify.CreateRoomData.Type_2
MRUItem19=GameData.gameConfig
MRUItem20=game_config
[MRUFReplaceText]
[MRUFindDirs]
[SearchDialog]
chkWhole.Check=0
chkCase.Check=0
chkRegExp.Check=0
chkLoop.Check=1
rbUp.Check=0
rbDown.Check=1
chkSubDir.Check=0
rbFileActive.Check=0
rbFilesOpen.Check=0
rbFilesInProject.Check=1
rbFilesInDir.Check=0

View File

@@ -0,0 +1,144 @@
[Editor]
ActiveLineColor=$00F2EAEF
AutoIndent=1
CodeFolding=0
CodeFoldHint=1
ExtraLineSpacing=0
FontName=Courier New
FontSize=10
GroupUndo=1
GutterColor=$20000000
HighlightActiveLine=1
HighlightIndentGuides=1
InsertCaret=0
InsertMode=1
LeadingZeros=0
MaxUndo=1024
OverwriteCaret=3
RightMarginPosition=80
ScrollPastEOF=0
ScrollPastEOL=0
ShowGutter=1
ShowIndentGuides=1
ShowLineNumbers=1
ShowRightMargin=0
ShowSpecialChars=0
TabWidth=4
TabsToSpaces=0
TrimTrailingSpaces=0
WordWrap=0
ZeroStart=0
FoldingButtonStyle=0
ShowLeadingZeros=0
FoldingBarColor=$20000000
FoldingBarLinesColor=$20000000
EnhanceHomeKey=0
DragDropEditing=1
DropFiles=1
TabIndent=1
MatchSymbol=1
[EditorFonts]
FontName1=Courier New
FontSize1=10
FontName2=Courier
FontSize2=10
FontName3=Terminal
FontSize3=9
FontName4=Lucida Console
FontSize4=9
FontName5=Fixedsys
FontSize5=9
[Filters]
Filter0=Any file (*.*)|*.*|
Filter1=JavaScript (*.js)|*.js|
Filter2=HTML (*.htm;*.html)|*.htm;*.html|
[General]
ActiveLanguage=Chinese
DefaultDocumentType=0
DefaultDocumentEncode=4
MRUFilesCount=10
[Keyboard]
actFileNew=Ctrl+N
actFileOpen=Ctrl+O
actFileSave=Ctrl+S
actFileSaveAs=
actFileSaveAll=Shift+Ctrl+S
actFileClose=Ctrl+W
actFileCloseAll=Shift+Ctrl+W
actFilePrint=Ctrl+P
actFileExit=
actEditCut=Ctrl+X
actEditCopy=Ctrl+C
actEditPaste=Ctrl+V
actEditDel=Del
actEditDelLine=Ctrl+Y
actEditDelBol=Shift+BkSp
actEditDelEol=Shift+Del
actEditSelAll=Ctrl+A
actEditSelLineBol=Shift+Home
actEditSelLineEol=Shift+End
actEditIndent=Tab
actEditUnIndent=Shift+Tab
actEditUndo=Ctrl+Z
actEditRedo=Shift+Ctrl+Z
actEditBackWards=
actEditForWards=
actEditComment=Ctrl+Q
actSearchFind=Ctrl+F
actSearchFindNext=F3
actSearchReplace=Ctrl+H
actSearchFindInFiles=Shift+Ctrl+F
actToolOptions=
actCodeFormat=Ctrl+D
actCodeToDefined=
actProFilesOrd=
actViewTools=
actViewStatusBar=
actViewProject=
actViewScript=
actViewEngine=
actViewOutput=
actViewFindOut=
actViewUncollapseAll=
actViewCollapseAll=
actToolEncode=
actGoToLine=
[DocumentTypes]
DocumentTypeName0=JavaScript
DocumentTypeExtensions0=.js
DocumentTypeSyntaxFile0=Java Script.xml
DocumentTypeAutoCPFile0=js\autocp.js
DocumentTypeKeyWordsFile0=js\keywords.js
DocumentTypeFunctionRegExp0=^function([\x20\t]*)[A-Za-z]+[A-Za-z0-9_]*\([^)]*\)
DocumentTypeName1=HTML
DocumentTypeExtensions1=.html;.htm
DocumentTypeSyntaxFile1=HTML.xml
DocumentTypeAutoCPFile1=
DocumentTypeKeyWordsFile1=
DocumentTypeFunctionRegExp1=
[MRUFiles]
[MRUFindText]
[MRUFReplaceText]
[MRUFindDirs]
[SearchDialog]
chkWhole.Check=0
chkCase.Check=0
chkRegExp.Check=0
chkLoop.Check=1
rbUp.Check=1
rbDown.Check=0
chkSubDir.Check=0
rbFileActive.Check=0
rbFilesOpen.Check=0
rbFilesInProject.Check=1
rbFilesInDir.Check=0

View File

@@ -0,0 +1 @@
//精灵事件单元...

View File

@@ -0,0 +1,163 @@
var gameabc_face = gameabc_face||{};
{
gameabc_face.tag=12; //定义你的游戏全局内存
gameabc_face.tag1=123;//定义你的游戏全局内存
gameabc_face.tag2=123;//定义你的游戏全局内存
gameabc_face.tag3=123;//定义你的游戏全局内存
}
gameabc_face.gamestart=function(gameid)
{
//游戏初始化代码
};
gameabc_face.ani_doend=function(id,sx,count,allend)
{
logmessage(id+"/"+sx+"/"+count+"/"+allend);
//play_ani(0,2,18,50,200,0,1000,0,0,0,0,6000,1);//主动关闭
};
gameabc_face.box_doend=function(id,sx,timelen)
{
//play_box 结束事件
//showmessage("box_doend:"+id+"/"+sx+"/"+timelen);
logmessage("box_doend:"+id+"/"+sx+"/"+timelen);
};
gameabc_face.onloadurl1=function(recid,rectype,url,error,count,len)
{
//修改为gameabc_face.onloadurl 则自己处理图片加载进度
//资源加载完成函数
//recid:资源id
//rectype:1 图片 2声音
//url :网络地址
//error:是否加载错误
//len:资源大小
//count加载的个数百分比
logmessage("onload:"+recid+"/"+rectype+"/"+count+"/"+error);
/*
if (rectype==0)
{
open_load("","1.mp3","");
gameabc_face.randombase=0;//使用系统浏览器缓存
}
if (count==100)
{
game_close_zsmsg("");
} else
{
game_open_zsmsg(count+"%"+" 加载中...");
};
*/
};
gameabc_face.chongzhi=function(userid,zt,data)
{
//游戏接口代码
};
gameabc_face.onresize=function(pmw/*屏幕宽*/,pmh/*屏幕宽*/,sjweww/*设计宽*/,sjnewh/*设计宽*/,nweww/*显示宽*/,newh/*显示高*/)
{
//屏幕变化
// 在此调整 列表控件的宽高和区域 不是整体缩放
logmessage("onresize:"+pmw+"/"+pmh+"/"+sjweww+"/"+sjnewh+"/"+nweww+"/"+newh);
};
gameabc_face.gamebegindraw=function(gameid, spid, times, timelong)
{
//更新开始代码
};
gameabc_face.gameenddraw=function(gameid, spid, times, timelong)
{
//更新完成代码
};
gameabc_face.mousedown=function(gameid, spid, downx, downy, no1, no2, no3, no4, no5, no6)
{
//点击代码
};
gameabc_face.mousedown_nomove=function(gameid, spid, downx, downy, timelong, no1, no2, no3, no4, no5)
{
//点击代没移动代码
};
gameabc_face.mouseup=function(gameid, spid_down, downx, downy, spid_up, upx, upy, timelong, no1, no2)
{
//点击弹起代码
//可以通过spid_down和spid_up 的比较 来判断是 点击还是 移动
};
gameabc_face.mousemove=function(gameid, spid, downx, downy, movex,movey ,timelong,offmovex, offmovey, no1)
{
//点击后移动代码
//set_self(spid,18,offmovex,1,0);
//set_self(spid,19,offmovey,1,0);
};
gameabc_face.gamemydraw=function(gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7)
{
//每个精灵更新绘画代码
};
gameabc_face.gamemydrawbegin=function(gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7)
{
//每个精灵更新前绘画代码
};
gameabc_face.ontimer= function(gameid, spid, /* 本次间隔多少次了 */ times, /* 本次间隔多久 */ timelong,/* 开启后运行多少次了 */ alltimes){
/*请在下面输入您的代码
*/
//set_self(1,18,5,1,0);
} ;
gameabc_face.tcpconnected=function(tcpid)
{
/*
ifast_tcp_open(1,"127.0.0.1:5414");//连接ws tcp
*/
logmessage("tcpopen:"+tcpid);
};
gameabc_face.tcpmessage=function(tcpid,data)
{
logmessage("tcpread:"+data);
};
gameabc_face.tcpdisconnected=function(tcpid)
{
logmessage("tcpclose:"+tcpid);
};
gameabc_face.tcperror=function(tcpid,data)
{
logmessage("tcperror:"+tcpid);
};
gameabc_face.httpmessage=function(myid,url,data)
{
/*
ifast_http(1,"web/test.txt",1);//获取文件 同域
*/
logmessage("httpread:"+myid+"/"+url+":"+data);
};

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,4 @@
[Chinese]
[English]

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,50 @@
<xml xmlns:o="urn:schemas-microsoft-com:office:office">
<o:MainFile HRef="../代码编辑帮助文档.htm"/>
<o:File HRef="image001.png"/>
<o:File HRef="image002.jpg"/>
<o:File HRef="image003.png"/>
<o:File HRef="image004.jpg"/>
<o:File HRef="image005.png"/>
<o:File HRef="image006.jpg"/>
<o:File HRef="image007.png"/>
<o:File HRef="image008.jpg"/>
<o:File HRef="image009.png"/>
<o:File HRef="image010.jpg"/>
<o:File HRef="image011.png"/>
<o:File HRef="image012.jpg"/>
<o:File HRef="image013.png"/>
<o:File HRef="image014.jpg"/>
<o:File HRef="image015.png"/>
<o:File HRef="image016.jpg"/>
<o:File HRef="image017.png"/>
<o:File HRef="image018.jpg"/>
<o:File HRef="image019.png"/>
<o:File HRef="image020.jpg"/>
<o:File HRef="image021.png"/>
<o:File HRef="image022.jpg"/>
<o:File HRef="image023.png"/>
<o:File HRef="image024.jpg"/>
<o:File HRef="image025.png"/>
<o:File HRef="image026.jpg"/>
<o:File HRef="image027.png"/>
<o:File HRef="image028.jpg"/>
<o:File HRef="image029.png"/>
<o:File HRef="image030.jpg"/>
<o:File HRef="image031.png"/>
<o:File HRef="image032.jpg"/>
<o:File HRef="image033.png"/>
<o:File HRef="image034.jpg"/>
<o:File HRef="image035.png"/>
<o:File HRef="image036.jpg"/>
<o:File HRef="image037.png"/>
<o:File HRef="image038.jpg"/>
<o:File HRef="image039.png"/>
<o:File HRef="image040.jpg"/>
<o:File HRef="image041.png"/>
<o:File HRef="image042.jpg"/>
<o:File HRef="image043.png"/>
<o:File HRef="image044.jpg"/>
<o:File HRef="image045.png"/>
<o:File HRef="image046.jpg"/>
<o:File HRef="filelist.xml"/>
</xml>

Binary file not shown.

After

Width:  |  Height:  |  Size: 824 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 937 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 985 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 915 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 898 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 686 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 923 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@@ -0,0 +1,520 @@
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 11">
<meta name=Originator content="Microsoft Word 11">
<link rel=File-List href="代码编辑帮助文档.files/filelist.xml">
<link rel=Edit-Time-Data href="代码编辑帮助文档.files/editdata.mso">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<title> 代码编辑帮助文档</title>
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>USER</o:Author>
<o:LastAuthor>USER</o:LastAuthor>
<o:Revision>2</o:Revision>
<o:TotalTime>122</o:TotalTime>
<o:Created>2015-05-07T04:43:00Z</o:Created>
<o:LastSaved>2015-05-07T04:43:00Z</o:LastSaved>
<o:Pages>1</o:Pages>
<o:Words>155</o:Words>
<o:Characters>889</o:Characters>
<o:Company>CHINA</o:Company>
<o:Lines>7</o:Lines>
<o:Paragraphs>2</o:Paragraphs>
<o:CharactersWithSpaces>1042</o:CharactersWithSpaces>
<o:Version>11.9999</o:Version>
</o:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:GrammarState>Clean</w:GrammarState>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:;
mso-font-kerning:1.0pt;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:595.3pt 841.9pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
layout-grid:15.6pt;}
div.Section1
{page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]-->
</head>
<body lang=ZH-CN style='tab-interval:21.0pt;text-justify-trim:punctuation'>
<div class=Section1 style='layout-grid:15.6pt'>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><b style='mso-bidi-font-weight:normal'><span style='font-size:
14.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>代码编辑帮助文档</span></b><b style='mso-bidi-font-weight:normal'><span
lang=EN-US style='font-size:14.0pt'><o:p></o:p></span></b></p>
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span lang=EN-US
style='font-size:14.0pt'><o:p>&nbsp;</o:p></span></b></p>
<p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>一.主要菜单操作:</span></p>
<p class=MsoNormal><span lang=EN-US><!--[if gte vml 1]><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:162pt;
height:17.25pt'>
<v:imagedata src="代码编辑帮助文档.files/image001.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=216 height=23
src="代码编辑帮助文档.files/image002.jpg" v:shapes="_x0000_i1025"><![endif]></span></p>
<p class=MsoNormal><span lang=EN-US><span style='mso-spacerun:yes'>&nbsp;
</span>1</span><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>.文件:提供文件的新建</span><span lang=EN-US><!--[if gte vml 1]><v:shape
id="_x0000_i1026" type="#_x0000_t75" style='width:19.5pt;height:18pt'>
<v:imagedata src="代码编辑帮助文档.files/image003.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=26 height=24
src="代码编辑帮助文档.files/image004.jpg" v:shapes="_x0000_i1026"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>,打开</span><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1027"
type="#_x0000_t75" style='width:21pt;height:20.25pt'>
<v:imagedata src="代码编辑帮助文档.files/image005.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=28 height=27
src="代码编辑帮助文档.files/image006.jpg" v:shapes="_x0000_i1027"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>,保存</span><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1028"
type="#_x0000_t75" style='width:16.5pt;height:18.75pt'>
<v:imagedata src="代码编辑帮助文档.files/image007.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=22 height=25
src="代码编辑帮助文档.files/image008.jpg" v:shapes="_x0000_i1028"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>,关闭等操作,编辑器暂时只支持</span><span class=SpellE><span lang=EN-US>javascript</span></span><span
lang=EN-US>(*.<span class=SpellE>js</span>)</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>文件的浏览及编写,暂时只支持单个</span><span
class=SpellE><span lang=EN-US>js</span></span><span style='font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>文件</span><span
lang=EN-US>(</span><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'></span><span class=SpellE><span
lang=EN-US>gamemain.js</span></span><span lang=EN-US>)</span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>的代码提示功能。</span><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US><span style='mso-spacerun:yes'>&nbsp;
</span></span></p>
<p class=MsoNormal><span lang=EN-US><span style='mso-spacerun:yes'>&nbsp;
</span>2</span><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>.编辑:提供编写代码过程中的基础操作,如撤销</span><span
lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1029" type="#_x0000_t75"
style='width:24.75pt;height:19.5pt'>
<v:imagedata src="代码编辑帮助文档.files/image009.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=33 height=26
src="代码编辑帮助文档.files/image010.jpg" v:shapes="_x0000_i1029"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>,复制</span><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1030"
type="#_x0000_t75" style='width:25.5pt;height:22.5pt'>
<v:imagedata src="代码编辑帮助文档.files/image011.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=34 height=30
src="代码编辑帮助文档.files/image012.jpg" v:shapes="_x0000_i1030"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>,粘贴</span><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1031"
type="#_x0000_t75" style='width:26.25pt;height:19.5pt'>
<v:imagedata src="代码编辑帮助文档.files/image013.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=35 height=26
src="代码编辑帮助文档.files/image014.jpg" v:shapes="_x0000_i1031"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>,查找</span><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1032"
type="#_x0000_t75" style='width:21pt;height:19.5pt'>
<v:imagedata src="代码编辑帮助文档.files/image015.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=28 height=26
src="代码编辑帮助文档.files/image016.jpg" v:shapes="_x0000_i1032"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>,替换</span><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1033"
type="#_x0000_t75" style='width:23.25pt;height:22.5pt'>
<v:imagedata src="代码编辑帮助文档.files/image017.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=31 height=30
src="代码编辑帮助文档.files/image018.jpg" v:shapes="_x0000_i1033"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>等等。</span></p>
<p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>向前</span><span lang=EN-US><!--[if gte vml 1]><v:shape
id="_x0000_i1034" type="#_x0000_t75" style='width:21pt;height:19.5pt'>
<v:imagedata src="代码编辑帮助文档.files/image019.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=28 height=26
src="代码编辑帮助文档.files/image020.jpg" v:shapes="_x0000_i1034"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>,向后</span><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1035"
type="#_x0000_t75" style='width:18pt;height:19.5pt'>
<v:imagedata src="代码编辑帮助文档.files/image021.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=24 height=26
src="代码编辑帮助文档.files/image022.jpg" v:shapes="_x0000_i1035"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>是在使用右键菜单中“转到定义”时,返回到上次光标位置。</span></p>
<p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span lang=EN-US><span style='mso-spacerun:yes'>&nbsp;
</span>3</span><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>.选项:提供编写代码过程中的常用操作。</span></p>
<p class=MsoNormal><span lang=EN-US><span style='mso-spacerun:yes'>&nbsp;
</span><span style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'></span><span lang=EN-US>1</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>)格式刷</span><span
lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1036" type="#_x0000_t75"
style='width:22.5pt;height:24.75pt'>
<v:imagedata src="代码编辑帮助文档.files/image023.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=30 height=33
src="代码编辑帮助文档.files/image024.jpg" v:shapes="_x0000_i1036"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:当前文件代码的标准格式化。主要是</span><span lang=EN-US>{}</span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>的层级结构排版,每层</span><span lang=EN-US>{}</span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>自动缩进对齐。注意,如果</span><span lang=EN-US>{}</span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>不匹配,则在输出栏中提示错误,如图:</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><!--[if gte vml 1]><v:shape
id="_x0000_i1037" type="#_x0000_t75" style='width:414.75pt;height:54pt'>
<v:imagedata src="代码编辑帮助文档.files/image025.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=553 height=72
src="代码编辑帮助文档.files/image026.jpg" v:shapes="_x0000_i1037"><![endif]></span></p>
<p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'></span><span lang=EN-US>2</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>)更新文件列表</span><span
lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1038" type="#_x0000_t75"
style='width:22.5pt;height:22.5pt'>
<v:imagedata src="代码编辑帮助文档.files/image027.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=30 height=30
src="代码编辑帮助文档.files/image028.jpg" v:shapes="_x0000_i1038"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:当前文件的函数和变量等语法结构定义,显示在编辑器左侧的文件列表中。如新增代码,点击</span><span
lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1039" type="#_x0000_t75"
style='width:22.5pt;height:22.5pt'>
<v:imagedata src="代码编辑帮助文档.files/image027.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=30 height=30
src="代码编辑帮助文档.files/image028.jpg" v:shapes="_x0000_i1039"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>,则显示最新列表树,如图:</span></p>
<p class=MsoNormal><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1040"
type="#_x0000_t75" style='width:129.75pt;height:397.5pt'>
<v:imagedata src="代码编辑帮助文档.files/image029.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=173 height=530
src="代码编辑帮助文档.files/image030.jpg" v:shapes="_x0000_i1040"><![endif]></span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'></span><span lang=EN-US>3</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>)添加</span><span
lang=EN-US>/</span><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>删除</span> <span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>注释</span><span
lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1041" type="#_x0000_t75"
style='width:30.75pt;height:24pt'>
<v:imagedata src="代码编辑帮助文档.files/image031.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=41 height=32
src="代码编辑帮助文档.files/image032.jpg" v:shapes="_x0000_i1041"><![endif]></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:快速添加或删除注释,两种方式:一单行注释,注释当前光标所在行;二多行注释,注释当前选中的文本</span><span
lang=EN-US>(</span><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>多行或单行</span><span lang=EN-US>)</span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'></span></p>
<p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span lang=EN-US><span style='mso-spacerun:yes'>&nbsp;
</span>4</span><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>.视图:编辑器界面的自定义调整。各子界面布局及功能如下</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'></span><span lang=EN-US>1</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>)工具栏:界面顶部,菜单下方区域,一些主要功能的快捷按钮</span></p>
<p class=MsoNormal><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1042"
type="#_x0000_t75" style='width:414.75pt;height:20.25pt'>
<v:imagedata src="代码编辑帮助文档.files/image033.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=553 height=27
src="代码编辑帮助文档.files/image034.jpg" v:shapes="_x0000_i1042"><![endif]></span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'></span><span lang=EN-US>2</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>)状态栏:界面最底部,显示当前文本编辑状态</span></p>
<p class=MsoNormal><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1043"
type="#_x0000_t75" style='width:414.75pt;height:12.75pt'>
<v:imagedata src="代码编辑帮助文档.files/image035.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=553 height=17
src="代码编辑帮助文档.files/image036.jpg" v:shapes="_x0000_i1043"><![endif]></span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'></span><span lang=EN-US>3</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>)代码编辑区:界面中心位置,代码编辑及文件浏览等</span></p>
<p class=MsoNormal><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1044"
type="#_x0000_t75" style='width:414.75pt;height:204pt'>
<v:imagedata src="代码编辑帮助文档.files/image037.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=553 height=272
src="代码编辑帮助文档.files/image038.jpg" v:shapes="_x0000_i1044"><![endif]></span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'></span><span lang=EN-US>4</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>)输出栏:状态栏和代码编辑区之间,显示一些错误或提示信息</span></p>
<p class=MsoNormal><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1045"
type="#_x0000_t75" style='width:415.5pt;height:36pt'>
<v:imagedata src="代码编辑帮助文档.files/image039.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=554 height=48
src="代码编辑帮助文档.files/image040.jpg" v:shapes="_x0000_i1045"><![endif]></span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'></span><span lang=EN-US>5</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>)文件列表:界面左侧,当前文件函数和变量定义的树结构,双击单个节点光标会自动定位到其定义位置</span></p>
<p class=MsoNormal><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1046"
type="#_x0000_t75" style='width:133.5pt;height:398.25pt'>
<v:imagedata src="代码编辑帮助文档.files/image041.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=178 height=531
src="代码编辑帮助文档.files/image042.jpg" v:shapes="_x0000_i1046"><![endif]></span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'></span><span lang=EN-US>6</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>)引擎列表:界面右侧,引擎提供的公用函数和变量定义的树结构</span></p>
<p class=MsoNormal><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1047"
type="#_x0000_t75" style='width:129pt;height:398.25pt'>
<v:imagedata src="代码编辑帮助文档.files/image043.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=172 height=531
src="代码编辑帮助文档.files/image044.jpg" v:shapes="_x0000_i1047"><![endif]></span></p>
<p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>二.右键菜单:一些主菜单里的基础操作,特殊:</span></p>
<p class=MsoNormal><span lang=EN-US><span style='mso-spacerun:yes'>&nbsp;
</span>1</span><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>.转到定义:光标停留或者选中代码,点击右键,选择“转到定义”,自动跳转到其定义位置</span></p>
<p class=MsoNormal><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1048"
type="#_x0000_t75" style='width:132pt;height:131.25pt'>
<v:imagedata src="代码编辑帮助文档.files/image045.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=176 height=175
src="代码编辑帮助文档.files/image046.jpg" v:shapes="_x0000_i1048"><![endif]></span></p>
<p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>三.热键说明:</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+N</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:新建文件</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+O</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:打开文件</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+S</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:保存文件</span></p>
<p class=MsoNormal><span lang=EN-US>Ctrl+F4</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>:关闭文件</span></p>
<p class=MsoNormal><span lang=EN-US>Alt+F4</span><span style='font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>:退出</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+Z</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:撤销</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Shift+Ctrl+Z</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:重做</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+C</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:复制</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+X</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:剪切</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+V</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:粘贴</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+A</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:选择所有</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+F</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:查找</span></p>
<p class=MsoNormal><span lang=EN-US>F3</span><span style='font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>:查找下一个</span></p>
<p class=MsoNormal><span lang=EN-US>Shift+F3</span><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>:查找上一个</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+R</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:替换</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+D</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:格式化</span></p>
<p class=MsoNormal><span lang=EN-US>Ctrl+/</span><span style='font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>:添加或删除</span>
<span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>注释</span></p>
<p class=MsoNormal><span class=SpellE><span lang=EN-US>Ctrl+G</span></span><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>:更新文件列表</span></p>
</div>
</body>
</html>

Binary file not shown.

View File

@@ -0,0 +1,37 @@
常用函数
1)get_self 获取精灵属性
2)set_self 设置精灵属性
3)set_group 设置群组属性
4)set_level 设置层可见属性(多个层组合一个界面)
5)play_ani 播放动画
6)play_box 播放动画
说明:
set_self(精灵ID,执行属性,执行数据,执行动作,0);
其中精灵ID为需要控制的元素。
执行属性为需要如何控制。
执行数据为控制的值。
执行动作为0,1,2,3,4。相当于等于加上减去乘以除去。其中前三个经常用后两个不常用。
常用执行属性解释:
1 更换资源图 例set_self(1,1,10,0,0); 说明将1号精灵的资源替换为10号资源
18 左右移动 例set_self(1,18,10,1,0); 说明让1号精灵向右移动10个像素
19 上下移动 例set_self(1,19,10,2,0); 说明让1号精灵向上移动10个像素
20 设置精灵的宽 例set_self(1,20,100,0,0); 说明将1号精灵的宽度变成100像素左上角为顶点
21 设置精灵的高 例set_self(1,21,20,1,0); 说明将1号精灵的高度增加20像素左上角为顶点
33 设置精灵缩放 例set_self(1,33,120,0,0); 说明将1号精灵的大小按中心点缩放成120%(实际宽高不变)
34 设置精灵旋转 例set_self(1,34,15,1,0); 说明让1号精灵顺时针旋转15度
35 设置精灵透明度 例set_self(1,35,100,0,0); 说明让1号精灵的透明度变成100范围1~254
36 设置精灵明暗度 例set_self(1,36,10,0,0); 说明让1号精灵的明暗度变成10范围0~100
37 设置是否可见 例set_self(1,37,0,0,0); 说明让1号精灵在画面中不可见
41 设置精灵穿透 例set_self(1,41,0,0,0); 说明让1号精灵变成可穿透效果无法被点击中
43 设置精灵变帧 例set_self(1,43,5,0,0); 说明让1号精灵的帧等于第五帧
45 设置旋转点偏移 例set_self(1,45,15,0,0); 说明让1号精灵的旋转点从中心点为原点向右偏移15像素后在旋转
51 设置镜像显示 例set_self(1,51,1,0,0); 说明让1号精灵垂直变换2为水平变换
特殊执行属性:
7 设置精灵文本内容 例set_self(1,7,"你好"); 说明将1号文字精灵的内容显示成“你好”
7 设置精灵文本内容 例get_self(1,7,"你好我的宽度"); 说明将1号文字精灵的内容显示成“你好我的宽度”的像素宽度
57 设置定时器时长 例set_self(1,57,1000,0,0); 说明开启1号定时器设置为1秒钟执行一次

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a:clrMap xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/>

View File

@@ -0,0 +1,9 @@
<xml xmlns:o="urn:schemas-microsoft-com:office:office">
<o:MainFile HRef="../开发入门必备.htm"/>
<o:File HRef="themedata.thmx"/>
<o:File HRef="colorschememapping.xml"/>
<o:File HRef="image001.png"/>
<o:File HRef="image002.jpg"/>
<o:File HRef="header.htm"/>
<o:File HRef="filelist.xml"/>
</xml>

View File

@@ -0,0 +1,63 @@
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 12">
<meta name=Originator content="Microsoft Word 12">
<link id=Main-File rel=Main-File href="../¿ª·¢ÈëÃűر¸.htm">
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="3074">
<o:colormenu v:ext="edit" fillcolor="none [671]"/>
</o:shapedefaults></xml><![endif]-->
</head>
<body lang=ZH-CN>
<div style='mso-element:footnote-separator' id=fs>
<p class=MsoNormal><span lang=EN-US><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
<hr align=left size=1 width="33%">
<![endif]></span></span></p>
</div>
<div style='mso-element:footnote-continuation-separator' id=fcs>
<p class=MsoNormal><span lang=EN-US><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
<hr align=left size=1>
<![endif]></span></span></p>
</div>
<div style='mso-element:endnote-separator' id=es>
<p class=MsoNormal><span lang=EN-US><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
<hr align=left size=1 width="33%">
<![endif]></span></span></p>
</div>
<div style='mso-element:endnote-continuation-separator' id=ecs>
<p class=MsoNormal><span lang=EN-US><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
<hr align=left size=1>
<![endif]></span></span></p>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,854 @@
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 12">
<meta name=Originator content="Microsoft Word 12">
<link rel=File-List href="开发入门必备.files/filelist.xml">
<link rel=Edit-Time-Data href="开发入门必备.files/editdata.mso">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>Administrator</o:Author>
<o:LastAuthor>Administrator</o:LastAuthor>
<o:Revision>2</o:Revision>
<o:TotalTime>85</o:TotalTime>
<o:Created>2015-09-08T08:51:00Z</o:Created>
<o:LastSaved>2015-09-08T08:51:00Z</o:LastSaved>
<o:Pages>2</o:Pages>
<o:Words>142</o:Words>
<o:Characters>815</o:Characters>
<o:Lines>6</o:Lines>
<o:Paragraphs>1</o:Paragraphs>
<o:CharactersWithSpaces>956</o:CharactersWithSpaces>
<o:Version>12.00</o:Version>
</o:DocumentProperties>
</xml><![endif]-->
<link rel=themeData href="开发入门必备.files/themedata.thmx">
<link rel=colorSchemeMapping href="开发入门必备.files/colorschememapping.xml">
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:DontUseIndentAsNumberingTabStop/>
<w:FELineBreak11/>
<w:WW11IndentRules/>
<w:DontAutofitConstrainedTables/>
<w:AutofitLikeWW11/>
<w:HangulWidthLikeWW11/>
<w:UseNormalStyleForList/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="&#45;-"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-536870145 1107305727 0 0 415 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-536870145 1073786111 1 0 415 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-font-family:;
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:1.0pt;}
p.MsoHeader, li.MsoHeader, div.MsoHeader
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-link:"页眉 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
mso-pagination:none;
tab-stops:center 207.65pt right 415.3pt;
layout-grid-mode:char;
border:none;
mso-border-bottom-alt:solid windowtext .75pt;
padding:0cm;
mso-padding-alt:0cm 0cm 1.0pt 0cm;
font-size:9.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-font-family:;
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:1.0pt;}
p.MsoFooter, li.MsoFooter, div.MsoFooter
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-link:"页脚 Char";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:none;
tab-stops:center 207.65pt right 415.3pt;
layout-grid-mode:char;
font-size:9.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-font-family:;
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:1.0pt;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-link:"批注框文本 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:9.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-font-family:;
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:1.0pt;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:21.0pt;
mso-char-indent-count:2.0;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-font-family:;
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:1.0pt;}
span.Char
{mso-style-name:"批注框文本 Char";
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:;
mso-ansi-font-size:9.0pt;
mso-bidi-font-size:9.0pt;}
span.Char0
{mso-style-name:"页眉 Char";
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:;
mso-ansi-font-size:9.0pt;
mso-bidi-font-size:9.0pt;
mso-font-kerning:1.0pt;}
span.Char1
{mso-style-name:"页脚 Char";
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:;
mso-ansi-font-size:9.0pt;
mso-bidi-font-size:9.0pt;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-fareast-font-family:;
mso-hansi-font-family:Calibri;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;
mso-footnote-separator:url("开发入门必备.files/header.htm") fs;
mso-footnote-continuation-separator:url("开发入门必备.files/header.htm") fcs;
mso-endnote-separator:url("开发入门必备.files/header.htm") es;
mso-endnote-continuation-separator:url("开发入门必备.files/header.htm") ecs;}
@page WordSection1
{size:595.3pt 841.9pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
layout-grid:15.6pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:394478214;
mso-list-type:hybrid;
mso-list-template-ids:2108559854 809295648 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-text:%1;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Calibri","sans-serif";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="3074">
<o:colormenu v:ext="edit" fillcolor="none [671]"/>
</o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
</head>
<body lang=ZH-CN style='tab-interval:21.0pt;text-justify-trim:punctuation'>
<div class=WordSection1 style='layout-grid:15.6pt'>
<p class=MsoNormal style='text-indent:128.0pt;mso-char-indent-count:8.0'><span
style='font-size:16.0pt;font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>必备入门技巧</span><span lang=EN-US style='font-size:
16.0pt'><o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US>1</span><span style='font-family:宋体;
mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>)学习和开发</span><span
lang=EN-US>js</span><span style='font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>游戏,必须掌握使用</span><span lang=EN-US>f12</span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>查看谷歌浏览器的调试环境,在这里可以发现你代码书写和运行的错误。</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体;mso-bidi-font-family:宋体;
mso-font-kerning:0pt;mso-no-proof:yes'><!--[if gte vml 1]><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="图片_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75"
style='width:420pt;height:134.25pt;visibility:visible'>
<v:imagedata src="开发入门必备.files/image001.png" o:title="Y@JH]Q{WJAU3BPWMS4~A3$N"/>
</v:shape><![endif]--><![if !vml]><img width=560 height=179
src="开发入门必备.files/image002.jpg" v:shapes="图片_x0020_1"><![endif]></span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体;mso-bidi-font-family:宋体;
mso-font-kerning:0pt'><o:p></o:p></span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体;mso-bidi-font-family:宋体;
mso-font-kerning:0pt'>2</span><span style='font-size:12.0pt;font-family:宋体;
mso-bidi-font-family:宋体;mso-font-kerning:0pt'></span><span style='font-family:
宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>学习和开发</span><span
lang=EN-US>js</span><span style='font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>游戏,必须掌握的</span><span lang=EN-US> js</span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>数据类型</span><span
lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span></span></p>
<p class=MsoListParagraph style='margin-left:18.0pt;text-indent:-18.0pt;
mso-char-indent-count:0;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US style='mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri'><span
style='mso-list:Ignore'>1<span style='font:7.0pt "Times New Roman"'>&nbsp; </span></span></span><![endif]><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>数字类型</span></p>
<p class=MsoListParagraph style='margin-left:18.0pt;text-indent:0cm;mso-char-indent-count:
0'><span style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:
Calibri'>例如:</span><span lang=EN-US>var<span style='mso-spacerun:yes'>&nbsp;
</span>i=100;</span></p>
<p class=MsoListParagraph style='margin-left:18.0pt;text-indent:0cm;mso-char-indent-count:
0'><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span lang=EN-US>2,</span><span style='font-family:宋体;
mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>文字类型</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;</span></span><span style='font-family:宋体;
mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>例如:</span><span
lang=EN-US>var s=”</span><span style='font-family:宋体;mso-ascii-font-family:
Calibri;mso-hansi-font-family:Calibri'>你好</span><span lang=EN-US></span></p>
<p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span lang=EN-US>3</span><span style='font-family:宋体;
mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>,数组类型</span></p>
<p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>例如:</span><span lang=EN-US>var<span
style='mso-spacerun:yes'>&nbsp; </span>a=[];</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>a[0]=100;</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>a[1]=”</span><span style='font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>你好</span><span lang=EN-US>123”</span></p>
<p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>注意从</span><span lang=EN-US>0</span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>最小开始</span></p>
<p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span lang=EN-US>4</span><span style='font-family:宋体;
mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>,容器类型</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;</span></span><span style='font-family:宋体;
mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>例如</span><span
lang=EN-US> var bb={};</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bb.a=[];</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bb.a[1]=99;</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bb.i=123;</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bb.s=”</span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>你好</span><span
lang=EN-US>123”;</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bb.bbz={};</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bb.bbz.i=100;</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bb.bbz.s=”</span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>你好</span><span
lang=EN-US>321”</span></p>
<p class=MsoNormal><span lang=EN-US>showmessage(bb.s);</span></p>
<p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>注意:可以使用</span><span lang=EN-US>.</span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>来包容</span></p>
<p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>其它类型,包括容器类型</span></p>
<p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体;mso-bidi-font-family:宋体;
mso-font-kerning:0pt'>3</span><span style='font-size:12.0pt;font-family:宋体;
mso-bidi-font-family:宋体;mso-font-kerning:0pt'></span><span style='font-family:
宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>学习和开发</span><span
lang=EN-US>js</span><span style='font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>游戏,必须掌握的</span><span lang=EN-US><span
style='mso-tab-count:1'> </span></span><span style='font-family:宋体;mso-ascii-font-family:
Calibri;mso-hansi-font-family:Calibri'>分割字符串</span> <span style='font-family:
宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>为数组。</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span style='mso-spacerun:yes'>&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>例如</span><span
lang=EN-US> var s=123,,456,,789;</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>var
a=ifast_split(s,,,);</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>showmessage(a[1]);</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>显示</span><span
lang=EN-US>456</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span></span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US>4) </span><span style='font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>学习和开发</span><span lang=EN-US>js</span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>游戏,必须掌握的</span><span
lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp; </span>json</span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>类型和字符串相互转换。</span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:10.5pt;
mso-char-indent-count:1.0;mso-pagination:widow-orphan'><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;</span>var hh=[];</span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:10.5pt;
mso-char-indent-count:1.0;mso-pagination:widow-orphan'><span lang=EN-US>hh[0]=100;</span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:10.5pt;
mso-char-indent-count:1.0;mso-pagination:widow-orphan'><span lang=EN-US>hh[1]='111,,222,,333';</span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:10.5pt;
mso-char-indent-count:1.0;mso-pagination:widow-orphan'><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp; </span>var s=ifast_jsontostring(hh);//json</span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>转字符串</span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:10.5pt;
mso-char-indent-count:1.0;mso-pagination:widow-orphan'><span lang=EN-US><span
style='mso-spacerun:yes'>&nbsp;&nbsp; </span>showmessage(s);</span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:10.5pt;
mso-char-indent-count:1.0;mso-pagination:widow-orphan'><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:21.0pt;
mso-char-indent-count:2.0;mso-pagination:widow-orphan'><span lang=EN-US>var
aaa=ifast_tojson(s);//</span><span style='font-family:宋体;mso-ascii-font-family:
Calibri;mso-hansi-font-family:Calibri'>字符串转</span><span lang=EN-US>json</span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:21.0pt;
mso-char-indent-count:2.0;mso-pagination:widow-orphan'><span style='font-family:
宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>可以自己随便测试转化。熟悉</span><span
lang=EN-US>json</span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:21.0pt;
mso-char-indent-count:2.0;mso-pagination:widow-orphan'><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US>5) </span><span style='font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>学习和开发</span><span lang=EN-US>js</span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>游戏,必须掌握的</span><span
lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>网络收发数据</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span style='mso-spacerun:yes'>&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>注意网络因为有延时,收发数据是分开处理的</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span style='mso-spacerun:yes'>&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>获取数据函数</span><span
lang=EN-US>ifast_http(myid,url)</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span style='mso-spacerun:yes'>&nbsp;&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>接收函数在</span><span
lang=EN-US>gameabc_face.httpmessage=function(myid,url,data)</span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>里面处理</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span style='mso-spacerun:yes'>&nbsp;</span><span
style='mso-spacerun:yes'>&nbsp;</span><span
style='mso-spacerun:yes'>&nbsp;</span></span><span style='font-family:宋体;
mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>通过参数</span><span
lang=EN-US>myid</span><span style='font-family:宋体;mso-ascii-font-family:Calibri;
mso-hansi-font-family:Calibri'>来区分数据来源</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span style='mso-spacerun:yes'>&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>具体可以自己联系获取数据</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span style='mso-spacerun:yes'>&nbsp; </span></span><span
style='font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri'>例如:</span><span
lang=EN-US>gameabc</span><span style='font-family:宋体;mso-ascii-font-family:
Calibri;mso-hansi-font-family:Calibri'>本身支持网络文件读取。可以用于简单网络游戏编写。</span></p>
<p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
lang=EN-US><span style='mso-spacerun:yes'>&nbsp;&nbsp; </span></span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:21.0pt;
mso-char-indent-count:2.0;mso-pagination:widow-orphan'><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:21.0pt;
mso-char-indent-count:2.0;mso-pagination:widow-orphan'><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:21.0pt;
mso-char-indent-count:2.0;mso-pagination:widow-orphan'><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<span lang=EN-US style='font-size:10.5pt;mso-bidi-font-size:11.0pt;font-family:
"Calibri","sans-serif";mso-fareast-font-family:宋体;mso-bidi-font-family:"Times New Roman";
mso-font-kerning:1.0pt;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;
mso-bidi-language:AR-SA'><br clear=all style='mso-special-character:line-break;
page-break-before:always'>
</span>
<p class=MsoNormal align=left style='text-align:left;text-indent:10.5pt;
mso-char-indent-count:1.0;mso-pagination:widow-orphan'><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:10.5pt;
mso-char-indent-count:1.0;mso-pagination:widow-orphan'><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal align=left style='text-align:left;text-indent:10.5pt;
mso-char-indent-count:1.0;mso-pagination:widow-orphan'><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
</div>
</body>
</html>

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,25 @@
前提:
1、将游戏的大致思路设计完善
2、针对游戏制作简图存放到程序目录下的Projects文件夹内的游戏名称里的assets\bmp文件夹里。
例如E:\陆松ABC\Projects\feitianzhanshu\assets\bmp
3、打开程序进入设计步骤
开始设计:
1、根据设计思路加载精灵
2、通过精灵的事件属性进入代码写作流程
精灵的事件属性:点击精灵后,在右下角的属性框里先择事件,就可以看到。包含如下:
mousedown点下事件——点中该精灵后可触发的事件。
mouseup弹起事件——点中该精灵后再放开时可触发的事件。
mousemove移动事件——控制被点中的精灵跟随着鼠标手指移动的事件。
ontimer定时器事件——控制定时操作的事件。
3,在游戏代码中使用
set_self
set_group
set_level 三个函数 基本可以完成游戏开放
动画函数
play_ani
play_box 见说明
4、测试游戏
首先需要安装谷歌浏览器
然后第一次测试时需点击程序菜单栏里的“运行”然后选择“参数设定”。将谷歌浏览器的地址输入到IE浏览栏。然后确定。
之后再在快捷操作栏(图标栏),点击右三角箭头图标右边的地球图标,再点击右三角箭头图标即可。

5
games/games/History.txt Normal file
View File

@@ -0,0 +1,5 @@
G:\Works\YouleGames\games\games\Projects\clinet\zpy\
G:\Works\YouleGames\games\games\Projects\clinet\sangelaok\
G:\Works\YouleGames\games\games\Projects\clinet\niuniu\
G:\Works\YouleGames\games\games\Projects\clinet\guanpai-jx\
G:\Works\YouleGames\games\games\Projects\clinet\doudizhu\

37
games/games/Local.ini Normal file
View File

@@ -0,0 +1,37 @@
[System]
Language=Chinese
TxtFontFile=android.ttf
TxtFontName=Droid Sans Fallback
Explorer=C:\Program Files\Google\Chrome\Application\chrome.exe
[Project]
DefaultSceneWidth=1200
DefaultSceneHeight=1800
DefaultScreenWidth=800
DefaultScreenHeight=1280
[ImageRes]
AddResMode=0
DelResAsk=1
ImpSubDir=1
ImpPng=1
ImpBmp=0
ImpJpg=0
ImpJpeg=0
ImpIco=0
ImpEmf=0
ImpWmf=0
ImpGif=0
ImpTee=0
[TextRes]
DelResAsk=1
[VoiceRes]
AddResMode=1
DelResAsk=1
ImpSubDir=1
ImpMp3=1
ImpWav=1

View File

@@ -0,0 +1,381 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
<meta name="viewport" content="width=device-width,initial-scale=1 user-scalable=0"/>
<title>后台接口表</title>
</head>
<body>
<div id="divChat">
<textarea name="txtChatMain" id="txtChatMain" readonly="readonly" class="txtarea"></textarea>
</div>
<style type='text/css'>
div#divChat { width:30em; }
textarea.txtarea { float:left; width: 34em; height: 20em;}
</style>
<script type="text/javascript" src="md5.js"></script>
<script type="text/javascript" src="indexDb.js"></script>
<script type="text/javascript" src="lz-string.js"></script>
<script type="text/javascript" src="minhttp.js"></script>
<script type="text/javascript" src="packet.js"></script>
<script type="text/javascript">
// Websocket object
var ws = null;
// Websocket 连接地址
var ws_url = "ws://127.0.0.1:56000";
//临时屏蔽某个游戏的数据包
var blacknamelist_game = [];
// Helper functions
function $() {
return document.getElementById(arguments[0]);
}
function logMsg(msg) {
$('txtChatMain').value += msg + '\n';
}
function logmsg(msg) {
$('txtChatMain').value += msg + '\n';
}
function sendMsg(msg) {
try{
ws.send(msg);
}catch(e){
console.log(min_now() + "发包报错。");
console.log(msg);
console.log(e);
}
}
function sendmsg(msg) {
try{
ws.send(msg);
}catch(e){
console.log(min_now() + "发包报错。");
console.log(msg);
console.log(e);
}
}
//重新连接
function reconnect(){
ws = null;
connectWebSocket();
}
// Websocket functions
function connectWebSocket() {
OnBeginConnectedServerChat();
if ("WebSocket" in window) {
// Create new websocket connection
ws = new WebSocket(ws_url);
// Called after connection is established
ws.onopen = function() {
logMsg(min_now() + ' tcp connected to: ' + ws.url);
sendMsg('dfw19770109'); //告诉ServerChat.exe我是逻辑服务器
ws.wsisclose = false;
};
// Called when connection is closed
ws.onclose = function() {
ws.wsisclose = true;
logMsg(min_now() + " Connection closed!");
ws.reconnecttimer = min_ontimeout(reconnect, 5000);
};
// Called when a new message is received
ws.sendall = function (msg) {
if (ws.wsisclose){
return;
}
if (typeof(msg) == 'string') {
sendMsg('@toallall:' + msg);
}
else
{
var s = JSON.stringify(msg);
sendMsg('@toallall:' + s);
}
}
//Send message to HTTP client
ws.sendtou = function (head, msg) {
if (ws.wsisclose){
return;
}
sendMsg(head + msg);
}
//Send message to TCP client
ws.sendbyids = function(ids, msg) {
if (ws.wsisclose){
return;
}
var s = '@tooneone:';
var str_ids;
if (typeof(msg) == 'string')
{}
else
{
msg = JSON.stringify(msg);
}
if (typeof(ids) == 'string')
{
str_ids = ids;
}
else
{
//ids:[1,5,8] 要转成字符串 1,5,8
str_ids = ids[0];
for (var i=1; i<ids.length; i++)
{
str_ids = str_ids + ',' + ids[i];
}
}
s = s + str_ids + ':' + msg;
sendMsg(s);
}
ws.sendclosetcp = function(ids) {
if (ws.wsisclose){
return;
}
var s = '@toclosed:';
var str_ids;
if (typeof(ids) == 'string') {
str_ids = ids;
}else{
//ids:[1,5,8] 要转成字符串 1,5,8
str_ids = ids[0];
for (var i=1; i<ids.length; i++)
{
str_ids = str_ids + ',' + ids[i];
}
}
s = s + str_ids+ ':a';
sendMsg(s);
}
ws.onmessage = function (msg) {
if (msg.data)
{
// logMsg(msg.data);
var arr = msg.data;
var tou = arr.substr(10, 5);
// var arrs = arr.split(":");
//取前面50个字符以免全字符split提高效率
var arr50 = arr.substr(0, 50);
var arrs = arr50.split(":");
if (tou == 'http_')
{//http
var s1 = '@tooneone' + ':' + arrs[1] + ':';
var s2 = "";
if (arrs.length > 2)
{//是数据,否则是命令
s2 = msg.data.substr(s1.length, msg.data.length-s1.length);
}
OnHttpMessage(s1, s2);
}
else
{//tcp
var ss0 = arrs[0];
var ss1 = arrs[1];
var sip = arrs[2];
var s01 = ss0 + ':' + ss1 + ':' + sip + ':';
var ss2 = "";
if (arrs.length > 3)
{//是数据,否则是命令
ss2 = msg.data.substr(s01.length, msg.data.length - s01.length);
}
OnTcpMessage(ss0, ss1, sip, ss2);
// var ss0 = arrs[0];
// var ss1 = arrs[1];
// var s01 = ss0 + ':' + ss1 + ':';
// var ss2 = "";
// if (arrs.length > 2)
// {//是数据,否则是命令
// ss2 = msg.data.substr(s01.length, msg.data.length - s01.length);
// }
// OnTcpMessage(ss0, ss1, "", ss2);
}
};
return;
};
}
else
{
logMsg('Browser doesn\'t support websockets!');
}
OnAfterConnectedServerChat();
}
//server.html连接ServerChat.exe前的事件
function OnBeginConnectedServerChat()
{
}
//server.html连接ServerChat.exe后的事件
function OnAfterConnectedServerChat()
{
//给packet_face传递发包函数
if (typeof(packet_face) != "undefined")
{
global.packet_face.SendPack_Tcp = ws.sendbyids;
global.packet_face.SendPack_Http = ws.sendtou;
}
}
//收到客户端http发包触发的事件
function OnHttpMessage(str_httpid, str_data)
{
try
{
str_data = min_replaceAll(str_data, "%", "");
str_data = decodeURIComponent(str_data); //解码
}
catch(e)
{
console.log("OnHttpMessage_decodeURIComponent:" + str_data);
return;
}
var s = "";
s = str_data.substr(0, 6);
if (s == "&data=") {
str_data = str_data.replace("&data=", "");
}
s = str_data.substr(0, 5);
if (s == "data=") {
str_data = str_data.replace("data=", "");
}
s = str_data.substr(0, 2);
if (s == "&=") {
str_data = str_data.replace("&=", "");
}
s = str_data.substr(0, 1);
if (s == "&") {
str_data = str_data.replace("&", "");
}
if (typeof(packet_face) != "undefined") {
if (str_data) {
try
{
var json_data = JSON.parse(str_data);
if (json_data){
json_data.conmode = "http";
json_data.fromid = str_httpid;
packet_face.ReceivePack(json_data);
}
}
catch(e)
{
console.log(min_now() + " str_data:" + str_data);
console.log(e);
}
}
}
}
//收到客户端tcp发包触发的事件
function OnTcpMessage(str_com, str_tcpid, str_ip, str_data)
{
switch (str_com)
{
case "@toconcon": //连上ServerChat.exe
break;
case "@tologin1": //客户端连接上
if (typeof(packet_face) != "undefined")
{
packet_face.OnTcpConnected(str_tcpid);
}
break;
case "@toleave1": //客户端断开
if (typeof(packet_face) != "undefined")
{
packet_face.OnTcpDisConnected(str_tcpid);
}
break;
case "@toserver": //客户端发包
if (typeof(packet_face) != "undefined")
{
try
{
//去除%否则decodeURIComponent(str_data)会报错
str_data = min_replaceAll(str_data, "%", "");
//解码
str_data = decodeURIComponent(str_data);
var json_data = JSON.parse(str_data);
}
catch(e)
{
console.log(min_now() + "非法的TCP连接");
var errlog = {};
errlog.com = str_com;
errlog.tcpid = str_tcpid;
errlog.ip = str_ip;
errlog.data = str_data;
console.log(errlog);
//断开tcp连接
ws.sendclosetcp(str_tcpid);
return;
}
if (json_data){
try
{
//屏蔽某个有错的route
if (json_data.route){
if (min_ary_indexof(blacknamelist_game, json_data.route) > -1){
return;
}
}
}
catch(e)
{}
json_data.conmode = "tcp";
json_data.fromid = str_tcpid;
json_data.ip = str_ip;
try
{
packet_face.ReceivePack(json_data);
}
catch(e)
{
console.log(min_now() + "执行rpc出错");
console.log(json_data);
console.log(e);
}
}
}
break;
default:
console.log(min_now() + "非法的TCP连接");
var errlog = {};
errlog.com = str_com;
errlog.tcpid = str_tcpid;
errlog.ip = str_ip;
errlog.data = str_data;
console.log(errlog);
//断开tcp连接
ws.sendclosetcp(str_tcpid);
break;
}
}
window.onload = connectWebSocket();
</script>
</body>
</html>

View File

@@ -0,0 +1,13 @@
///////////////////////////////////////////////////
//////////////////////应用列表/////////////////////
///////////////////////////////////////////////////
//系统服务
min_loadJsFile("server/app.js", function (){
//友乐游戏
min_loadJsFile("youle/app.js", function (){
//动态更新模块
min_loadJsFile("update/app.js", function (){
});
});
});

View File

@@ -0,0 +1,77 @@
///////////////////////////////////////////////////
//////////////cls_app: 应用基础类//////////////////
///////////////////////////////////////////////////
var cls_app = cls_app || {
//构造函数
new: function(_str_appname, _obj_packet) {
/*
参数说明:
_str_appname 应用名称
_obj_packet 所有应用的总包接口对象
*/
//创建一个实例
var app = {};
// ================= 实例的公有属性 ================= //
//应用名称
app.appname = _str_appname;
//总包接口
app.packet_face = _obj_packet;
//给客户端发包函数
app.SendPack = app.packet_face.SendPack;
//给http客户端发包函数
app.SendPack_Http = app.packet_face.SendPack_Http;
//给tcp客户端发包函数
app.SendPack_Tcp = app.packet_face.SendPack_Tcp;
//将app添加到packet_face的应用列表中
app.packet_face.applist.push(app);
//模块列表 [{"face":room_face,"facename":"room_face","routename":"room"}]
app.modlist = [];
// ================= 实例的公有方法 ================= //
//TCP客户端断开
app.OnTcpDisConnected = function(_str_tcpid) {
cls_app.OnTcpDisConnected(app, _str_tcpid);
}
//处理数据包
app.ReceivePack = function(_pack) {
return cls_app.ReceivePack(app, _pack);
}
return app;
},
// ================= 所有实例的共享方法 ================= //
//TCP客户端断开
OnTcpDisConnected: function(_obj_app, _str_tcpid) {
for (var i = 0; i < _obj_app.modlist.length; i++) {
if (_obj_app.modlist[i].OnTcpDisConnected) {
_obj_app.modlist[i].OnTcpDisConnected(_str_tcpid);
}
}
},
//处理数据包
ReceivePack: function(_obj_app, _pack) {
if (typeof(_pack) == "string") {
_pack = JSON.parse(_pack); //转换json
}
//路由各个模块
for (var i = 0; i < _obj_app.modlist.length; i++) {
if (_pack.route == _obj_app.modlist[i].routename) {
if (_obj_app.modlist[i].DoPack) {
var repack = _obj_app.modlist[i].DoPack(_pack);
//发包
if (repack && _obj_app.SendPack) {
_obj_app.SendPack(repack);
}
return repack;
}
break;
}
}
}
}

View File

@@ -0,0 +1,463 @@
/*================= cls_aset2: 小局基础类 =================
注意:
1此牌类是基础小局类各子游戏需要继承此基础类后下编写自己的小局类。
2子游戏开发人员不能修改该文件。
=========================================================*/
var cls_aset2 = {
//================ 新建一小局 ================
New: function(){
//定义小局
var o_aset = this.declare();
//初始化牌列表
this.initcardlist(o_aset);
//除掉不要的牌
this.deletecard(o_aset);
//设置每张牌的分值
this.setcardscore(o_aset);
return o_aset;
},
//小局的数据定义
declare: function(){
var o_aset = {};
//玩家列表
o_aset.playerlist = []; //在此定义和存储玩家的状态,比如准备状态、叫分的分值、游戏的得分等等,格式如[[], [], ...], [{}, {}, ...], [player, player, ...]
//牌列表
o_aset.cardlist = []; //格式为[[], [], [], ...],里面的每个小数组就是一张牌
//庄(位置)
o_aset.zhuang = -1;
//控制权(位置)
o_aset.control = -1;
//当前是第几轮出牌
o_aset.play = 0;
//当前是本轮的第几个出牌
o_aset.index = 0;
return o_aset;
},
//初始化牌列表
initcardlist: function(o_aset){
//几副牌
var card_count = this.get_cardcount();
//牌类
var card_class = this.get_cardclass();
//初始化
for (var i = 1; i <= card_count; i++){ //几副牌
for (var j = 1; j <= 4; j++){ //方块、梅花、红心、黑桃四种花色
for (var k = 1; k <= 13; k++){ //A到K
var id = (i - 1) * 54 + (j - 1) * 13 + k - 1; //牌的绝对id
//新建一张牌
var card_object = card_class.New(id);
o_aset.cardlist.push(card_object);
}
}
//小王
var card_object = card_class.New((i - 1) * 54 + 53 - 1);
o_aset.cardlist.push(card_object);
//大王
var card_object = card_class.New((i - 1) * 54 + 54 - 1);
o_aset.cardlist.push(card_object);
}
},
//几副牌
get_cardcount: function(){
return 1;
},
//小局对应的牌类
get_cardclass: function(){
return cls_card2;
},
//除掉不要的牌
deletecard: function(o_aset){
for (var i = 0; i < o_aset.cardlist.length; i++){
var o_card = o_aset.cardlist[i];
this.get_cardclass().SetDeal(o_card, -1);
}
//下面的代码是3人二七王除掉3、4的例子。类似功能需要在子游戏中重写该方法
// for (var i = 0; i < o_aset.cardlist.length; i++){
// var o_card = o_aset.cardlist[i];
// var card_number = this.get_cardclass().GetNumber(o_card);
// if (card_number == 3 || card_number == 4){
// this.get_cardclass().SetDeal(o_card, -2);
// }
// }
},
//设置每张牌的分值
setcardscore: function(o_aset){
for (var i = 0; i < o_aset.cardlist.length; i++){
var o_card = o_aset.cardlist[i];
var card_deal = this.get_cardclass().GetDeal(o_card);
if (card_deal != -2){
this.get_cardclass().SetScore(o_card, 0);
}
}
//下面的代码是设置5、10、K分值的例子。类似功能需要在子游戏中重写该方法
// for (var i = 0; i < o_aset.cardlist.length; i++){
// var o_card = o_aset.cardlist[i];
// var card_deal = this.get_cardclass().GetDeal(o_card);
// if (card_deal != -2){
// var card_number = this.get_cardclass().GetNumber(o_card);
// switch (card_number){
// case 5:
// this.get_cardclass().SetScore(o_card, 5);
// break;
// case 10:
// this.get_cardclass().SetScore(o_card, 10);
// break;
// case 13:
// this.get_cardclass().SetScore(o_card, 10);
// break;
// }
// }
// }
},
//===================== 发牌 =====================
DealCard: function(o_aset, o_desk){
//需要发牌的位置列表
var seatlist = this.get_dealseatlist(o_aset, o_desk);
//每人需要发多少张牌
var dealcount = this.get_dealcount(o_aset, o_desk);
//需要留几张底牌
var bottomcount = this.get_bottomcount(o_aset, o_desk);
//注意dealcount * seatlist + bottomcount必须等于除掉不要的牌之后的牌的总数
//发牌数组
var tmplist = [];
for (var i = 0; i < seatlist.length; i++){
for (var j = 0; j < dealcount; j++){
tmplist.push(seatlist[i]);
}
}
for (var i = 0; i < bottomcount; i++){
tmplist.push(-1);
}
//随机发牌
for (var i = 0; i < o_aset.cardlist.length; i++){
var o_card = o_aset.cardlist[i];
var card_deal = this.get_cardclass().GetDeal(o_card);
if (card_deal != -2){
var idx = min_random(0, tmplist.length - 1);
this.get_cardclass().SetDeal(o_card, tmplist[idx]);
this.get_cardclass().SetStart(o_card, tmplist[idx]);
this.get_cardclass().SetPlay(o_card, -1);
this.get_cardclass().SetOver(o_card, tmplist[idx]);
//将发牌数组的最后一位移至该位置
if (idx < tmplist.length - 1) {
tmplist[idx] = tmplist[tmplist.length - 1];
};
//发牌数组长度减一
tmplist.length = tmplist.length - 1;
}
}
},
//需要发牌的位置列表
get_dealseatlist: function(o_aset, o_desk){
var seatlist = [];
for (var i = 0; i < o_desk.o_room.seatlist.length; i++){
if (o_desk.o_room.seatlist[i]){
if (o_desk.o_room.seatlist[i].gameinfo.isbet){
seatlist.push(i);
}
}
}
return seatlist;
},
//每人需要发多少张牌
get_dealcount: function(o_aset, o_desk){
return 0;
},
//需要留几张底牌
get_bottomcount: function(o_aset, o_desk){
return 0;
},
//==================== 拿底牌 ====================
PutBottomCard: function(o_aset, seat){
var bottomcardlist = this.GetBottomCards(o_aset);
for (var i = 0; i < bottomcardlist.length; i++) {
var o_card = bottomcardlist[i];
this.get_cardclass().SetStart(o_card, seat);
}
},
//===================== 埋牌 =====================
BuryCard: function(o_aset, seat, cardidlist){
/*参数:
seat:哪个位置要埋牌
cardidlist:要埋的牌的id
返回值true表示执行成功false表示执行失败。*/
if (this.canBuryCard(o_aset, seat, cardidlist)){
this.doBuryCard(o_aset, seat, cardidlist);
return true;
} else {
return false;
}
},
get_burycardcount: function(){
return 8;
},
//检查是否可埋牌
canBuryCard: function(o_aset, seat, cardidlist){
//检查控制权
if (seat != o_aset.control){
return false;
}
//检查埋牌数量
if (cardidlist.length != this.get_burycardcount()){
return false;
}
//检查要埋的牌是否在玩家手上
var inhandcardids = this.GetCardIdsInhand(o_aset, seat);
return min_ary_include(inhandcardids, cardidlist);
},
//埋牌
doBuryCard: function(o_aset, seat, cardidlist){
var cardlist = this.CardIdsToCards(o_aset, cardidlist);
for (var i = 0; i < cardlist.length; i++) {
var o_card = cardlist[i];
this.get_cardclass().SetPlay(o_card, -2);
}
},
//===================== 出牌 =====================
PlayCard: function(o_aset, seat, cardidlist, mode){
/*参数:
seat:哪个位置要出牌
cardidlist:要出的牌的id
mode:出牌模式 0-需要跟随上一家出牌 1-需要跟随第一家出牌
返回值:true表示执行成功false表示执行失败。*/
var can = this.canPlayCard(o_aset, seat, cardidlist, mode); //检查是否可出
if (can.result){ //可出
this.doPlayCard(o_aset, seat, cardidlist); //出下去
return true;
} else { //不可出
return false;
}
},
//检查是否可出牌
canPlayCard: function(o_aset, seat, cardidlist, mode){
var can = {}; //返回的结果
can.result = false; //是否可以出出去
can.cards = null; //牌(对象)
can.cardtype = null; //牌型
can.value = null; //大小
can.flower = null; //花色
//检查控制权
if (seat != o_aset.control){
can.result = false;
return can;
}
//检查要出的牌是否在玩家手上
var inhandcardids = this.GetCardIdsInhand(o_aset, seat);
if (!min_ary_include(inhandcardids, cardidlist)){
can.result = false;
return can;
}
return can;
},
//第一个出牌时分析选中的牌是否可以出出去(主要是分析牌型)
canPlayCard_first: function(o_aset, cardidlist){
var can = {}; //返回的结果
can.result = false; //是否可以出出去
can.cards = null; //牌(对象)
can.cardtype = null; //牌型
can.value = null; //大小
can.flower = null; //花色
return can;
},
//不是第一个出牌时分析选中的牌是否可以出出去(主要是分析牌型是否符合前面出牌的牌型)
canPlayCard_second: function(o_aset, cardidlist, mode){
var can = {}; //返回的结果
can.result = false; //是否可以出出去
can.cards = null; //牌(对象)
can.cardtype = null; //牌型
can.value = null; //大小
can.flower = null; //花色
return can;
},
//出牌
doPlayCard: function(o_aset, seat, cardidlist){
var cardlist = this.CardIdsToCards(o_aset, cardidlist);
for (var i = 0; i < cardlist.length; i++) {
var o_card = cardlist[i];
this.get_cardclass().SetPlay(o_card, o_aset.play);
this.get_cardclass().SetIndex(o_card, o_aset.index);
}
},
//=================== 可跟随的牌 ===================
CanFollowCard: function(o_aset, seat, mode){
//根据第一个人或上一个人出的牌分析seat这个位置上的人必出的牌和可出的牌
},
//==================== 小局结算 =====================
CloseAccount: function(o_aset, o_desk){
},
//================ 获取各种情况的牌 ================
//获取开局时玩家发到手上的牌
GetDealCardsBySeat: function(o_aset, seat){
return this.GetCardsByDealstate(o_aset, seat);
},
GetDealCardIdsBySeat: function(o_aset, seat){
var cardlist = this.GetDealCardsBySeat(o_aset, seat);
return this.CardsToCardIds(cardlist);
},
//获取底牌
GetBottomCards: function(o_aset){
return this.GetCardsByDealstate(o_aset, -1);
},
GetBottomCardIds: function(o_aset){
var cardlist = this.GetBottomCards(o_aset);
return this.CardsToCardIds(cardlist);
},
//获取玩家当前手上有的牌
GetCardsInhand: function(o_aset, seat){
var cardlist = [];
for (var i = 0; i < o_aset.cardlist.length; i++){
var o_card = o_aset.cardlist[i];
var card_start = this.get_cardclass().GetStart(o_card);
if (card_start == seat){
var card_play = this.get_cardclass().GetPlay(o_card);
if (card_play == -1 || card_play == null){
cardlist.push(o_card);
}
}
}
return cardlist;
},
GetCardIdsInhand: function(o_aset, seat){
var cardlist = this.GetCardsInhand(o_aset, seat);
return this.CardsToCardIds(cardlist);
},
//获取埋牌 参数seat谁埋的牌可以不传默认只有一个人会埋牌
GetBuryCards: function(o_aset, seat){
return this.GetCardsByPlaystate(o_aset, -2, seat);
},
GetBuryCardIds: function(o_aset, seat){
var cardlist = this.GetBuryCards(o_aset, seat);
return this.CardsToCardIds(cardlist);
},
//获取上一轮出牌
GetPriorPlayCard: function(o_aset, round){
},
//获取下一轮出牌
GetNextPlayCard: function(o_aset, round){
},
//================== 各种底层函数 ==================
//根据发牌状态获取牌列表
GetCardsByDealstate: function(o_aset, dealstate){
var cardlist = [];
for (var i = 0; i < o_aset.cardlist.length; i++){
var o_card = o_aset.cardlist[i];
var card_deal = this.get_cardclass().GetDeal(o_card);
if (card_deal == dealstate){
cardlist.push(o_card);
}
}
return cardlist;
},
//根据出牌状态获取牌列表
GetCardsByPlaystate: function(o_aset, playstate, seat){
var cardlist = [];
for (var i = 0; i < o_aset.cardlist.length; i++){
var o_card = o_aset.cardlist[i];
var card_play = this.get_cardclass().GetPlay(o_card);
if (card_play == playstate){
if (seat != null){
var card_start = this.get_cardclass().GetStart(o_card);
if (card_start == seat){
cardlist.push(o_card);
}
} else {
cardlist.push(o_card);
}
}
}
return cardlist;
},
//将牌对象列表转换成牌id列表
CardsToCardIds: function(cardlist){
var cardidlist = [];
for (var i = 0; i < cardlist.length; i++){
var o_card = cardlist[i];
var card_id = this.get_cardclass().GetId(o_card);
cardidlist.push(card_id);
}
return cardidlist;
},
//将牌id列表转换成牌对象列表
CardIdsToCards: function(o_aset, cardidlist){
var cardlist = [];
for (var i = 0; i < cardidlist.length; i++){
var o_card = o_aset.cardlist[cardidlist[i]];
cardlist.push(o_card);
}
return cardlist;
},
//新建小局类
NewClass: function(){
var cls = {};
cls.New = cls_aset2.New;
cls.declare = cls_aset2.declare;
cls.initcardlist = cls_aset2.initcardlist;
cls.get_cardcount = cls_aset2.get_cardcount;
cls.get_cardclass = cls_aset2.get_cardclass;
cls.deletecard = cls_aset2.deletecard;
cls.setcardscore = cls_aset2.setcardscore;
cls.DealCard = cls_aset2.DealCard;
cls.get_dealseatlist = cls_aset2.get_dealseatlist;
cls.get_dealcount = cls_aset2.get_dealcount;
cls.get_bottomcount = cls_aset2.get_bottomcount;
cls.PutBottomCard = cls_aset2.PutBottomCard;
cls.BuryCard = cls_aset2.BuryCard;
cls.get_burycardcount = cls_aset2.get_burycardcount;
cls.canBuryCard = cls_aset2.canBuryCard;
cls.doBuryCard = cls_aset2.doBuryCard;
cls.PlayCard = cls_aset2.PlayCard;
cls.canPlayCard = cls_aset2.canPlayCard;
cls.canPlayCard_first = cls_aset2.canPlayCard_first;
cls.canPlayCard_second = cls_aset2.canPlayCard_second;
cls.doPlayCard = cls_aset2.doPlayCard;
cls.CanFollowCard = cls_aset2.CanFollowCard;
cls.CloseAccount = cls_aset2.CloseAccount;
cls.GetDealCardsBySeat = cls_aset2.GetDealCardsBySeat;
cls.GetDealCardIdsBySeat = cls_aset2.GetDealCardIdsBySeat;
cls.GetBottomCards = cls_aset2.GetBottomCards;
cls.GetBottomCardIds = cls_aset2.GetBottomCardIds;
cls.GetCardsInhand = cls_aset2.GetCardsInhand;
cls.GetCardIdsInhand = cls_aset2.GetCardIdsInhand;
cls.GetBuryCards = cls_aset2.GetBuryCards;
cls.GetBuryCardIds = cls_aset2.GetBuryCardIds;
cls.GetPriorPlayCard = cls_aset2.GetPriorPlayCard;
cls.GetNextPlayCard = cls_aset2.GetNextPlayCard;
cls.GetCardsByDealstate = cls_aset2.GetCardsByDealstate;
cls.GetCardsByPlaystate = cls_aset2.GetCardsByPlaystate;
cls.CardsToCardIds = cls_aset2.CardsToCardIds;
cls.CardIdsToCards = cls_aset2.CardIdsToCards;
return cls;
}
}

View File

@@ -0,0 +1,742 @@
/*===================== cls_card2: 牌的基础类 ======================
扑克牌的统一定义:
1单张牌的定义是一个长度为14的数组 [Id, Flower, Number, ArithF, ArithN, Score, Deal, Start, Play, Index, Over, Tag1, Tag2, Tag3]
第一位Id牌的绝对id即数组下标从0开始计数。
第二位Flower牌的物理花色5:王 4:黑桃 3:红心 2:梅花 1:方块。
第三位Number牌的物理大小1:A 2:2 ... 9:9 10:10 11:J 12:Q 13:K 53:小王 54:大王。
第四位ArithF牌的算法花色区别于物理花色用于牌型计算和比较牌的大小。
要求是大于0的整数不能等于0或小于0默认等于物理花色。
第五位ArithN牌的算法大小区别于物理大小用于牌型计算和比较牌的大小。
要求是大于0的整数不能等于0或小于0默认等于物理大小。
第六位Score牌的分值如5、10、K。
第七位Deal发牌状态。
-2规则去除的牌
-1未发的牌底牌
>=0发牌发到谁手上即座位号。
第八位Start开局状态开局时牌在谁手上与座位编号对应。
第九位Play出牌状态。
-2埋的牌
-1未出的牌手上的牌
>=0牌是第几轮出出去的从0开始计数。
第十位Index本轮中的出牌顺序号从0开始计数。
第十一位Over牌局结束时被谁得到与座位编号对应。
第十二位Tag1扩展属性1。
第十三位Tag2扩展属性2。
第十四位Tag3扩展属性3。
2基础牌型的统一定义
所有基础牌型都由两个值表示tong表示一样的牌shun表示连续的牌。
单张tong=1shun=1
对子tong=2shun=1
两连对tong=2shun=2
三连对tong=2shun=3
三个tong=3shun=1
飞机tong=3shun=2
四个tong=4shun=1
五连顺tong=1shun=5
六连顺tong=1shun=6
其他基础牌型以此类推
注意:
1此牌类是基础扑克牌类、通用扑克牌类各子游戏可以直接使用也可以继承此基础类后下编写自己的牌类。
2子游戏开发人员不能修改该文件。
3访问牌的属性时要求使用Get和Set方法不能直接通过数组下标的形式访问。
===================================================================*/
var cls_card2 = {
//新建一张牌
New: function(id){
return this.declare(id);
},
//牌的数据定义
declare: function(id){
//id转物理花色
var IdToFlower = function(cardid){
var yu = cardid % 54;
if (yu == 52 || yu == 53){
return 5;
}
return parseInt(yu / 13) + 1;
}
//id转物理数值
var IdToNumber = function(cardid){
var yu = cardid % 54;
if (yu == 52){
return 53;
}
if (yu == 53){
return 54;
}
return yu % 13 + 1;
}
var o_card = [];
o_card[0] = id;
o_card[1] = IdToFlower(id);
o_card[2] = IdToNumber(id);
o_card[3] = o_card[1];
o_card[4] = o_card[2];
o_card[5] = null;
o_card[6] = null;
o_card[7] = null;
o_card[8] = null;
o_card[9] = null;
o_card[10] = null;
o_card[11] = null;
o_card[12] = null;
o_card[13] = null;
return o_card;
},
//牌的id整型只读
GetId: function(o_card){
return o_card[0];
},
//牌的物理花色,整型,只读
GetFlower: function(o_card){
return o_card[1];
},
//牌的物理大小,整型,只读
GetNumber: function(o_card){
return o_card[2];
},
//牌的算法花色,整型
GetArithF: function(o_card){
return o_card[3];
},
SetArithF: function(o_card, value){
o_card[3] = value;
},
//牌的算法大小,整型
GetArithN: function(o_card){
return o_card[4];
},
SetArithN: function(o_card, value){
o_card[4] = value;
},
//牌的分值,整型
GetScore: function(o_card){
return o_card[5];
},
SetScore: function(o_card, value){
o_card[5] = value;
},
//发牌状态,整型
GetDeal: function(o_card){
return o_card[6];
},
SetDeal: function(o_card, value){
o_card[6] = value;
},
//开局状态,整型
GetStart: function(o_card){
return o_card[7];
},
SetStart: function(o_card, value){
o_card[7] = value;
},
//出牌状态,整型
GetPlay: function(o_card){
return o_card[8];
},
SetPlay: function(o_card, value){
o_card[8] = value;
},
//出牌顺序,整型
GetIndex: function(o_card){
return o_card[9];
},
SetIndex: function(o_card, value){
o_card[9] = value;
},
//结束时被谁得到,整型
GetOver: function(o_card){
return o_card[10];
},
SetOver: function(o_card, value){
o_card[10] = value;
},
//扩展属性
GetTag1: function(o_card){
return o_card[11];
},
SetTag1: function(o_card, value){
o_card[11] = value;
},
GetTag2: function(o_card){
return o_card[12];
},
SetTag2: function(o_card, value){
o_card[12] = value;
},
GetTag3: function(o_card){
return o_card[13];
},
SetTag3: function(o_card, value){
o_card[13] = value;
},
/*
以下提供几个针对牌数组的基础算法,这两个方法是基于牌的算法花色和算法大小实现的,各子游戏在调用前需要将牌的算法花色和算法大小先设置好。
设置算法花色的原则是:
1如果对花色没要求则需要将所有牌的算法花色统一。比如斗地主中的五连顺是任何花色都可以一起连顺子的则需要将所有牌的算法花色全部设置成0表示都是同一花色然后在同一花色下取顺子。
2如果对花色有要求则需要根据实际情况区分算法花色。比如升级中的两连对是指同一花色下的两连对则需要将算法花色设置成不同的值表示不同算法花色之间是不能组成两连对的。
设置算法大小的原则是:算法大小即可表示是否连牌,也可表示牌的大小关系。
1设置算法大小时要求做到数字连续则表示是连牌。比如A的物理大小是1K的物理大小是131和13是不连续的此时需要将A的算法大小设置成14将K的算法大小设置成1314和13是连续的表示A和K可以连牌。再比如王牌和A是不能作为连牌出现的则需要将王的算法大小设置成16将A的算法大小设置成1416和14不是连续的表示王和A不能连牌。
2设置算法大小时要求做到数字大小则表示是牌的大小。比如A的物理大小是1K的物理大小是131比13小但A比K大此时需要将A的算法大小设置成14将K的算法大小设置成1314比13大表示A比K大。再比如王牌比A大则需要将王的算法大小设置成16将A的算法大小设置成1416大于14表示王比A大。
*/
//根据算法花色筛选牌
FilterCardListByArithF: function(o_cardlist, ArithF){
/*参数说明
o_cardlist需要进行筛选的牌数组
ArithF要筛选的算法花色默认不筛选
返回值:筛选后的牌数组*/
var result = [];
for (var i = 0; i < o_cardlist.length; i++) {
var o_card = o_cardlist[i];
var card_ArithF = this.GetArithF(o_card);
if (!ArithF || card_ArithF == ArithF) {
result.push(o_cardlist[i]);
}
}
return result;
},
//根据算法大小筛选牌
FilterCardListByArithN: function(o_cardlist, min_ArithN, max_ArithN){
/*参数说明
o_cardlist需要进行筛选的牌数组
min_ArithN要筛选的算法大小最小值>=,默认不限制
max_ArithN要筛选的算法大小最大值<=,默认不限制
返回值:筛选后的牌数组*/
var result = [];
for (var i = 0; i < o_cardlist.length; i++) {
var o_card = o_cardlist[i];
var card_ArithN = this.GetArithN(o_card);
if ((!min_ArithN || card_ArithN >= min_ArithN) &&
(!max_ArithN || card_ArithN <= max_ArithN)) {
result.push(o_cardlist[i]);
}
}
return result;
},
//根据算法大小对牌数组进行排序(冒泡排序法)
SortCardList: function(o_cardlist, options){
/*参数说明
o_cardlist: 需要进行排序的牌数组
options : 排序选项长度为2的数组结构为[大小排序方向,花色排序方向]
第一位: 算法大小排序方向0-从小到大排序 1-从大到小排序默认为0。
第二位: 物理花色排序方向算法大小相同时是否再按物理花色排序默认为0。
0-根据算法大小排序方向默认选择物理花色排序方向,
options[0]=0时物理花色默认按“方块->梅花->红心->黑桃”排序;
options[0]=1时物理花色默认按“黑桃->红心->梅花->方块”排序。
1-不按物理花色排序在o_cardlist中是什么顺序就什么顺序。
2-按物理花色从小到大,方块->梅花->红心->黑桃
3-按物理花色从大到小,黑桃->红心->梅花->方块
返回值: 排序后的牌数组*/
var ArithN_direct = 0; //算法大小排序方向
var Flower_direct = 0; //物理花色排序方向
if (options) {
ArithN_direct = parseInt(options[0]);
Flower_direct = parseInt(options[1]);
}
if (!Flower_direct){
if (ArithN_direct) {
//算法大小从大到小排序时,默认按“黑桃->红心->梅花->方块”排序
Flower_direct = 3;
} else {
//算法大小从小到大排序时,默认按“方块->梅花->红心->黑桃”排序
Flower_direct = 2;
}
}
//j与j+1互换位置
var doChangej = function(){
var tmp = o_cardlist[j];
o_cardlist[j] = o_cardlist[j + 1];
o_cardlist[j + 1] = tmp;
}
for (var i = 0; i < o_cardlist.length; i++){
for (var j = 0; j < o_cardlist.length - i - 1; j++){
var ArithN_j = this.GetArithN(o_cardlist[j]);
var ArithN_j1 = this.GetArithN(o_cardlist[j + 1]);
if (ArithN_direct == 0 && ArithN_j > ArithN_j1){
//从小到大排序
doChangej();
continue;
}
if (ArithN_direct == 1 && ArithN_j < ArithN_j1){
//从大到小排序
doChangej();
continue;
}
if (ArithN_j == ArithN_j1){
//算法大小相同时
if (Flower_direct == 1){
//不按物理花色排序
continue;
}
var Flower_j = this.GetFlower(o_cardlist[j]);
var Flower_j1 = this.GetFlower(o_cardlist[j + 1]);
if (Flower_direct == 2 && Flower_j > Flower_j1){
//按“方块->梅花->红心->黑桃”排序
doChangej();
continue;
}
if (Flower_direct == 3 && Flower_j < Flower_j1){
//按“黑桃->红心->梅花->方块”排序
doChangej();
continue;
}
}
}
}
return o_cardlist;
},
//获取指定牌型(基础牌型)的各种组合(只组合,无排列)
GetCardListByCardType: function(o_cardlist, cardtype, options){
/*参数说明
o_cardlist:在这些牌中获取指定牌型,必须是经过了从小到大排序后的牌数组。
cardtype :目标牌型长度为2的数组结构为[同,顺]。
例如单张为[1,1],对子为[2,1],五连顺为[1,5]。
options :取牌选项长度为4的数组结构为[结果数量,取牌方向,拆牌标志,一次标志]
第一位:结果数量0-获取所有可能的结果,>0要取的结果数量默认为0。
比如,牌数组为[2,3,5,7]时,
当options[0]=0时则取单张的结果为2357
当options[0]=1时则取单张的结果为2
当options[0]=3时则取单张的结果为235。
第二位:取牌方向0-从小到大取结果1-从大到小取结果默认为0。
第三位:拆牌标志0-不拆牌1-拆牌默认为0。
比如,牌数组为[2,2,3,5,5,5,7]
当options[2]=0时则取单张时会不取对子的牌和三张的牌即结果为37
当options[2]=1时则取单张时会拆掉对子的牌和三张的牌即结果为2357。
第四位:一次标志0-相同大小的牌只取一次1-取所有情况默认为0。
比如,牌数组为[红心2, 黑桃2, 方块3, 方块5, 红心5, 黑桃5, 方块7]
当options[3]=0时则取单张的结果为红心2, 方块3, 方块5, 方块7
当options[3]=1时则取单张时结果为红心2, 黑桃2, 方块3, 方块5, 红心5, 黑桃5, 方块7。
返回值:满足牌型要求的牌组合数组。
格式如
[
[o_card, o_card, o_card, ...],
[o_card, o_card, o_card, ...],
[o_card, o_card, o_card, ...],
...
]
注意统一用第一张牌的算法大小值表示牌型大小比如34567是顺子56789也是顺子用3表示34567顺子的大小用5表示56789顺子的大小5大于3表示56789的顺子比34567的顺子大*/
var cardtype_tong = parseInt(cardtype[0]); //牌型-同
var cardtype_shun = parseInt(cardtype[1]); //牌型-顺
var options_count = 0; //结果数量
var options_direct= 0; //取牌方向
var options_split = 0; //拆牌标志
var options_once = 0; //一次标志
if (options){
options_count = parseInt(options[0]);
options_direct= parseInt(options[1]);
options_split = parseInt(options[2]);
options_once = parseInt(options[3]);
}
//将牌按大小分组,即相同大小的牌归为一组。如,将[2,2,3,5,5,5,7]这样的牌数组转成[[2,2],[3],[5,5,5],[7]]
var SameGroupList = [];
var SameGroup = [];
for (var i = 0; i < o_cardlist.length; i++){
var o_card = o_cardlist[i];
if (SameGroup.length == 0){
SameGroup.push(o_card);
} else {
var card_ArithN = this.GetArithN(o_card);
var SameGroup_ArithN = this.GetArithN(SameGroup[0]);
if (card_ArithN == SameGroup_ArithN){
SameGroup.push(o_card);
} else {
SameGroupList.push(SameGroup);
SameGroup = [];
SameGroup.push(o_card);
}
}
}
if (SameGroup.length > 0){
SameGroupList.push(SameGroup);
}
//将牌分组按牌型的“同”获取各自的组合。例如,将[[2,2],[3],[5,5,5],[7]]这样的牌分组按“同”等于2转成[[[2,2]], [[方5,梅5],[方5,红5],[梅5,红5]]]
var TongGroupList = [];
for (var i = 0; i < SameGroupList.length; i++){
if (SameGroupList[i].length < cardtype_tong){
// TongGroupList.push([]);
continue;
}
if (SameGroupList[i].length == cardtype_tong){
TongGroupList.push([SameGroupList[i]]);
continue;
}
if (SameGroupList[i].length > cardtype_tong){
if (!options_split){ //不允许拆牌
// TongGroupList.push([]);
continue;
}
if (!options_once){ //同样大小的牌只取一次
TongGroupList.push([SameGroupList[i].slice(0, cardtype_tong)]);
} else {
TongGroupList.push(min_CombineInAry(SameGroupList[i], cardtype_tong));
}
}
}
//返回结果
var resultlist = [];
var ShunGroup = [];
//检查ShunGroup是否是连顺如果是连顺则在ShunGroup取结果保存到resultlist中
var check_return_ShunGroup = function(){
var isShun = true;
for (var j = 0; j < ShunGroup.length; j++){
if (ShunGroup[j].length == 0) {
isShun = false;
break;
}
if (j > 0) {
var j1_ArithN = this.GetArithN(ShunGroup[j-1][0][0]);
var j_ArithN = this.GetArithN(ShunGroup[j][0][0]);
//相减等于1表示是顺
if (j_ArithN - j1_ArithN != 1){
isShun = false;
break;
}
}
}
if (!isShun){
return false;
}
var result = min_CombineByArys(ShunGroup);
for (var j = 0; j < result.length; j++) {
var temp = [];
for (var k = 0; k < result[j].length; k++) {
temp = temp.concat(result[j][k]);
}
resultlist.push(temp);
if (options_count && resultlist.length >= options_count) {
//达到了要取的结果数量
return true;
}
}
return false;
}.bind(this);
//按牌型的“顺”获取符合要求的结果
if (!options_direct){
//从小到大取结果
for (var i = 0; i <= TongGroupList.length - cardtype_shun; i++){
ShunGroup = TongGroupList.slice(i, i + cardtype_shun);
if (check_return_ShunGroup()){
return resultlist;
}
}
} else {
//从大到小取结果
for (var i = TongGroupList.length - cardtype_shun; i >= 0; i--){
ShunGroup = TongGroupList.slice(i, i + cardtype_shun);
if (check_return_ShunGroup()){
return resultlist;
}
}
}
return resultlist;
},
GetCardListByCardTypeA: function(o_cardlist, cardtype, options, min_ArithN, max_ArithN){
/*参数说明
o_cardlist:同GetCardListByCardType中的参数说明。
cardtype :同GetCardListByCardType中的参数说明。
options :同GetCardListByCardType中的参数说明。
min_ArithN:同FilterCardListByArithN中的参数说明。
max_ArithN:同FilterCardListByArithN中的参数说明。
返回值同GetCardListByCardType中的参数说明。*/
var cardlist = this.FilterCardListByArithN(o_cardlist, min_ArithN, max_ArithN);
return this.GetCardListByCardType(cardlist, cardtype, options);
},
GetCardListByCardTypeB: function(o_cardlist, cardtype, options, ArithF, min_ArithN, max_ArithN){
/*参数说明
o_cardlist:可以是未排序的牌数组,该函数会实现排序。
cardtype :同GetCardListByCardType中的参数说明。
options :同GetCardListByCardType中的参数说明。
ArithF :同FilterCardListByArithF中的参数说明。
min_ArithN:同FilterCardListByArithN中的参数说明。
max_ArithN:同FilterCardListByArithN中的参数说明。
返回值同GetCardListByCardType中的参数说明。*/
var cardlist = this.FilterCardListByArithF(o_cardlist, ArithF);
this.SortCardList(cardlist);
cardlist = this.FilterCardListByArithN(cardlist, min_ArithN, max_ArithN);
return this.GetCardListByCardType(cardlist, cardtype, options);
},
//获取指定牌型(扩展牌型)的一种组合(只取一种组合)
GetCardListByExtendCardTypeA: function(o_cardlist, cardtypelist){
/*参数说明
o_cardlist :同GetCardListByCardTypeA中的参数说明。
cardtypelist:扩展牌型和取牌选项。
结构为[
[cardtype, options, min_ArithN, max_ArithN],
[cardtype, options, min_ArithN, max_ArithN],
[cardtype, options, min_ArithN, max_ArithN]
]
其中cardtype、options、min_ArithN、max_ArithN同GetCardListByCardTypeA中的参数说明。
例如3带1cardtypelist=[
[[3,1], [1,x,x,x], min_ArithN, max_ArithN],
[[1,1], [1,x,x,x], min_ArithN, max_ArithN]
]
3带2cardtypelist=[
[[3,1], [1,x,x,x], min_ArithN, max_ArithN],
[[1,1], [1,x,x,x], min_ArithN, max_ArithN],
[[1,1], [1,x,x,x], min_ArithN, max_ArithN]
]
3带1对cardtypelist=[
[[3,1], [1,x,x,x], min_ArithN, max_ArithN],
[[2,1], [1,x,x,x], min_ArithN, max_ArithN]
]
注意options中第一参数一定为1表示只取一个结果如果传的值不等于1也会按等于1处理。
返回值同GetCardListByCardTypeA中的参数说明。*/
var cardlist = o_cardlist;
var result = [];
for (var i = 0; i < cardtypelist.length; i++){
var cardtype = cardtypelist[i][0];
var options = cardtypelist[i][1];
if (options[0] != 1){
options[0] = 1;
}
var min_ArithN = cardtypelist[i][2];
var max_ArithN = cardtypelist[i][3];
var BaseCardGroup = this.GetCardListByCardTypeA(cardlist, cardtype, options, min_ArithN, max_ArithN);
if (BaseCardGroup.length == 0){
return [];
}
result = result.concat(BaseCardGroup[0]);
cardlist = min_ary_deduct(cardlist, BaseCardGroup[0]);
}
return [result];
},
//获取牌数组的最大牌型
GetMaxCardTypeByCardList: function(o_cardlist, option){
/*参数说明
o_cardlist: 必须是经过了从小到大排序后的牌数组。
option: 选项默认为0
0-返回"同"最多的最大牌型(如果"同"相同则取"顺"最多的,如果"顺"也相同则取"值"最大的)
1-返回"顺"最多的最大牌型(如果"顺"相同则取"同"最多的,如果"同"也相同则取"值"最大的)
返回值:结构为[cardtype, cardlist]。其中,
cardtype为基础牌型结构为[同,顺]
cardlist为满足cardtype的牌数组牌型相同时取最大值的牌。
例如当option=0时
牌数组为[3,7,7,7,9,9,J,J,J,Q,Q] 返回值为[[3,1], [J,J,J]]
牌数组为[3,7,7,7,8,8,8,9,9,J,J,J,Q,Q] 返回值为[[3,2], [7,7,7,8,8,8]]
牌数组为[3,7,7,7,8,8,8,9,9,J,J,J,Q,Q,Q],返回值为[[3,2], [J,J,J,Q,Q,Q]]
当option=1时
牌数组为[2,4,5,6,8,9,J,J,Q,Q,K] 返回值为[[1,3], [J,Q,K]]
牌数组为[2,4,4,5,5,6,6,8,9,J,J,Q,Q,K] 返回值为[[2,3], [4,4,5,5,6,6]]
牌数组为[2,4,4,5,5,6,6,8,9,J,J,Q,Q,K,K],返回值为[[3,2], [J,J,Q,Q,K,K]]*/
var result = [];
//将o_cardlist按大小分组。
//如,将[2,2,3,5,5,5,7]这样的牌数组转成[[2,2],[3],[5,5,5],[7]]
var changeto_SameGroupList = function(){
var SameGroupList = [];
var SameGroup = [];
for (var i = 0; i < o_cardlist.length; i++){
var o_card = o_cardlist[i];
if (SameGroup.length == 0){
SameGroup.push(o_card);
} else {
var card_ArithN = this.GetArithN(o_card);
var SameGroup_ArithN = this.GetArithN(SameGroup[0]);
if (card_ArithN == SameGroup_ArithN){
SameGroup.push(o_card);
} else {
SameGroupList.push(SameGroup);
SameGroup = [];
SameGroup.push(o_card);
}
}
}
if (SameGroup.length > 0){
SameGroupList.push(SameGroup);
}
return SameGroupList;
}.bind(this);
var SameGroupList = changeto_SameGroupList();
switch (option){
case 0: //取"同"最多的牌型 [A,2,2,3,4,4,5,5,7,7,8,8,9,9,J,J,Q,Q,K,K]
//检查ShunGroup是否是连顺
var check_ShunGroup_isShun = function(){
for (var j = 0; j < ShunGroup.length; j++){
if (ShunGroup[j].length == 0) {
return false;
}
if (j > 0) {
var j1_ArithN = this.GetArithN(ShunGroup[j-1][0]);
var j_ArithN = this.GetArithN(ShunGroup[j][0]);
//相减等于1表示是顺
if (j_ArithN - j1_ArithN != 1){
return false;
}
}
}
return true;
}.bind(this);
result[0] = [SameGroupList[0].length, 1];
result[1] = SameGroupList[0];
for (var i = 1; i < SameGroupList.length; i++) {
if (SameGroupList[i].length > result[0][0]){
result[0] = [SameGroupList[i].length, 1];
result[1] = SameGroupList[i];
} else if (SameGroupList[i].length == result[0][0]){
var ArithN_i = this.GetArithN(SameGroupList[i][0]);
var ArithN_r = this.GetArithN(result[1][result[1].length - 1]);
if (ArithN_i - ArithN_r == 1){ //相减等于1表示是顺
result[0][1] = result[0][1] + 1;
result[1] = result[1].concat(SameGroupList[i]);
} else {
if (i + result[0][1] <= SameGroupList.length){
var ShunGroup = SameGroupList.slice(i, i + result[0][1]);
var isShun = check_ShunGroup_isShun();
if (isShun){
var check_Tong = true;
for (var j = 1; j < ShunGroup.length; j++) {
if (ShunGroup[j].length != result[0][0]){
check_Tong = false;
break;
}
}
if (check_Tong) {
result[1] = [];
for (var j = 0; j < ShunGroup.length; j++) {
result[1] = result[1].concat(ShunGroup[j]);
}
i = i + result[0][1] - 1;
}
}
}
}
}
}
break;
case 1: //取"顺"最多的牌型 [A,3,4,6,8,8,9,9,J,J,J,Q,Q,Q]
//将SameGroupList转成ShunGroupList
//如,将[[2,2],[3],[5,5,5],[6,6],[7],[9,9]]转成[[[2,2],[3]], [[5,5,5],[6,6],[7]], [[9,9]]]
var changeto_ShunGroupList = function(){
var ShunGroupList = [];
for (var i = 0; i < SameGroupList.length; i++) {
var ArithN_i = this.GetArithN(SameGroupList[i][0]);
var isFound = false;
for (var j = 0; j < ShunGroupList.length; j++) {
var ArithN_j = this.GetArithN(ShunGroupList[j][ShunGroupList[j].length - 1][0]);
if (ArithN_i - ArithN_j == 1) {
ShunGroupList[j].push(SameGroupList[i]);
isFound = true;
break;
}
}
if (!isFound){
ShunGroupList.push([SameGroupList[i]]);
}
}
return ShunGroupList;
}.bind(this);
//获取ShunGroup中最小的"同"数
var get_ShunGroup_minTong = function(){
var min_Tong = ShunGroup[0].length;
for (var j = 1; j < ShunGroup.length; j++) {
if (ShunGroup[j].length < min_Tong) {
min_Tong = ShunGroup[j].length;
}
}
return min_Tong;
}.bind(this);
//根据ShunGroup的min_Tong设置result
var set_result_byShunGroup_byMinTong = function(){
result[0] = [min_Tong, ShunGroup.length];
result[1] = [];
for (var j = 0; j < ShunGroup.length; j++) {
result[1] = result[1].concat(ShunGroup[j].slice(0, min_Tong));
}
}.bind(this);
var ShunGroupList = changeto_ShunGroupList();
//在ShunGroupList中取最长的"顺"
for (var i = 0; i < ShunGroupList.length; i++) {
var ShunGroup = ShunGroupList[i];
var min_Tong = get_ShunGroup_minTong();
if (i == 0){
set_result_byShunGroup_byMinTong();
} else {
if (ShunGroup.length > result[0][1]) {
set_result_byShunGroup_byMinTong();
} else if (ShunGroup.length == result[0][1]) {
if (min_Tong >= result[0][0]){
set_result_byShunGroup_byMinTong();
}
}
}
}
break;
}
return result;
},
GetMaxCardTypeByCardListA: function(o_cardlist){
/*参数说明 o_cardlist:可以是未排序的牌数组,该函数会实现排序。*/
this.SortCardList(o_cardlist);
return this.GetMaxCardTypeByCardList(o_cardlist);
},
//新建单张牌类
NewClass: function(){
var cls = {};
cls.New = cls_card2.New;
cls.declare = cls_card2.declare;
cls.GetId = cls_card2.GetId;
cls.GetFlower = cls_card2.GetFlower;
cls.GetNumber = cls_card2.GetNumber;
cls.GetArithF = cls_card2.GetArithF;
cls.SetArithF = cls_card2.SetArithF;
cls.GetArithN = cls_card2.GetArithN;
cls.SetArithN = cls_card2.SetArithN;
cls.GetScore = cls_card2.GetScore;
cls.SetScore = cls_card2.SetScore;
cls.GetDeal = cls_card2.GetDeal;
cls.SetDeal = cls_card2.SetDeal;
cls.GetStart = cls_card2.GetStart;
cls.SetStart = cls_card2.SetStart;
cls.GetPlay = cls_card2.GetPlay;
cls.SetPlay = cls_card2.SetPlay;
cls.GetIndex = cls_card2.GetIndex;
cls.SetIndex = cls_card2.SetIndex;
cls.GetOver = cls_card2.GetOver;
cls.SetOver = cls_card2.SetOver;
cls.GetTag1 = cls_card2.GetTag1;
cls.SetTag1 = cls_card2.SetTag1;
cls.GetTag2 = cls_card2.GetTag2;
cls.SetTag2 = cls_card2.SetTag2;
cls.GetTag3 = cls_card2.GetTag3;
cls.SetTag3 = cls_card2.SetTag3;
cls.FilterCardListByArithF = cls_card2.FilterCardListByArithF;
cls.FilterCardListByArithN = cls_card2.FilterCardListByArithN;
cls.SortCardList = cls_card2.SortCardList;
cls.GetCardListByCardType = cls_card2.GetCardListByCardType;
cls.GetCardListByCardTypeA = cls_card2.GetCardListByCardTypeA;
cls.GetCardListByCardTypeB = cls_card2.GetCardListByCardTypeB;
cls.GetCardListByExtendCardTypeA = cls_card2.GetCardListByExtendCardTypeA;
cls.GetMaxCardTypeByCardList = cls_card2.GetMaxCardTypeByCardList;
cls.GetMaxCardTypeByCardListA = cls_card2.GetMaxCardTypeByCardListA;
return cls;
}
}

View File

@@ -0,0 +1,225 @@
///////////////////////////////////////////////////
/////////////// cls_desk: 牌桌基础类 //////////////
///////////////////////////////////////////////////
var cls_desk = cls_desk || {
//创建单个牌桌实例
new: function(o_room){
/*
参数说明:
o_room 牌桌对应的房间对象
补充说明:
1房间对象由框架负责创建和释放。
2房间对象管理的是人解决诸如谁在房间里谁在哪个位置上谁进了房间谁离开了房间等问题。
3牌桌对象由游戏负责创建牌桌对象会随着房间的释放而释放子游戏不用管牌桌的释放。
4牌桌对象管理的是牌解决诸如哪个位置上发了什么牌出了什么牌等问题。
5此牌桌类是基础牌桌类各子游戏需要在继承此基础类的情况下编写自己的牌桌类。
*/
var desk = {};
//牌桌与房间互挂
o_room.o_desk = desk; //可通过房间对象的o_desk属性访问牌桌对象
desk.o_room = o_room; //可通过牌桌对象的o_desk属性访问房间对象
//数据
desk.data = {}; //要求data必须是纯数据不能在data下面写方法、函数、定时器
//定时器
desk.timer = {}; //可根据实际需要在desk.timer下定义多个定时器
//收发包
desk.pack = []; //调试状态下记录牌桌的收包发包情况
//流程方法
desk.flow = {};
//算法方法
desk.arith = {};
//////////在下面定义实例的属性
//数据-小局列表
desk.data.asetlist = []; //每开一小局则往该数组中添加一个aset小局对象[aset, aset, aset, ...], [{}, {}, {}, ...], [[], [], [], ...],数组长度即可表示当前是第几小局,数组最后一个小局对象即是当前小局
/////////在下面定义实例的方法,要求实例的方法必须调用类的方法,以节省内存资源,要求实例的方法名要与类的方法名保持一致
//记录游戏的收包情况不包括框架的收包要求前端向服务器发包时根据配置参数的设置情况将前端内存数据一起发上来数据放在pack.data.d里面服务器收到包后必须调用该方法
desk.flow.save_receivepack = function(pack, seat, playerid){
return cls_desk.save_receivepack(desk, pack, seat, playerid);
}
//记录游戏的发包情况(不包括框架的发包),要求服务器向前端发包后一定要调用该方法
desk.flow.save_sendpack = function(pack, seat, playerid){
return cls_desk.save_sendpack(desk, pack, seat, playerid);
}
//将当前小局的收发包情况保存成TXT
desk.flow.save_pack_curraset = function(callback_succ, callback_fail){
return cls_desk.save_pack_curraset(desk, callback_succ, callback_fail);
}
//输出日志
desk.flow.save_log = function(dir, file, log){
return cls_desk.save_log(desk, dir, file, log);
}
//清日志
desk.flow.clear_log = function(dir, file){
return cls_desk.clear_log(desk, dir, file);
}
//获取当前小局对象
desk.flow.get_curraset = function(){
return cls_desk.get_curraset(desk); //必须调用类的方法,且需要将实例对象作为参数传入类方法,这里只能写一句代码
}
//获取当前小局局数
desk.flow.get_currasetnum = function(){
return cls_desk.get_currasetnum(desk); //必须调用类的方法,且需要将实例对象作为参数传入类方法,这里只能写一句代码
}
return desk;
},
////////////以下都是类的方法,要求所有的逻辑算法全部都要用类方法来实现
//记录收包情况
save_receivepack: function(o_desk, pack, seat, playerid){
try{
if (o_desk.o_room.o_game.method.isdebugger()){ //如果是调试状态下,则记录收包情况
var o_save = {};
o_save.time = min_now(); //时间
o_save.type = 0; //收包
o_save.seat = seat; //位置
o_save.playerid = playerid; //玩家id
o_save.data = {};
//前端内存数据
o_save.data.client = pack.data.d;
//服务器房间内存数据
o_save.data.room = o_desk.o_room.method.get_roominfo();
//服务器牌桌内存数据
o_save.data.desk = min_copyjson(o_desk.data);
for (var i = 0; i < o_save.data.desk.asetlist.length; i++) {
if (i < o_save.data.desk.asetlist.length - 1){
o_save.data.desk.asetlist[i] = null;
};
};
delete pack.data.d;
//接收到的数据包
o_save.pack = pack;
o_desk.pack.push(o_save);
}
}catch(e){};
},
//记录发包情况
save_sendpack: function(o_desk, pack, seat, playerid){
try{
if (o_desk.o_room.o_game.method.isdebugger()){ //如果是调试状态下,则记录发包情况
var o_save = {};
o_save.time = min_now(); //时间
o_save.type = 1; //发包
o_save.seat = seat; //位置
o_save.playerid = playerid; //玩家id
o_save.data = {};
//服务器房间内存数据
o_save.data.room = o_desk.o_room.method.get_roominfo();
//服务器牌桌内存数据
o_save.data.desk = min_copyjson(o_desk.data);
for (var i = 0; i < o_save.data.desk.asetlist.length; i++) {
if (i < o_save.data.desk.asetlist.length - 1){
o_save.data.desk.asetlist[i] = null;
};
};
//发送的数据包
o_save.pack = pack;
o_desk.pack.push(o_save);
}
}catch(e){};
},
//将当前小局的收发包情况保存成TXT
save_pack_curraset: function(o_desk, callback_succ, callback_fail){
try{
if (o_desk.o_room.o_game.method.isdebugger()){
for (var i = 0; i < o_desk.pack.length; i++) {
o_desk.pack[i].saveflag = 1;
};
var o_makewartime = new Date(o_desk.o_room.makewartime);
var yyyy = o_makewartime.getFullYear();
var mm = o_makewartime.getMonth() + 1;
var dd = o_makewartime.getDate();
var dir = yyyy + "-" + mm + "-" + dd;
var file = o_desk.o_room.o_game.o_agent.agentid + "-" + o_desk.o_room.o_game.gameid + "-" + o_desk.o_room.roomcode + "-" + o_desk.flow.get_currasetnum() + ".txt";
var data = JSON.stringify(o_desk.pack);
var cfg = {};
// cfg.url = "http://120.26.52.206:8080/debug.php";
cfg.url = "http://10.117.216.66:8080/debug.php";
cfg.data = "dir=" + dir + "&file=" + file + "&data=" + data;
cfg.type = "POST";
cfg.success = function(str){
for (var i = 0; i < o_desk.pack.length; i++) {
if (o_desk.pack[i].saveflag){
o_desk.pack.splice(i, 1);
i--;
};
};
if(callback_succ){
callback_succ();
};
};
cfg.error = function(str){
for (var i = 0; i < o_desk.pack.length; i++) {
if (o_desk.pack[i].saveflag){
delete o_desk.pack[i].saveflag;
};
};
console.log(min_now() + " 保存牌局调试数据失败1");
console.log("dir=" + dir);
console.log("file=" + file);
console.log(str);
if(callback_fail){
callback_fail();
};
};
min_http(cfg);
}
}catch(e){
console.log(min_now() + " 保存牌局调试数据失败2");
console.log("dir=" + dir);
console.log("file=" + file);
console.log(e);
};
},
//输出日志
save_log: function(o_desk, dir, file, log){
try{
var cfg = {};
// cfg.url = "http://120.26.52.206:8080/savelog.php";
cfg.url = "http://10.117.216.66:8080/savelog.php";
cfg.data = "dir=" + dir + "&file=" + file + "&data=" + log;
cfg.type = "POST";
cfg.success = function(str){};
cfg.error = function(str){
console.log(min_now() + " 输出日志失败:" + dir + "/" + file);
console.log(str);
};
min_http(cfg);
}catch(e){}
},
//清日志
clear_log: function(o_desk, dir, file){
try{
var cfg = {};
// cfg.url = "http://120.26.52.206:8080/clearlog.php";
cfg.url = "http://10.117.216.66:8080/clearlog.php";
cfg.data = "dir=" + dir + "&file=" + file;
cfg.type = "POST";
cfg.success = function(str){};
cfg.error = function(str){
console.log(min_now() + " 清空日志失败:" + dir + "/" + file);
console.log(str);
};
min_http(cfg);
}catch(e){}
},
//获取当前小局对象
get_curraset: function(o_desk){
return o_desk.data.asetlist[desk.data.asetlist.length - 1];
},
//获取当前小局局数
get_currasetnum: function(o_desk){
return o_desk.data.asetlist.length;
}
}

View File

@@ -0,0 +1,287 @@
/*================= cls_desk2: 牌桌基础类 =================
说明:
1房间对象由框架负责创建和释放。
2房间对象管理的是人解决诸如谁在房间里谁在哪个位置上谁进了房间谁离开了房间等问题。
3牌桌对象由游戏负责创建牌桌对象会随着房间的释放而释放子游戏不用管牌桌的释放。
4牌桌对象管理的是牌解决诸如哪个位置上发了什么牌出了什么牌等问题。
注意:
1此牌桌类是基础类各子游戏需要在继承此基础类的情况下编写自己的牌桌类。
2子游戏开发人员不能修改该文件。
3子游戏只能调用实例方法不能直接调用类方法。
=========================================================*/
var cls_desk2 = {
//debug服务器地址
// debugserver: "120.26.52.206:8080", //外网地址,开发人员本地调试时使用该地址
debugserver: "10.117.216.66:8080", //内网地址,正式服务器上使用该地址
//创建实例
new: function(object_room){//参数说明object_room 牌桌对应的房间对象
var object = {};
//牌桌与房间互挂
object_room.o_desk = object; //可通过房间对象的o_desk属性访问牌桌对象
object.o_room = object_room; //可通过牌桌对象的o_desk属性访问房间对象
//=============== 在下面定义实例的属性 ===============
//数据
object.data = {}; //要求data必须是纯数据不能在data下面写方法、函数、定时器
//定时器
object.timer = {}; //可根据实际需要在desk.timer下定义多个定时器
//收发包
object.pack = []; //调试状态下记录牌桌的收包发包情况
//bug调试方法
object.debug = {};
//游戏内容方法
object.method = {};
//小局列表。每开一小局则往该数组中添加一个aset小局对象格式如[aset, aset, aset, ...],数组长度即可表示当前是第几小局,数组最后一个小局对象即是当前小局
object.data.asetlist = [];
//=============== 在下面定义实例的方法 ===============
/*1要求实例的方法必须调用类的方法以节省内存资源。
2要求实例的方法必须只用一句代码调用类的方法并将实例对象作为第一个参数传给类方法。
3要求实例的方法名要与类的方法名保持一致。*/
//====================== bug调试 =====================
//记录游戏的收包情况不包括框架的收包要求前端向服务器发包时根据isdebugger参数的配置情况将前端的内存数据一起发上来数据放在pack.data.d里面服务器收到前端发来的包后必须调用该方法
//参数说明pack前端发来的包seat哪个位置发来的包哪个玩家发来的包
object.debug.save_receivepack = function(pack, seat, playerid){
return cls_desk2.save_receivepack(object, pack, seat, playerid);
}
//记录游戏的发包情况(不包括框架的发包),要求服务器向前端发包后一定要调用该方法
/*参数说明pack向前端发的包seat给哪个位置发包给哪个玩家发包。
如果是向所有玩家发包则seat传-1playerid传null
如果是向多个玩家发包则seat传位置数组playerid传玩家id数组*/
object.debug.save_sendpack = function(pack, seat, playerid){
return cls_desk2.save_sendpack(object, pack, seat, playerid);
}
//将当前小局的收发包情况保存到debug服务器上要求小局结算后下一个小局新建前调用此方法
//参数说明callback_succ保存成功的回调函数callback_fail保存失败的回调函数
object.debug.save_pack_curraset = function(callback_succ, callback_fail){
return cls_desk2.save_pack_curraset(object, callback_succ, callback_fail);
}
//输出调试日志到debug服务器上输入后可在debug服务器上或浏览器中查看日志内容
//参数说明dir日志目录名file日志文件名log要输出的日志内容
object.debug.save_log = function(dir, file, log){
return cls_desk2.save_log(object, dir, file, log);
}
//清空debug服务器上的调试日志
//参数说明dir日志目录名file日志文件名
object.debug.clear_log = function(dir, file){
return cls_desk2.clear_log(object, dir, file);
}
//====================== 游戏内容 =====================
//对应的小局类
object.method.AsetClass = function(){
return cls_aset2;
}
//新建一小局
object.method.NewAset = function(){
return cls_desk2.NewAset(object);
}
//大局结算
object.method.CloseAccount = function(){
return cls_desk2.CloseAccount(object);
}
//获取当前小局对象
object.method.CurrAset = function(){
return cls_desk2.CurrAset(object);
}
//获取当前小局是第几小局
object.method.CurrAsetNum = function(){
return cls_desk2.CurrAsetNum(object);
}
//获取下一个有人的位置
object.method.GetNextSeat = function(seat){
return cls_desk2.GetNextSeat(object, seat);
}
return object;
},
//================ 在下面定义类的方法 ================
//===================== bug调试 ======================
//记录服务器收包情况
save_receivepack: function(o_desk, pack, seat, playerid){
try{
if (o_desk.o_room.o_game.method.isdebugger()){ //如果是调试状态下,则记录收包情况
var o_save = {};
o_save.time = min_now(); //记录的时间
o_save.type = 0; //服务器收到前端的发包
o_save.seat = seat; //哪个位置发来的包
o_save.playerid = playerid; //哪个玩家发来的包
o_save.data = {};
//前端内存数据
o_save.data.client = pack.data.d;
//服务器房间内存数据
o_save.data.room = o_desk.o_room.method.get_roominfo();
//服务器牌桌内存数据
o_save.data.desk = min_copyjson(o_desk.data);
for (var i = 0; i < o_save.data.desk.asetlist.length; i++) {
if (i < o_save.data.desk.asetlist.length - 1){
o_save.data.desk.asetlist[i] = null;
};
};
delete pack.data.d;
//接收到的数据包
o_save.pack = pack;
o_desk.pack.push(o_save);
}
}catch(e){};
},
//记录服务器发包情况
save_sendpack: function(o_desk, pack, seat, playerid){
try{
if (o_desk.o_room.o_game.method.isdebugger()){ //如果是调试状态下,则记录发包情况
var o_save = {};
o_save.time = min_now(); //记录的时间
o_save.type = 1; //服务器向前端发包
o_save.seat = seat; //服务器向哪个位置发包
o_save.playerid = playerid; //服务器向哪个玩家发包
o_save.data = {};
//服务器房间内存数据
o_save.data.room = o_desk.o_room.method.get_roominfo();
//服务器牌桌内存数据
o_save.data.desk = min_copyjson(o_desk.data);
for (var i = 0; i < o_save.data.desk.asetlist.length; i++) {
if (i < o_save.data.desk.asetlist.length - 1){
o_save.data.desk.asetlist[i] = null;
};
};
//发送的数据包
o_save.pack = pack;
o_desk.pack.push(o_save);
}
}catch(e){};
},
//将当前小局的收发包情况保存到debug服务器上
save_pack_curraset: function(o_desk, callback_succ, callback_fail){
try{
if (o_desk.o_room.o_game.method.isdebugger()){
for (var i = 0; i < o_desk.pack.length; i++) {
o_desk.pack[i].saveflag = 1;
};
var o_makewartime = new Date(o_desk.o_room.makewartime);
var yyyy = o_makewartime.getFullYear();
var mm = o_makewartime.getMonth() + 1;
var dd = o_makewartime.getDate();
var dir = yyyy + "-" + mm + "-" + dd;
var file = o_desk.o_room.o_game.o_agent.agentid + "-" + o_desk.o_room.o_game.gameid + "-" + o_desk.o_room.roomcode + "-" + o_desk.method.CurrAsetNum() + ".txt";
var data = JSON.stringify(o_desk.pack);
var cfg = {};
cfg.url = "http://" + cls_desk2.debugserver + "/debug.php";
cfg.data = "dir=" + dir + "&file=" + file + "&data=" + data;
cfg.type = "POST";
cfg.success = function(str){
for (var i = 0; i < o_desk.pack.length; i++) {
if (o_desk.pack[i].saveflag){
o_desk.pack.splice(i, 1);
i--;
};
};
if(callback_succ){
callback_succ();
};
};
cfg.error = function(str){
for (var i = 0; i < o_desk.pack.length; i++) {
if (o_desk.pack[i].saveflag){
delete o_desk.pack[i].saveflag;
};
};
console.log(min_now() + " 保存牌局调试数据失败1");
console.log("dir=" + dir);
console.log("file=" + file);
console.log(str);
if(callback_fail){
callback_fail();
};
};
min_http(cfg);
}
}catch(e){
console.log(min_now() + " 保存牌局调试数据失败2");
console.log("dir=" + dir);
console.log("file=" + file);
console.log(e);
};
},
//输出调试日志到debug服务器上
save_log: function(o_desk, dir, file, log){
try{
if (typeof(log) == "object"){
log = JSON.stringify(log);
}
var cfg = {};
cfg.url = "http://" + cls_desk2.debugserver + "/savelog.php";
cfg.data = "dir=" + dir + "&file=" + file + "&data=" + log;
cfg.type = "POST";
cfg.success = function(str){};
cfg.error = function(str){
console.log(min_now() + " 输出调试日志失败");
console.log(str);
};
min_http(cfg);
}catch(e){}
},
//清空debug服务器上的调试日志
clear_log: function(o_desk, dir, file){
try{
var cfg = {};
cfg.url = "http://" + cls_desk2.debugserver + "/clearlog.php";
cfg.data = "dir=" + dir + "&file=" + file;
cfg.type = "POST";
cfg.success = function(str){};
cfg.error = function(str){
console.log(min_now() + " 清空调试日志失败");
console.log(str);
};
min_http(cfg);
}catch(e){}
},
//===================== 游戏内容 ======================
//新建一小局
NewAset: function(o_desk){
var o_aset = o_desk.method.AsetClass().New();
o_desk.data.asetlist.push(o_aset);
return o_aset;
},
//获取当前小局对象
CurrAset: function(o_desk){
return o_desk.data.asetlist[o_desk.data.asetlist.length - 1];
},
//获取当前小局局数
CurrAsetNum: function(o_desk){
return o_desk.data.asetlist.length;
},
//获取下一个有人的位置
GetNextSeat: function(o_desk, seat){
if (seat < 0){
return -1;
}
var seatcount = o_desk.o_room.o_game.seatcount;
if (seat >= seatcount){
return -1;
}
var i = seat;
var o_nextplayer = null;
while (!o_nextplayer){
i = (i + 1) % seatcount;
o_nextplayer = o_desk.o_room.seatlist[i];
}
return i;
},
//大局结算
CloseAccount: function(o_desk){
}
}

View File

@@ -0,0 +1,135 @@
/*=============== cls_flowMgr2: 流程管理类 ===============
注意:
1子游戏开发人员不能修改该文件。
=========================================================*/
var cls_flowMgr2 = {
//创建实例
new: function(){
object = {};
//流程库
object.lib = [];
//流程配置
object.steplist = [];
//当前流程即steplist的数组下标
object.idx = -1;
object.method = {};
//在流程库中添加一个流程
object.method.addflow = function(id, name, func_start, func_over, time, flag1, flag2){
/*参数说明:
id : 流程id必须唯一
name : 流程名,主要起到说明和备注的作用
func_start: 进入该流程时执行的函数(先完成本流程的开始处理再根据time开启定时器)
func_over : 该流程结束时执行的函数(先完成本流程的结束处理,再进入下一流程)
time : 进入该流程后开启的定时器(自动触发func_over结束该流程)时长,毫秒
-1: 不需要开启定时器需要用户触发func_over结束流程
0: 不需要开启定时器执行完func_start后立即执行func_over结束流程
>0: 需要开启定时器定时器自动触发func_over结束流程
flag1: 进入流程时执行完func_start后是否由子游戏开启本流程的定时器默认为0
0: 由流程管理对象管理
1: 由子游戏管理
flag2: 结束流程时执行完func_over后是否由子游戏关闭定时器并进入下一流程默认为0
0: 由流程管理对象管理
1: 由子游戏管理*/
return cls_flowMgr2.addflow(object, id, name, func_start, func_over, time, flag1, flag2);
}
//设置流程。参数steplist为流程配置是一个流程id数组如[2,1,1,3,2,4]
object.method.set = function(steplist){
object.steplist = steplist;
}
//获取当前流程
object.method.currflow = function(){
cls_flowMgr2.currflow(object);
}
//开始按流程配置执行
object.method.startflow = function(){
cls_flowMgr2.startflow(object);
}
//进入下一流程
object.method.nextflow = function(){
cls_flowMgr2.nextflow(object);
}
return object;
},
//在流程库中添加一个流程
addflow: function(o_flowMgr, id, name, func_start, func_over, time, flag1, flag2){
var o_flow = {};
o_flow.id = id; //流程id
o_flow.name = name; //流程名
o_flow.func_start = func_start; //进入该流程是执行的函数
o_flow.func_over = func_over; //该流程结束时执行的函数
o_flow.time = time; //进入该流程后开启的定时器时长
o_flow.flag1 = flag1;
o_flow.flag2 = flag2;
o_flow.timer = null; //定时器id
o_flowMgr.lib.push(o_flow);
return o_flow;
},
//获取当前流程
currflow: function(o_flowMgr){
if (!o_flowMgr.steplist || o_flowMgr.steplist.length == 0){
return null;
}
if (o_flowMgr.idx == -1 || o_flowMgr.idx >= o_flowMgr.steplist.length){
return null;
}
var flowid = o_flowMgr.steplist[o_flowMgr.idx];
var flowidx = min_ary_indexof(o_flowMgr.lib, flowid, "id");
if (flowidx == -1){
return null;
}
return o_flowMgr.lib[flowidx];
},
//开始按流程配置执行程序
startflow: function(o_flowMgr){
if (o_flowMgr.lib.length == 0){
return;
}
if (o_flowMgr.steplist.length == 0){
return;
}
o_flowMgr.idx = 0;
this.exec(o_flowMgr);
},
//进入下一流程
nextflow: function(o_flowMgr){
var o_flow = this.currflow(o_flowMgr);
if (o_flow){
if (o_flow.func_over) {
o_flow.func_over();
}
if (!o_flow.flag2){
if (o_flow.timer){
clearTimeout(o_flow.timer);
o_flow.timer = null;
}
}
}
o_flowMgr.idx = o_flowMgr.idx + 1;
this.exec(o_flowMgr);
},
//执行当前流程
exec: function(o_flowMgr){
var o_flow = this.currflow(o_flowMgr);
if (!o_flow){
return;
}
if (!o_flow.func_start){
return;
}
o_flow.func_start();
if (o_flow.time == 0) {
this.nextflow(o_flowMgr);
} else if (o_flow.time > 0) {
//需要开启定时器
if (!o_flow.flag1) {
if (o_flow.func_over) {
o_flow.timer = setTimeout(o_flow.func_over, o_flow.time);
}
}
}
}
}

View File

@@ -0,0 +1,70 @@
///////////////////////////////////////////////////
//////////////cls_mod: 模块基础类//////////////////
///////////////////////////////////////////////////
var cls_mod = cls_mod || {
//构造函数
new: function(_str_modname, _str_routename, _obj_app) {
/*
_str_modname 模块名称
_str_routename 模块的路由名称
_obj_app 所属的应用对象
*/
//创建一个实例
var mod = {};
// ================= 实例的公有属性 ================= //
//模块名称
mod.modname = _str_modname;
//路由名称
mod.routename = _str_routename;
//所属的应用
mod.app = _obj_app;
//将mod对象添加到app的模块列表中
mod.app.modlist.push(mod);
mod.app[_str_modname] = mod;
// ================= 实例的公有方法 ================= //
//收包处理
mod.DoPack = function(_msg) {
return cls_mod.DoPack(mod, _msg);
}
//输出mod
cls_mod.OutputMod(mod);
return mod;
},
DoPack: function(_obj_mod, _msg) {
if (typeof(_msg) == "string") {
_msg = JSON.parse(_msg); //转换json
}
//执行rpc
if (_msg.rpc) {
if (min_ExitsFunction(_obj_mod[_msg.rpc])) {
return _obj_mod[_msg.rpc](_msg);
}
}
},
OutputMod: function(_obj_mod) {
if (typeof global !== "undefined")
{} else {
global = {};
}
if (typeof module !== "undefined")
{} else {
module = {};
module.exports = {};
}
global[_obj_mod.modname] = _obj_mod;
global[_obj_mod.modname].DoPack = _obj_mod.DoPack;
if (module) {
module.exports[_obj_mod.modname] = _obj_mod;
}
}
}

View File

@@ -0,0 +1,93 @@
///////////////////////////////////////////////////
///////////// cls_mysql: 数据库操作 ///////////////
///////////////////////////////////////////////////
var cls_mysql = cls_mysql || {
//构造函数
new: function(url, func_fail_sendpack){
var mysql = {};
//php地址
mysql.url = url;
//发生错误时的回包函数
mysql.func_fail_sendpack = func_fail_sendpack;
//执行sql语句
mysql.execsql = function(method, sql, para, func_succ, pack) {
/*
method: php方法名 execsql/opensql
sql: 要执行的sql语句
para: 要执行的sql语句的参数数组
func_succ: sql语句执行成功后的回调函数
pack: 客户端发来的数据包执行失败的话会根据pack返回客户端执行失败的结果
*/
var data = {}
data.m = method;
data.s = sql;
data.p = para;
var strdata = JSON.stringify(data);
//将=号替换为^php收到后再替换回来以避免=号POST传参会截断的问题
strdata = strdata.replace(/\=/g,"^");
//将+号替换为#php收到后再替换回来以避免+号POST传参会截断的问题
strdata = strdata.replace(/\+/g,"#");
//将&号替换为!php收到后再替换回来以避免&号POST传参会截断的问题
strdata = strdata.replace(/\&/g,"!");
var cfg = {};
cfg.url = mysql.url;
cfg.data = "data=" + strdata;
cfg.type = "POST";
cfg.success = function(str) {
try {
var result = JSON.parse(str);
} catch(e) {
console.log(min_now() + " 数据库执行结果转换json失败.");
console.log(str);
console.log(data);
return;
}
if (result.state != 0) {
console.log(min_now() + " 请求" + mysql.url + "失败.");
console.log(result);
console.log(data);
if (pack) {
console.log(JSON.stringify(pack));
//返回客户端执行失败的结果
if (mysql.func_fail_sendpack) {
pack.data = {};
pack.data.state = result.state;
pack.data.error = result.error;
mysql.func_fail_sendpack(pack);
}
}
} else {
//执行sql成功执行回调函数
// console.log(result);
if (func_succ) {
func_succ(result.data);
}
}
};
cfg.error = function(str){
console.log(min_now() + " 请求" + mysql.url + "失败.");
console.log(str);
console.log(data);
if (pack) {
console.log(JSON.stringify(pack));
//返回客户端执行失败的结果
if (mysql.func_fail_sendpack) {
pack.data = {};
pack.data.state = 99;
pack.data.error = "请求数据库失败.";
mysql.func_fail_sendpack(pack);
}
}
};
min_http(cfg);
}
return mysql;
}
}

View File

@@ -0,0 +1,70 @@
///////////////////////////////////////////////////
////////////////// cls_pai: 单张牌 ////////////////
///////////////////////////////////////////////////
var cls_pai = cls_pai || {
//创建单张牌实例
new: function(id, score, dealowner){
/*
参数说明:
id 牌的绝对id
score 牌在游戏中的分值
dealowner 发牌状态
扑克牌的统一编码规则:
1牌面花色的定义 5:王 4:黑桃 3:红心 2:梅花 1:方块
2牌面数值的定义 1:A 2:2 3:3 ... 9:9 10:10 11:J 12:Q 13:K 53:小王 54:大王
*/
var pai = {};
//属性
pai.id = id; //绝对id即数组下标从0开始计数
pai.score = score; //牌在游戏中的分值
pai.dealowner = dealowner; //发牌状态
//-1:规则去除的牌
// 0:未发的牌,即底牌
//>0:发牌发到谁手上从1开始计数即座位编号+1座位编号是从0开始计数的
pai.playround = -1; //出牌状态
//-1:未出的牌
// 0:埋牌
//>0:牌是第几轮出出去的从1开始计数
pai.playindex = -1; //本轮中的出牌顺序从1开始计数
pai.playowner = -1; //出牌后被谁得到,与座位编号对应
//方法
pai.method = {};
//牌面花色
pai.method.get_flower = function(){
return cls_pai.get_flower(pai);
}
//牌面数值
pai.method.get_number = function(){
return cls_pai.get_number(pai);
}
return pai;
},
//获取牌面花色
get_flower: function(o_pai) {
var yu = o_pai.id % 54;
if (yu == 52 || yu == 53){ //小王大王
return 5;
}
return parseInt(yu / 13) + 1;
},
//获取牌面数值
get_number: function(o_pai) {
var yu = o_pai.id % 54;
if (yu == 52){ //小王
return 53;
}
if (yu == 53){ //大王
return 54;
}
return yu % 13 + 1;
}
}

View File

@@ -0,0 +1,308 @@
showmessage
1app启动提示app用到。
2所有层都有该属性。
scrollmsg
1游戏中的滚动信息栏游戏中用到。
2所有层都有该属性。
noticemsg
1游戏中的通知信息栏以#号表示换行,游戏中用到。
2所有层都有该属性。
topupurl
1房卡充值的链接该属性值不为空则跳转链接游戏中用到。
2顶层、代理agent、游戏game、渠道channel都有该属性。
logimage
1log图片游戏中用到。
2代理agent、游戏game、渠道channel都有该属性。
logimage2
1代理商的log图片公众号页面中用到页面右上角图标。
2代理agent有该属性。
sharename
1分享的内容名称游戏中用到。
2游戏game、渠道channel都有该属性。
game_version
1游戏版本号游戏热升级、游戏中登录拦截玩家时用到。
2游戏game、渠道channel、市场market都有该属性。
game_zip
1游戏zip文件游戏热升级时用到。
2游戏game、渠道channel、市场market都有该属性。
game_size
1游戏zip文件大小游戏大厅中用到。
2游戏game、渠道channel、市场market都有该属性。
game_hall_image
1大厅中子游戏的图标。
2游戏game有该属性。
game_hall_dir
1大厅中子游戏的目录。
2游戏game有该属性。
game_down_image
1下载页面的游戏图标。
2游戏game有该属性。
game_down_state
1下载页面的游戏状态0-发布中 1-开发中 2-测试中。
2游戏game有该属性。
game_down_memo
1下载页面的游戏一句话描述。
2游戏game有该属性。
ios_defdownload_marketid
1苹果系统下载页面的对应的市场marketid。
2渠道channel有该属性。
and_defdownload_marketid
1安卓系统下载页面的对应的市场marketid。
2渠道channel有该属性。
app_version
1app版本号app升级时用到。
2市场market有该属性。
app_download
1app下载地址app升级时用到。
2市场market有该属性。
app_size
1app安装包大小app升级时用到。
2市场market有该属性。
url_match
1比赛的链接地址。
2顶层、代理agent、游戏game都有该属性。
url_match2
1服务器比赛数据发送地址。
2顶层、代理agent、游戏game都有该属性。
html_buyroomcard
1公众号页面是否有购买房卡功能 1-没有 2-有。
2顶层、代理agent都有该属性。
html_applysales
1申请成为代理的方式 1-填写微信号并购买房卡 2-填写微信号。
2顶层、代理agent都有该属性。
sale_qq、sale_wechat、sale_tel
1代理后台页面显示的官方客服信息。
2顶层、代理agent都有该属性。
agentmode
1代理模式1-无邀请码模式 2-有邀请码模式。
2顶层、代理agent都有该属性。
relagentid
1关联代理id用于关联其他代理。
2代理agent都有该属性。
isclose
1关闭服务器标志1-开启 2-关闭(不能创建和加入房间)。
2顶层、代理agent、游戏game都有该属性。
pushrate
1星星场房主抽成百分比整数。
2顶层、代理agent、游戏game都有该属性。
player_server_tcp
1玩家服务器地址及端口号。
2顶层、代理agent都有该属性。
player_server_http
1玩家服务器地址及端口号。
2顶层、代理agent都有该属性。
game_server_http
1子游戏服务器地址及端口号。
2顶层、代理agent、游戏game都有该属性。
visitor_server_tcp
1游客服务器地址及端口号。
2顶层、代理agent都有该属性。
visitor_server_http
1游客服务器地址及端口号。
2顶层、代理agent都有该属性。
system_room
1星星争霸场系统房间列表。
2只有游戏game这层有该属性。
3结构为
[
{
"type": 2,
"title": "初级场",
"image": "",
"roomtype": object,
"online": 99,
"robotGoldRange":[min,max],
"removeRobot":0,//是否屏蔽机器人
//"forbidEnter":0,//是否开战状态下屏蔽机器人
roomRate:80,//机器人所占房间百分比
ranMin:1,//随机机器人最小值
ranMax:1,//随机机器人最大值
roomLeave:0,//房间是否留一个真实玩家座位0不留1留
}, {}, {}
]
isdebugger
1是否是调试状态 0正式 1调试。
2只有游戏game这层有该属性。
surrender_min
1星星场投降的最小数量。
2顶层、代理agent、游戏game都有该属性。
surrender_unit
1星星场投降的最小单位数。
2顶层、代理agent、游戏game都有该属性。
starName
1星星名称。
2顶层、代理agent都有该属性。
roomCardName
1房卡名称。
2顶层、代理agent都有该属性。
aset_rebate
1星星场房间小局系统抽成设置
a星星场房间才会触发小局抽成功能。
b如果触发了小局抽成功能则会按小局结算大局结束后将不会进行大局结算。
{
infinite: [1, 1, 5], -- 无限局小局抽成设置,不设置表示无限局不进行小局抽成
finitude: [1, 2, 10] -- 有限局小局抽成设置,不设置表示有限局不进行小局抽成
数组中,
第一位1-对大赢家抽成 2-对所有赢的人抽成 3-对所有玩家抽成
第二位1-按玩家分数的百分比(第三位数值)抽成 2-按倍数的百分比抽成
第三位:抽成数值
}
2顶层、代理agent都有该属性。
pushtoplayerid
1大局抽成的星星给谁如果设置了则给设置的玩家如果没设置则给房主。只对非星星场设置了星星限进的房间有效。
是数组,格式为[普通房间的抽成玩家id, 短号房间的抽成玩家id]
2顶层、代理agent都有该属性。
pushto
10-大局抽成的星星给到pushtoplayerid的玩家账号上。默认为0。
1-大局抽成的星星给到pushtoplayerid对应的代理账号上。
2-大局抽成的星星给到房主对应的代理账号上。
2顶层、代理agent都有该属性。
xxroomdeduct
1星星场是否要扣房卡。
0:星星场房间不扣房卡。默认为0。
1:星星场房间和房卡房间一样根据局数扣除房卡。
2顶层、代理agent都有该属性。
noticelimit
1玩家发布系统消息的金币数量限制有这么多金币才能发系统消息。
2顶层、代理agent都有该属性。
noticecost
1玩家发布一次系统消息消耗的金币数量。
2顶层、代理agent都有该属性。
sysroom_playercount
1系统房间里机器人陪玩的真实玩家数量阈值。默认为20。
真实玩家数量小于等于该阈值时一个房间内一个玩家配N个机器人不会出现真实玩家和真实玩家在同一房间的情况。
真实玩家数量大于该阈值时,一个房间内可以进入多个真实玩家。
2顶层、代理agent、游戏game都有该属性。
showrebate
1系统房间是否提示金币抽成。0-不提示 1-提示默认为0。
2顶层、代理agent都有该属性。
matchlist
1比赛排行榜
[
{
"id": 2018010101, -- 比赛id格式必须为年月日+序号
"roomtype": [], -- 房间类型根据子游戏的roomtype定义
"matchname": "", -- 比赛名称
"imageurl": "", -- 比赛图片地址,可以不配置,不配置时显示默认图片
"beginTime": "2018-01-01 12:00", -- 比赛开始时间,精确到分钟
"endTime": "2018-01-01 14:00", -- 比赛截止时间,精确到分钟
"playercount": 100, -- 开始比赛的人数要求
"playercount2": 10, -- 比赛开始后第一盘打完后再次排队达到多少人后再开始上桌
"bean": 0, -- 参加的金币费用
"roomcard": 0, -- 参加的房卡费用要与roomtype中的房卡数量保持一致
"topcount": 10, -- 取前几名
"circulation": 0, -- 比赛循环次数 0:不循环 >0:再循环的次数
"interval": 0, -- 比赛循环的间隔时长,精确到秒
"gradename": "得分", -- 得分名称
"memo1": "", -- 文字说明1第一名奖励说明
"memo2": "", -- 文字说明2比赛详情以#作为换行符)
"memo3": "", -- 文字说明3
"haverobot": 0, -- 1有机器人 <>1没有机器人
"status": 0, -- 0: 需要代理后台开通比赛 1配置文件中直接开通
"ranking": -- 排行榜内的系统成绩
[
{
"min": 100, -- 最低分数,包含等于
"max": 200, -- 最高分数,包含等于
"count": 3 -- 系统成绩个数
}
]
}, {}, {}
]
2只有游戏game下有该属性。
reportRobotGold
纯机器人是否存储金币变动
0 or 1(非0也可以)
1.不配或者为0不存、非0存储
2.顶层、代理层、游戏层
robotGoldRange
机器人金币随机范围
[num1,num2]
1.不配或者为0按照与游戏内玩家金币数量相当、若配置则在num1、num2中随机(注:两个值差尽量大一点)
2.顶层、代理层、游戏层
videoConfig
视频房配置
{
type:1房卡2星星
profitMode:1固定值2百分比
profit:百分比模式下如50%则为50
}
无此属性为非视频房
顶层、代理层、游戏层
rebateConfig
1大局结算抽成配置(只支持倍数百分比抽给系统)
{
from:抽谁的 1.大赢家 2.赢家 3.所有人
value:抽多少(只支持倍数的百分比抽成)如50抽倍数的50%
}
2顶层、代理agent都有该属性。
brRebateUnit
1百人vip房每多少人收取茶水费
2顶层、代理agent都有该属性。
smm_message
1手机短信验证码消息模板默认您的验证码是X。X表示验证码。
2顶层、代理agent都有该属性。
smm_timeout
1手机短信验证码时效默认60。
2顶层、代理agent都有该属性。
invitecodetype
1在游戏中绑定的邀请码长度小于8时的类型0-个人代理id 1-玩家id默认为0。
2顶层、代理agent都有该属性。

Some files were not shown because too many files have changed in this diff Show More