⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 board.java

📁 Sudoku游戏的原代码,以aop方式进行修改
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    }
                });
        
        
		openMenuItem.setEnabled( true);
		saveMenuItem.setEnabled( false);
        optionsMenuItem.setEnabled( false);
		setJMenuBar(menuBar);

        setCompsText();
		// CONSTS.log("End initComponents()!");
	}
    
    private void setCompsText()
    {
        jButton1.setToolTipText(Trans.get().tag("start_new_game"));
        jButton1.setText(Trans.get().tag("start"));
        jButton2.setText(Trans.get().tag("stop"));
        jButton2.setToolTipText( Trans.get().tag("cancel_current_game"));
        diffSlider.setToolTipText( Trans.get().tag("difficulty_level"));
        fileMenu.setText(           Trans.get().tag("file"));
        newMenuItem.setText(        Trans.get().tag("new_game"));
        openMenuItem.setText(       Trans.get().tag("open"));
        saveMenuItem.setText(       Trans.get().tag("save"));
        exitMenuItem.setText(       Trans.get().tag("exit"));
        optionsMenu.setText(        Trans.get().tag("options"));
        optionsMenuItem.setText(    Trans.get().tag("options"));
        langMenu.setText( Trans.get().tag("language"));
        helpMenu.setText(           Trans.get().tag("help"));
        contentsMenuItem.setText(   Trans.get().tag("contents"));
        aboutMenuItem.setText(       Trans.get().tag("about"));
    }

	private void initPanel(JPanel panel)
	{
		panel.setLayout(new GridLayout(3, 3, 1, 1));
		panel.setBorder(new EtchedBorder());
		panel.setPreferredSize(new Dimension(93, 93));
		panel.setRequestFocusEnabled(false);
        panel.setBackground( CONSTS.BLUE_MED);
	}


	private void exitMenuItemActionPerformed(ActionEvent evt)
	{
		System.exit(0);
	}

	public void setPosValue( int i, int j, int val)
	{
		cPos[i][j].setValue( val);
	}
	
	private void setPos( int[][] pos, boolean[][] pInitPos)
	{
		for (int i = 0; i < 9; i++)
		{
			for (int j = 0; j < 9; j++)
			{
                cPos[i][j].setNormalText();
				cPos[i][j].setBackground( CONSTS.BLUE_CLEAR);
				if( pInitPos[i][j])
				{
                    cPos[i][j].initPos = true;
					cPos[i][j].setText( String.valueOf( pos[i][j]));
					cPos[i][j].setForeground( Color.BLACK);
				}
				else
				{
                    cPos[i][j].initPos = false;
                    if( pos[i][j] !=  0)
                    	cPos[i][j].setText( String.valueOf( pos[i][j]));
                    else
                    	cPos[i][j].setText("");
					cPos[i][j].setForeground( Color.BLUE);
				}
			}
			
		}
	}

	public void initPartida(int[][] pos, boolean[][] pInitPos)
	{
		setMessage("");
		setPos( pos, pInitPos);
		jButton2.setEnabled( true);
		jButton1.setEnabled( false);
		newMenuItem.setEnabled( false);
		openMenuItem.setEnabled(false);
		saveMenuItem.setEnabled(true);
		disabled = false;
		diffSlider.setEnabled( false);
		optionsMenuItem.setEnabled( false);
	}

	public void setParent(FreeSudoku parent)
	{
		cParent = parent;
	}

	public void setMessage( String pMessage)
	{
		cTextFieldMessages.setText( pMessage);
	}

	public int getNivel()
	{

		return diffSlider.getValue();
	}

	public void disableAll()
	{
		cTextFieldMessages.setText("");
		jButton1.setEnabled( true);
		jButton2.setEnabled( false);
		newMenuItem.setEnabled( true);
		openMenuItem.setEnabled(true);
		saveMenuItem.setEnabled(false);
		disabled  = true;
		setPosBackgroundColor( CONSTS.GRAY_CLEAR);
		diffSlider.setEnabled( true);
        setMessage( Trans.get().tag("click_start"));
//		optionsMenuItem.setEnabled( true);
	}

	private void setPosBackgroundColor(Color pColor)
	{
		for (int i = 0; i < 9; i++)
		{
			for (int j = 0; j < 9; j++)
			{
				cPos[i][j].setBackground( pColor);
			}
		}
	}

    /**
     * @return
     */
    public boolean isSymmetric()
    {
        if( optionsDialog == null)
            optionsDialog = new OptionsDialog();
        return optionsDialog.isSymmetric();
    }
    
    protected String getPosSmall( int i, int j)
    {
        return cPos[i][j].getPosSmall();
    }

    /**
     * set the red check back to yellow
     *
     */
    public void backConsistence()
    {
    	for(int i = 0;i <9;i++)
			for(int j=0;j<9;j++)
			{
				if(cPos[i][j].getBackground().equals(CONSTS.RED_CLEAR)){
					cPos[i][j].setBackground(Color.YELLOW);
				}
			}
		cTextFieldMessages.setText("");
    }
    
    /**
     * Check if everything is still ok in the area of influence of one cell, only multivalue cell.
     */
    public void checkConsistence( int i, int j)
    {
        if( cPos[i][j].isSmall) 
            throw new RuntimeException("ERROR: checkConsistence. Shouldn't be small");
        String valInCell = cPos[i][j].getText();
        if( valInCell.equals("")) return;
        backConsistence();
        for(int x = 0; x < 9; x++)
        {
            if( cPos[i][x].isSmall && cPos[i][x].getText().indexOf( valInCell) != -1)
                setAlertInCell( i, x);
            if( cPos[x][j].isSmall  && cPos[x][j].getText().indexOf( valInCell) != -1)
                setAlertInCell( x, j);
        }

        for(int x = i - i%3; x < i - i%3 + 3; x++)
        {
            for(int y = j - j%3; y < j - j%3 + 3; y++)
            {
                if( cPos[x][y].isSmall && cPos[x][y].getText().indexOf( valInCell) != -1)
                    setAlertInCell( x, y);
            }
        }

        
    }
    
    private void setAlertInCell( int i, int j)
    {
        cPos[i][j].setBackground( CONSTS.RED_CLEAR);
        setMessage( "One optional value in cell is not consistent!");
    }

    /**
     * 
     */
    public void showAllPosibleVals()
    {
        for (int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 9; j++)
            {
                if( cPos[i][j].getText().length() == 0)
                {
                    cPos[i][j].isSmall = true;
                    cPos[i][j].setSmallText();
                    cPos[i][j].setText( cParent.getPosibleVals( i, j, false));
                    if( cPos[i][j].getText().length() > 4)    // switch double line
                        cPos[i][j].setMargin( Cell.smallCellDoubleLineMargin);
                    cPos[i][j].getCaret().setVisible(false);
                }
            }
        }
    }
    
    /**
     * Load game function
     *
     */
    public void loadGame() {
		FileDialog d = new FileDialog(this, "载入进度", FileDialog.LOAD);
		d.setFile("*.sav");
		d.setDirectory("./save");
		d.show();
		String saveFile = null;
		if ( d.getFile() != null) {
			String getfile = d.getFile();
			String getDire = d.getDirectory();
			saveFile = getDire + getfile;
			BufferedReader reader = null;
			try {
				ArrayList array= new ArrayList();
				reader = new BufferedReader(new FileReader(new File(
						saveFile)));
				String s= null;
				while((s = reader.readLine())!=null){
					array.add(s);
				}
				cParent.loadFromFile(array);
			} catch (Exception ex) {
				ex.printStackTrace();
			} finally {
				try {
					reader.close();
				} catch (IOException ex) {
					ex.printStackTrace();
				}
			}
		}
	}
    
    /**
     * Save game function
     */
    private void saveGame() {
		FileDialog d = new FileDialog(this, "保存进度", FileDialog.SAVE);
		d.setFile("*.sav");
		//d.setDirectory(".\\save");
		d.show();
		String saveFile = null;
		if ( d.getFile() != null) {
			saveFile = d.getDirectory() + d.getFile();
			ArrayList arrayList = cParent.statusToFile();
			File file = new File(saveFile);
			BufferedWriter buffer = null;
			try {
				FileWriter writer = new FileWriter(file);
				buffer = new BufferedWriter(writer);
				for (int i = 0; i < arrayList.size(); i++) {
					buffer.write((String) arrayList.get(i));
					buffer.write("\n");
				}
				buffer.flush();
			} catch (Exception ex) {
				ex.printStackTrace();
			} finally {
				try {
					buffer.close();
				} catch (IOException ex) {
					ex.printStackTrace();
				}
			}
		} else {
			// do nothing
		}
	}
    
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -