hta编写一个经典游戏的代码分享

hta编写一个经典游戏的代码分享

This game is not finished. The purpose was just to show you that you can do some graphical things without having to use external pictures.
If you want to develop this game, please submit your updates.

File Name : htanoid.hta
Requirement : IE 6 ?
Author : Jean-Luc Antoine
Submitted : 17/05/2002
Category : Other


效果图:

hta编写一个经典游戏的代码分享

实现代码:

 

复制代码 代码如下:

<html xmlns:v="urn:schemas-microsoft-com:vml" XMLNS:t="urn:schemas-microsoft-com:time">
<head>

 

<HTA:APPLICATION
APPLICATIONNAME="HTAnoid"
BORDER="thick" | "dialog" | "none" | "thin"
BORDERSTYLE="normal" | "complex" | "raised" | "static" | "sunken"
CAPTION="yes" CONTEXTMENU="yes"
ID="oHTA" alert(oHTA.applicationName);
INNERBORDER="yes" MAXIMIZEBUTTON="yes" MINIMIZEBUTTON="yes"
NAVIGABLE="no" SCROLL="no" SCROLLFLAT="no"
SELECTION="yes" SHOWINTASKBAR="yes" SINGLEINSTANCE="no"
SYSMENU="yes" VERSION="0.5"
WINDOWSTATE="normal" | "maximize" | "minimize">

<script language=vbscript>
Option explicit
Const C_ScreenW=400
Const C_NbX=12
Const C_NbY=10
Dim Terrain(10,12)
Dim RaqX,RaqW,Playing,BalleX,BalleY
Dim DirBX,DirBY'Direction balle X,Y
Dim BordDroit
BordDroit=C_ScreenW-32

Sub Document_onKeyPress()
Select Case UCase(Chr(Window.Event.keyCode))
Case "P"
Msgbox "pause"
'Window.ClearTimeOut
End Select
End Sub

Sub Document_onClick()
Playing=True
'document.title="click " & window.event.button
End Sub

Sub Document_onMouseMove()
RaqX=window.event.clientX-RaqW'.shiftKey .keyCode .ctrlKey .button .altKey
If RaqX<16 Then RaqX=16'Mur gauche
If RaqX+RaqW>BordDroit Then RaqX=BordDroit-RaqW
Raquette.style.Left=RaqX
If Not Playing Then
BalleX=RaqX+RaqW/2
Balle.Style.Left=BalleX
End If
End Sub

Sub DrawLevel(n)
Dim k,x,y
set k=document.getElementById("Raquette")
For y=0 To C_NbY
For x=0 To C_NbX
Terrain(y,x)=0'Nb de coups restant à porter
Next
Next

Select Case n
Case 1
'Bricks
For y=0 To 5
For x=0 To C_NbX
k.insertAdjacentHTML "beforeBegin","<TABLE style='position:absolute;top=" & 102+14*y & ";left=" & 16+27*x _
& ";width=25;height=10;' bgcolor=" & Array("silver","red","yellow","blue","magenta","lightgreen")(y) & "><TR><TD></TD></TR></TABLE>"
Next
Next
End Select
Randomize
BalleY=400
DirBX=Int(Rnd()*3)+1
DirBY=0-(Int(Rnd()*4)+1)
End Sub

Sub Init
Dim x,y,k
Window.MoveTo screen.Width/2-200,0
Window.ReSizeTo C_ScreenW,484
RaqW=Int(Replace(Raquette.style.width,"pc","")*1.6)

'Lives Left
set k=document.getElementById("Raquette")
'CreateElement + insertAdjacentElement
For x=0 To 2
k.insertAdjacentHTML "beforeBegin","<v:group style='position:absolute;top=430;left=" & 16+x*30 _
& ";width:15pc;height:5pc;'><v:roundrect style='width:100;height:100;' fillcolor=red><v:fill type='gradient'/></v:roundrect>" _
& "<v:rect style='position:relative;left:10;top:2;width:80;height:90' strokecolor=black><v:fill type='gradient' color=#4682b4 focus=0.2 /></v:rect></v:group>"
Next

DrawLevel 1
Playing=False

window.setTimeout "Gere",10
End Sub

Sub Gere
If Playing Then
'Déplacement de la balle
If DirBX>0 Then
If BalleX+DirBX>BordDroit-10 Then DirBX=0-DirBx
Else
If BalleX+DirBX<16 Then DirBX=0-DirBx
End If
If DirBY>0 Then
If BalleY+DirBY>400 Then DirBY=0-DirBY
Else
If BalleY+DirBY<50 Then DirBY=0-DirBY
End If
BalleX=BalleX+DirBX
BalleY=BalleY+DirBY
Balle.Style.Left=BalleX
Balle.Style.Top=BalleY
Else
document.title=Now
End If
window.setTimeout "Gere",10
End Sub
</script>
<STYLE TYPE="text/css">
<!--
v\:*{behavior:url(#default#VML);}
t\:*{behavior:url(#default#time2)}

BODY{
font-family: "Verdana, Arial, Helvetica, sans-serif";
background-color=#003159;
color:#0000FF;
font-size: 8pt;
}
TABLE,TD{
border:'0pix groove';
cursor:W-resize;
}
.score{
color:white;
font-size: 10pt;
}
-->
</STYLE>

</head>
<body topmargin=0 leftmargin=0 rightmargin=0 onload="vbscript:init">
<!-- Panel de score -->
<CENTER><font size=2 color=red><b>HIGH SCORE</b></font><br><table cellspacing=0 width=100%><tr><td width=50% align=center>
<div id=Score class=score>1234</div></td><td><div id=HighScore class=score>123400</div></td></tr></table></CENTER>

<!-- terrain -->
<table width=100% height=420 cellspacing=0 cellpadding=0>
<tr height=14><td colspan=3>
<v:rect style='width:100%;height:15'>
<v:fill type="gradient" color=white color2=darkgray focus=3.3 />
</v:rect>
</td></tr>
<tr height=100%><td width=15>
<v:rect style='width:15;height:100%' strokecolor="#666666" strokeweight="2pt">
<v:stroke dashstyle="dashdot" />
<v:fill type="gradient" angle="-90" color2=white color=darkgray focus=3.3 />
</v:rect>
</td>

<td width=100%>

<v:oval id="balle" style='position:absolute;top=400;width:8;height:6' fillcolor=#009999 strokecolor=#0066FF id=boule>
<v:fill type=gradientradial color2=white focusposition=0.3,0.3 focussize=0.01,0.01 />
</v:oval>


<v:group id=Raquette style='position:absolute;top=410;width:30pc;height:6pc;'>
<v:roundrect style='width:100;height:100;' fillcolor=red>
<v:fill type='gradient'/></v:roundrect>
<v:rect style='position:relative;left:10;top:2;width:80;height:90' strokecolor=black>
<v:fill type='gradient' color=#4682b4 focus=0.2 /></v:rect>
</v:group>


</td>
<td align=right>
<v:rect style='width:15;height:100%' strokecolor="#666666" strokeweight="2pt">
<v:stroke dashstyle="dashdot" />
<v:fill type="gradient" angle="-90" color2=white color=darkgray focus=3.3 />
</v:rect>
</td></tr>
</table>

</body>
</html>



原文:http://www.interclasse.com/scripts/htanoid.php