TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
Applets开发的扫雷游戏,可在线玩。来自:
http://www.javaside.com/asp/mus.asp?page=/us/JVMine.sHTML
这是启动游戏的html文件
<html>
<head><title>RBL - JVMine V 1.02 - Java</title>
<applet code=JVMine.class width=450 height=300 ID="JMine" NAME="JMine">
<param name=cabbase value="./cab/jvmine.cab">
<param name=bImg value="./img/j">
<param name=bgcolor value=12632256>
<param name=_nbmine value=10>
<param name=_nbcol value=8>
<param name=_nbligne value=8>
<param name=fontsize value=16>
</applet></html>

游戏源码:
- //******************************************************************************
- // -----------------------------------------------------------
- // JVMine.java
- // -----------------------------------------------------------
- // Main Applet class for Demineur JVMine Applet
- // -----------------------------------------------------------
- // Author : R. BERTHOU
- // E-Mail : rbl@berthou.com
- // URL : http://www.javaside.com
- // -----------------------------------------------------------
- // Ver * Author * DATE * Description
- // ....................DD/MM/YY...............................
- // 1.02 * R. BERTHOU * 28/01/99 * Change mail address
- // 1.01 * R. BERTHOU * 28/08/97 * Correct minor bug
- // 1.00 * R. BERTHOU * 31/07/97 * Creation
- //******************************************************************************
- import java.applet.Applet;
- import java.util.Random ;
- import java.awt.*;
- import java.net.URL;
- import java.net.MalformedURLException;
- //==============================================================================
- // Main Class
- //==============================================================================
- public class JVMine extends java.applet.Applet
- {
- //--------------------------------------------------------------------------
- private int[] bStr ;
- private int iEtat ;
- private int iCpt ;
- private Image buffer;
- private Graphics offScreen;
- private long startTick ;
- private Image[] img ;
- private int aWidth, aHeight;
- private int m_bgcolor = 0 ;
- public int m_mine = 99 ;
- public int m_ligne = 16 ;
- public int m_col = 30 ;
- private int iMax ;
- // Font control variables
- private Font wFont;
- private FontMetrics wMetrics;
- private int iPas, iX ;
- //--------------------------------------------------------------------------
- public String getAppletInfo()
- {
- return "Name: JVMine V 1.02
- " +
- "Author: R. BERTHOU
- " +
- "E-Mail : rbl@berthou.com
- " +
- "URL : http://www.javaside.com/" ;
- }
- //--------------------------------------------------------------------------
- public String[][] getParameterInfo()
- {
- String[][] info =
- {
- { "bgImg", "String", "bgImage" },
- { "bgcolor", "int", "bgColor" },
- { "nbmine", "int", "nb de mine" },
- { "nbcol", "int", "nb de col" },
- { "nbligne", "int", "nb de ligne" },
- { "font", "String", "Font Name" },
- { "fontsize", "int", "Font Size" },
- };
- return info;
- }
- //--------------------------------------------------------------------------
- // The init() method is called by the AWT when an applet is first loaded or
- // reloaded. Override this method to perform whatever initialization your
- // applet needs, such as initializing data structures, loading images or
- // fonts, creating frame windows, setting the layout manager, or adding UI
- // components.
- //--------------------------------------------------------------------------
- public void init()
- {
- String param;
- try {
- aWidth = size().width;
- aHeight = size().height;
- buffer = createImage (aWidth, aHeight);
- offScreen = buffer.getGraphics ();
- } catch (Exception e) {
- offScreen = null;
- }
- // nbMine : nombre de mines
- //----------------------------------------------------------------------
- param = getParameter("nbmine");
- if (param != null)
- m_mine = Integer.parseInt(param);
- // nbcol : nombre de colones
- //----------------------------------------------------------------------
- param = getParameter("nbcol");
- if (param != null)
- m_col = Integer.parseInt(param);
- // nbligne : nombre de colones
- //----------------------------------------------------------------------
- param = getParameter("nbligne");
- if (param != null)
- m_ligne = Integer.parseInt(param);
- // bgcolor: Couleur du fond
- //----------------------------------------------------------------------
- param = getParameter("bgcolor");
- if (param != null)
- m_bgcolor = Integer.parseInt(param);
- MediaTracker trk = new MediaTracker(this) ;
- // bImg: Bouton Image
- //----------------------------------------------------------------------
- param = getParameter("bImg");
- img = new Image[13];
- if (param != null) {
- for (int i = 0 ; i < 13 ; i++) {
- img[i] = getImage(getCodeBase(), param + (i) + ".gif");
- trk.addImage(img[i], 0) ;
- }
- }
- else
- for (int i = 0 ; i < 13 ; i++)
- img[i] = null ;
- try { trk.waitForAll() ; }
- catch (InterruptedException e) { }
- // Font
- //----------------------------------------------------------------------
- param = getParameter("fontsize");
- int iSize = 12 ;
- if (param != null)
- iSize = Integer.parseInt(param);
- param = getParameter("font");
- if (param == null)
- param = new String("Arial") ;
- wFont = new Font(param, Font.BOLD, iSize);
- if (wFont == null) wFont = getFont() ;
- wMetrics = getFontMetrics(wFont);
- iPas = wMetrics.getHeight() * 2 ;
- newGame() ;
-
- }
- //----------------------------------------------------------------------
-
- // start : random
- //----------------------------------------------------------------------
- public void newGame() {
- Random a ;
- int i = 0 ;
- int j = 0 ;
- int iE ;
- a = new Random() ;
- iEtat = 0 ;
- iCpt = m_mine ;
- int k = 0 ;
- iMax = m_ligne*m_col ;
- bStr = new int[iMax] ;
- iX = (aWidth - (m_col * 15)) / 2 ;
- if ( (m_col * 15) > aWidth ) iX = 0 ;
- for (i = 0 ; i < iMax; i++) bStr[i] = 10 ;
- // calculate the tick to wait for
- startTick = -1 ;
- i = 0 ;
- while ( i < m_mine) {
- j = (int)(iMax * a.nextDouble()) ;
- if ( (j < iMax) && (bStr[j] != 19 ) ) {
- iE = j % m_col ;
- bStr[j] = 19 ;
- i++ ;
- if (iE > 0) { // pas la 1er colonne
- k = j-1-m_col ; // -31
- if ( k >= 0 )
- if ( bStr[k] != 19 ) bStr[k] += 1 ;
- k = j - 1 ; // -1
- if ( k >= 0 )
- if ( bStr[k] != 19 ) bStr[k] += 1 ;
- k = j+m_col-1 ; // +29
- if ( k < iMax )
- if ( bStr[k] != 19 ) bStr[k] += 1 ;
- }
- k = j - m_col ;
- if ( k >= 0 )
- if ( bStr[k] != 19 ) bStr[k] += 1 ;
- k = j + m_col ;
- if ( k < iMax )
- if ( bStr[k] != 19 ) bStr[k] += 1 ;
- if (iE < (m_col-1)) { // Pas la derniere
- k = j-m_col+1 ; // -29
- if ( k >= 0 )
- if ( bStr[k] != 19 ) bStr[k] += 1 ;
- k = j + m_col + 1 ; // +31
- if ( k < iMax )
- if ( bStr[k] != 19 ) bStr[k] += 1 ;
- k = j + 1 ; // +1
- if ( k < iMax )
- if ( bStr[k] != 19 ) bStr[k] += 1 ;
- }
- }
- }
- repaint();
-
- }
- // start :
- //----------------------------------------------------------------------
- public void start() {
- repaint();
- }
- // mouseDown :
- //----------------------------------------------------------------------
- public boolean mouseDown(Event e, int x, int y){
- int iC = (x-iX) / 15 ;
- int iL = (y-iPas) / 15 ;
- boolean rep = false ;
- if ( (x > ((aWidth/2)-20)) && (x < ((aWidth/2)+40)) &&
- (y > (iPas/4)) && (y < (iPas*3/4) ) ) {
- URL clickDest ;
- try{
- clickDest = new URL("http://www.javaside.com/") ;
- getAppletContext().showDocument(clickDest, "rbl");
- }catch(MalformedURLException mal){
- System.out.println("Bad URL!");
- }
- return(true) ;
- }
- if (iEtat == 1) {
- newGame() ;
- repaint() ;
- return(true);
- }
- if ( (y > iPas) && (x > iX) && (x < aWidth - iX))
- if ( (e.modifiers & Event.META_MASK) == Event.META_MASK) {
- if ( bStr[(iL*m_col)+iC] > 9 ) {
- rep = true ;
- if ( bStr[(iL*m_col)+iC] < 20 ) {
- if (iCpt > 0) {
- bStr[(iL*m_col)+iC] += 10 ;
- iCpt-- ;
- }
- else
- showStatus("Erreur trop de mines...");
- }
- else {
- bStr[(iL*m_col)+iC] -= 10 ;
- iCpt++ ;
- }
- }
- else
- rep = testCase((iL*m_col)+iC ) ;
-
- }
- else {
- if ( bStr[(iL*m_col)+iC] > 9) {
- if (startTick == -1)
- startTick = System.currentTimeMillis() ;
- bStr[(iL*m_col)+iC] -= 10 ;
- rep = true ;
- if (bStr[(iL*m_col)+iC] == 9)
- iEtat = 1 ;
- if (bStr[(iL*m_col)+iC] == 0)
- verifPos( (iL*m_col) + iC) ;
- }
- }
- if (rep) repaint() ;
- return(true);
- }
- //----------------------------------------------------------------------
- public void verifPos(int j) {
- int iE = j % m_col ;
- int k ;
- if (iE > 0) { // Pas la 1ere col
- k = j - m_col -1 ; // -31
- if ( k >= 0 )
- if (( bStr[k] > 9 ) && ( bStr[k] < 20 ) ) {
- bStr[k] -= 10 ;
- if (bStr[k] == 0) verifPos( k ) ;
- }
- k = j - 1 ; // -1
- if ( k >= 0 )
- if (( bStr[k] > 9 ) && ( bStr[k] < 20 ) ) {
- bStr[k] -= 10 ;
- if (bStr[k] == 0) verifPos( k ) ;
- }
- k = j + m_col - 1 ; // +29
- if ( k < iMax )
- if (( bStr[k] > 9 ) && ( bStr[k] < 20 ) ) {
- bStr[k] -= 10 ;
- if (bStr[k] == 0) verifPos( k ) ;
- }
- }
- k = j - m_col ;
- if ( k >= 0 )
- if (( bStr[k] > 9 ) && ( bStr[k] < 20 ) ) {
- bStr[k] -= 10 ;
- if (bStr[k] == 0) verifPos( k ) ;
- }
- k = j + m_col ;
- if ( k < iMax )
- if (( bStr[k] > 9 ) && ( bStr[k] < 20 ) ) {
- bStr[k] -= 10 ;
- if (bStr[k] == 0) verifPos( k ) ;
- }
- if (iE < (m_col-1)) { // Pas la derniere
- k = j - m_col+1 ; // -29
- if ( k >= 0 )
- if (( bStr[k] > 9 ) && ( bStr[k] < 20 ) ) {
- bStr[k] -= 10 ;
- if (bStr[k] == 0) verifPos( k ) ;
- }
- k = j + m_col + 1 ; // +31
- if ( k < iMax )
- if (( bStr[k] > 9 ) && ( bStr[k] < 20 ) ) {
- bStr[k] -= 10 ;
- if (bStr[k] == 0) verifPos( k ) ;
- }
- k = j + 1 ; // +1
- if ( k < iMax )
- if (( bStr[k] > 9 ) && ( bStr[k] < 20 ) ) {
- bStr[k] -= 10 ;
- if (bStr[k] == 0) verifPos( k ) ;
- }
- }
- }
- public boolean testCase(int j) {
- int iE = j % m_col ;
- int i = 0 ;
- int k ;
- if (iE > 0) { // Pas la 1ere col
- k = j - m_col - 1 ; // -31
- if ( k >= 0 )
- if ( bStr[k] > 19 ) i++ ;
- k = j - 1 ; // -1
- if ( k >= 0 )
- if ( bStr[k] > 19 ) i++ ;
- k = j + m_col - 1 ; // +29
- if ( k < iMax )
- if ( bStr[k] > 19 ) i++ ;
- }
- k = j - m_col ;
- if ( k >= 0 )
- if ( bStr[k] > 19 ) i++ ;
-
- k = j + m_col ;
- if ( k < iMax )
- if ( bStr[k] > 19 ) i++ ;
- if (iE < (m_col-1) ) {
- k = j - m_col + 1 ; // -29
- if ( k >= 0 )
- if ( bStr[k] > 19 ) i++ ;
- k = j + m_col + 1 ; // +31
- if ( k < iMax )
- if ( bStr[k] > 19 ) i++ ;
- k = j + 1 ; // +1
- if ( k < iMax )
- if ( bStr[k] > 19 ) i++ ;
- }
- if (i == bStr[j]) {
- verifPos(j) ;
- return true ;
- }
- else
- return false ;
- }
- // paint : Called when the applet needs to be painted
- // calls the flicker free updating system
- //----------------------------------------------------------------------
- public void paint (Graphics g) {
- update(g);
- } // end of paint
- //----------------------------------------------------------------------
- // update : Draw the applet without flicker
- //----------------------------------------------------------------------
- public synchronized void update(Graphics g) {
- if (offScreen!=null) {
- paintApplet(offScreen);
- g.drawImage(buffer,0,0,this);
- } else
- paintApplet(g);
- } // end of update
- //----------------------------------------------------------------------
- // paintApplet : Paint the applet into whatever image
- //----------------------------------------------------------------------
- public void paintApplet(Graphics g) {
- int i = 0 ;
- int j = 0 ;
- int a = 0 ;
- int k = 0 ;
- g.setColor( new Color(m_bgcolor) );
- g.fillRect(0, 0, aWidth, aHeight) ;
- for (i = 0 ; i < m_ligne; i++) {
- for (j = 0 ; j < m_col; j++) {
- a = bStr[(i*m_col)+j] ;
- if ( (iEtat == 0) && (a == 9) ) iEtat = 1 ;
- if (iEtat == 1) {
- if (a == 19) a = 9 ;
- if ((a > 19) && (a != 29) ) {
- iEtat = 1 ;
- a = 41 ;
- }
- }
-
- if (a > 40) a = 12 ; else
- if (a > 19) a = 11 ; else
- if (a > 9) { a = 10 ; k++; }
- if (img[a] != null)
- g.drawImage(img[a], iX+(j*15), iPas + (i*15) , this) ;
- }
- }
- long thisTick ;
- // calculate the tick to wait for
- if (startTick != -1)
- thisTick = (System.currentTimeMillis() - startTick ) / 1000;
- else
- thisTick = 0 ;
- g.setColor( new Color(0) );
- g.fill3DRect(iPas,
- iPas/4,
- iPas,
- iPas/2,
- true ) ;
- g.fill3DRect(aWidth-iPas-iPas,
- iPas/4,
- iPas,
- iPas/2,
- true ) ;
- g.setFont( wFont );
- g.setColor( Color.green );
- g.drawString (" " + iCpt, iPas+5, iPas*2/3 ) ;
- g.drawString (" " + thisTick, aWidth-iPas-iPas+5, iPas*2/3 ) ;
- g.setColor( Color.black );
- if (k == 0) {
- iEtat = 1 ;
- g.drawString (" " + iCpt, iPas+5, (iPas*2/3) ) ;
- g.drawString ("Win", (aWidth/2)-5, (iPas*2/3) ) ;
- }
- else
- if (iEtat == 1)
- g.drawString ("Lose", (aWidth/2)-5, (iPas*2/3) ) ;
- else {
- g.setColor( new Color(0xC0C0C0) );
- g.fill3DRect( (aWidth / 2)-20, iPas/4, 40, iPas/2, true) ;
- g.setColor( new Color(0) );
- g.drawString ("?", (aWidth/2)-3, (iPas*2/3) ) ;
- }
- }
- }
复制代码
function TempSave(ElementID)
{
CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);
CommentsPersistDiv.save("CommentXMLStore");
}
function Restore(ElementID)
{
CommentsPersistDiv.load("CommentXMLStore");
document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");
}
源码下载:http://file.javaxxz.com/2014/10/12/235057578.zip |
|