📄 breakdown.jsp
字号:
<%@page contentType="text/html;charset=ISO-8859-15" pageEncoding="ISO-8859-1"%>
<%@page import="org.homeplayer.util.*"%>
<%@page import="org.homeplayer.web.*"%>
<%@page import="java.util.*"%>
<jsp:useBean id="hppc" class="org.homeplayer.web.HPPageContext" scope="request">
<jsp:setProperty name="hppc" property="request" value="<%=request%>"/>
<jsp:setProperty name="hppc" property="navLevel" value="2"/>
</jsp:useBean>
<%!
boolean breakdown(int[] tab, int i, int j, int type )
{
final int MAX_WIDTH = 15;
final int MAX_HEIGHT = 15;
if( i<0 || j<0 || i>=MAX_WIDTH || j>=MAX_HEIGHT ) return false ;
boolean status = false ;
if( tab[i+j*MAX_WIDTH] == -1 ) return false ;
if( tab[i+j*MAX_WIDTH] == 0 ) return true ;
if( tab[i+j*MAX_WIDTH] == type ) {
int oldtype =tab[i+j*MAX_WIDTH] ;
tab[i+j*MAX_WIDTH] = 0 ;
if( breakdown( tab, i+1, j, type ) ) {
status = true ;
}
if( breakdown( tab, i-1, j, type ) ) {
status = true ;
}
if( breakdown( tab, i, j+1, type ) ) {
status = true ;
}
if( breakdown( tab, i, j-1, type ) ) {
status = true ;
}
if( status == false ) {
tab[i+j*MAX_WIDTH] = oldtype ;
}
}
return status ;
}
%> <% if (WebUtil.getParam(request, "WAIT", false)) { %><jsp:forward page="/WEB-INF/jsp/wait.jsp"/><% return;} %>
<%
final int MAX_WIDTH = 15;
final int MAX_HEIGHT = 15;
hppc.addMenuItem(new HPMenuLink("Nouvelle Partie", "/games/breakdown.jsp?action=newgame&WAIT=TRUE", hppc));
hppc.addMenuItem(new HPMenuSeparator() ) ;
String[] colors = new String[] { "#FEE55BFF", "#9FE376FF", "#A7C4FEFF", "#B7B7B7FF", "#FFAAA1FF" } ;
hppc.setMenuTitle( "Jeux" ) ;
hppc.setHeaderTitle( "BreakDown" ) ;
String action = WebUtil.getParam(request, "action", "");
if( action.equals( "" ) ) {
hppc.addMenuItem(new HPMenuTitle("High Score: "+HPConf.getString(HPConf.BREAKDOWN_HIGHSCORE) )) ;
%>
<jsp:include page="<%= hppc.getSkin().getHeader() %>"/>
<TABLE width=406>
<tr>
<td align=center>
<H1>Break Down</H1>
</td>
</tr>
<tr>
<td>
Cliquez sur les carr閟 adjacents de la m阭e couleur afin de les 閘iminer. Le but du jeu est qu'il n'en reste qu'un seul.
</td>
</tr>
</table>
<jsp:include page="<%= hppc.getSkin().getFooter() %>"/>
<%
} else {
long time = System.currentTimeMillis() ;
int[] tab = (int[])HPSession.get("BD_TAB") ;
if( action.equals("newgame") ) {
tab = new int[MAX_WIDTH*MAX_HEIGHT] ;
Random r = new Random(System.currentTimeMillis()) ;
for( int j=0 ; j<MAX_HEIGHT ; j++ ) {
for( int i=0 ; i<MAX_WIDTH ; i++ ) {
tab[i+j*MAX_WIDTH] = r.nextInt(5)+1 ;
}
}
HPSession.set( "BD_TAB", tab ) ;
HPSession.set( "BD_SCORE", new Integer(0) ) ;
} else if( action.equals("sel") ) {
int i = WebUtil.getParam(request, "i", 0);
int j = WebUtil.getParam(request, "j", 0);
int type = tab[i+j*MAX_WIDTH] ;
if( breakdown( tab, i, j, type ) == true ) {
int nbhit = 0 ;
for( int ii=0 ; ii<MAX_WIDTH ; ii++ ) {
for( int ij=MAX_HEIGHT-1 ; ij>=0 ; ij-- ) {
if( tab[ii+ij*MAX_WIDTH] == 0 ) {
tab[ii+ij*MAX_WIDTH] = -1 ;
nbhit++ ;
} else if( ij<MAX_HEIGHT-1 && tab[ii+ij*MAX_WIDTH] > 0 ) {
int ptype = tab[ii+ij*MAX_WIDTH] ;
int ij2 = ij+1 ;
while( ij2<MAX_HEIGHT && tab[ii+(ij2)*MAX_WIDTH]<0 ) {
tab[ii+(ij2)*MAX_WIDTH] = ptype ;
tab[ii+(ij2-1)*MAX_WIDTH] = -1 ;
ij2++ ;
}
}
}
}
int addScore = 0;
for(int c = 2 ; c <= nbhit ; c++ ) addScore += (c-1) * c;
int score = HPSession.get( "BD_SCORE", 0 ) ;
score += addScore ;
HPSession.set( "BD_SCORE", new Integer(score) ) ;
HPSession.set( "BD_NBHIT", new Integer(nbhit) ) ;
int hs = HPConf.getInt(HPConf.BREAKDOWN_HIGHSCORE);
if( score > hs ) {
HPConf.set(HPConf.BREAKDOWN_HIGHSCORE, score) ;
HPConf.saveSilently();
}
}
}
StringBuffer buffer = new StringBuffer() ;
for( int j=0 ; j<MAX_HEIGHT ; j++ ) {
buffer.append( "<tr>") ;
boolean focused = false ;
for( int i=0 ; i<MAX_WIDTH ; i++ ) {
int type = tab[i+j*MAX_WIDTH] ;
String ref = "breakdown.jsp?action=sel&i="+i+"&j="+j ;
buffer.append( "<td>" ) ;
if (type>0) {
buffer.append( "<a href=\"" ) ;
buffer.append( ref ) ;
buffer.append( "\"" ) ;
if( focused == false ) {
buffer.append( " focused" ) ;
focused = true ;
}
buffer.append( "><table border=1 cellpadding=0 bgcolor=\"" ) ;
buffer.append( hppc.color(colors[type-1]) ) ;
buffer.append( "\" abgcolor=\"" ) ;
buffer.append( hppc.color("#00000FF") ) ;
buffer.append( "\"><tr><td bgcolor=\"" ) ;
buffer.append( hppc.color(colors[type-1]) ) ;
buffer.append( "\"><img src=\"images/bd_type"+(type)+".gif\" width=16 height=16></td></tr></table></a>" ) ;
} else {
buffer.append( "<img src=\"/images/blanck.gif\" width=20 height=20>" ) ;
}
buffer.append( "</td>" ) ;
}
buffer.append( "</tr>" ) ;
}
hppc.setFocusSetOnPage( true ) ;
hppc.addMenuItem(new HPMenuTitle("High Score: "+HPConf.getString(HPConf.BREAKDOWN_HIGHSCORE)) );
%>
<jsp:include page="<%= hppc.getSkin().getHeader() %>"/>
<TABLE width=406>
<tr>
<td align=center>
<table border=0 cellpadding=0 cellspacing=1>
<%=buffer %>
</table>
</td>
</tr>
<tr>
<td height=2 bgcolor="<%=hppc.color("#FFFFFFFF") %>"><img src="/images/blanck.gif" width="2" height="2"></td>
</tr>
<tr>
<td>
<H3>Score : <%=HPSession.get( "BD_SCORE", 0 ) %></H3>
</td>
</tr>
</table>
<jsp:include page="<%= hppc.getSkin().getFooter() %>"/>
<%} %>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -