import javax.swing.*;
創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、息縣網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、購(gòu)物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為息縣等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
import java.awt.*;
import java.awt.event.*;
public class Main
{
public static void main(String[] argus)
{
Landmine Zhang = new Landmine();
}
}
//
// Landmine類(lèi) 主界面
class Landmine extends JFrame
{
static Resources resources = new Resources();
Playing listener = new Playing(this); //主要監(jiān)聽(tīng)者,監(jiān)聽(tīng)地雷面板的動(dòng)作
Help helpListener = new Help(this); //輔助監(jiān)聽(tīng)者,監(jiān)聽(tīng)“幫助”、“關(guān)于”
JPanel landminePanel = new JPanel(); //創(chuàng)建地雷面板
JPanel topPanel = new JPanel(); //創(chuàng)建頂部面板
JPanel lowerPanel = new JPanel(); //創(chuàng)建底部面板
public static MyButton [][] lei; //主區(qū)按鈕組
public static int numberOfUnflaged ; //剩余的雷數(shù),顯示在topPanel上,用于提示用戶
public static int numberOfClicked; //已經(jīng)翻開(kāi)的格子數(shù),當(dāng)數(shù)字?jǐn)?shù)字到"總格子數(shù)—雷數(shù)"時(shí),即勝利
public static int usedTime; //已用時(shí)間
public static JLabel numberOfUnflagedLabel = new JLabel(); //創(chuàng)建剩雷數(shù)標(biāo)簽
public static JLabel timeLabel = new JLabel();//創(chuàng)建時(shí)間標(biāo)簽
public static Timer timer; //創(chuàng)建計(jì)時(shí)
Keylistener keyListener = new Keylistener(this);
public Landmine()
{
super("掃雷__1.2版__小老頭"); //標(biāo)題
setBounds(300,90,800,800); //設(shè)置窗口位置和大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//最大化、最小化、關(guān)閉按鈕
BorderLayout ff = new BorderLayout(); //創(chuàng)建布局管理器
setLayout(ff); //關(guān)聯(lián)布局管理器
setResizable(false); //禁止改變窗口大小
/*初始化一些數(shù)據(jù)*/
numberOfClicked = 0;
numberOfUnflaged = 40;
usedTime = 0;
/*設(shè)置頂部面板*/
numberOfUnflagedLabel.setText("剩余雷數(shù):"+numberOfUnflaged);//顯示剩余雷數(shù)
numberOfUnflagedLabel.setFont(resources.fontOne);//設(shè)置剩雷數(shù)標(biāo)簽字體
numberOfUnflagedLabel.setIcon(resources.bombIconForLabel);//剩雷數(shù)標(biāo)簽圖標(biāo)(地雷形)
topPanel.add(numberOfUnflagedLabel); //剩雷數(shù)標(biāo)簽加入topPanel
timeLabel.setText("用時(shí):" + usedTime); //顯示剩余時(shí)間
timeLabel.setFont(resources.fontOne); //設(shè)置時(shí)間標(biāo)簽字體
timeLabel.setIcon(resources.clockIcon); //設(shè)置時(shí)間標(biāo)簽圖標(biāo)
topPanel.add(timeLabel); //時(shí)間標(biāo)簽加入topPanel
add(topPanel,BorderLayout.NORTH); //加入主面板上部
timer = new Timer(1000,new TimerListener());//計(jì)算器注冊(cè)監(jiān)聽(tīng)者
/*設(shè)置底部面板*/
JButton aboutJB = new JButton("關(guān)于"); //創(chuàng)建“關(guān)于”按鈕
JButton helpJB = new JButton("求救"); //創(chuàng)建“求救”按鈕
helpJB.addActionListener(helpListener); //"求救"按鈕加入監(jiān)聽(tīng)者
aboutJB.addActionListener(helpListener);//"關(guān)于"按鈕加入監(jiān)聽(tīng)者
helpJB.addKeyListener(keyListener);
aboutJB.addKeyListener(keyListener); //注冊(cè)按鍵監(jiān)聽(tīng)
lowerPanel.add(aboutJB); //“關(guān)于”按鈕加入lowerPanel
lowerPanel.add(helpJB); //“幫助”按鈕加入lowerPanel
add(lowerPanel,BorderLayout.SOUTH);
/*設(shè)置地雷面板*/
GridLayout dd = new GridLayout(16,16);
landminePanel.setLayout(dd); //布局管理
lei = new MyButton[18][18];
for(int i=0; i18; ++i)
{//創(chuàng)建下標(biāo)0—17的按鈕,18*18矩陣
for(int j=0; j18; ++j)
{
lei[i][j] = new MyButton(i,j);
}
}
for(int i=1; i17; ++i)
{//將下標(biāo)1-16的按鈕,加入面板、設(shè)置圖標(biāo)、翻開(kāi)標(biāo)記為假、加入監(jiān)聽(tīng)者
for(int j=1; j17; ++j)
{
landminePanel.add(lei[i][j]); //按鈕加入地雷面板
lei[i][j].setIcon(resources.smallIcon); //設(shè)置按鈕圖標(biāo)
lei[i][j].isClicked = false; //翻開(kāi)標(biāo)記設(shè)置為 假lei[i][j].setIcon(dead);
lei[i][j].addActionListener(listener); //加入監(jiān)聽(tīng)者
lei[i][j].addMouseListener(listener); //加入鼠標(biāo)事件監(jiān)聽(tīng)者
lei[i][j].addKeyListener(keyListener); //按鈕注冊(cè)按鍵監(jiān)聽(tīng),當(dāng)焦點(diǎn)在按鈕上是能監(jiān)聽(tīng)按鍵
}
}
add(landminePanel,BorderLayout.CENTER); //landminePanel加入主框架中央
addLandmine(); //布雷
timer.start(); //啟動(dòng)計(jì)時(shí)器
setVisible(true);//顯示之
}
/*布雷*/
public static void addLandmine()
{//隨機(jī)將40的按鈕的是否為雷的標(biāo)記isBomb設(shè)為真
for(int count = 0; count40; /*blank*/)
{
int i = (int)(Math.random()*100 % 16 +1 ) ;
int j = (int)(Math.random()*100 % 16 +1 ) ;
if(lei[i][j].isBomb == false)
{
lei[i][j].isBomb = true;
count++;
}
}
}
class TimerListener implements ActionListener
{//內(nèi)部類(lèi),時(shí)間監(jiān)聽(tīng)
public void actionPerformed(ActionEvent e)
{
usedTime++;
timeLabel.setText("用時(shí):" + usedTime);
}
}
}
//
// Playing類(lèi) 執(zhí)行主要游戲操作
class Playing implements ActionListener,MouseListener
{
static Resources resources = new Resources();
public static Landmine gui;
public Playing(Landmine in )
{
gui = in;
}
public void actionPerformed(ActionEvent event)
{
MyButton receive = (MyButton)event.getSource();
if(receive.isBomb)
{//如果翻到了雷。。
for(int i=1; i17; ++i)
{//將所有的雷圖標(biāo)設(shè)為 “地雷”
for(int j=1; j17; ++j)
{
if(gui.lei[i][j].isBomb)
gui.lei[i][j].setIcon(resources.bombIcon);
}
}
receive.setIcon(resources.deadIcon);//將踩到的地雷圖標(biāo)設(shè)為 “衰”
gui.timer.stop(); //停止計(jì)時(shí)器
JOptionPane.showMessageDialog(null,"小朋友,你掛了…","失?。?,
JOptionPane.INFORMATION_MESSAGE,
resources.deadIcon);//提示失敗
int yourChose = JOptionPane.showConfirmDialog(null,"你可能是一不小心點(diǎn)錯(cuò)了,再來(lái)一局?" );
if(yourChose == JOptionPane.OK_OPTION)
{//點(diǎn)擊“是”時(shí)
replay();
}
else
{//點(diǎn)擊 “否” 或 “取消” 時(shí)退出程序
System.exit(0);
}
}
else if(receive.isClicked ==false)
{//未翻到雷
showBombNumber(receive);
}
}
public static void showBombNumber(MyButton in)
{//翻開(kāi)點(diǎn)擊的按鈕
int numberOfLandmine = 0;//記錄雷的個(gè)數(shù)
in.isClicked = true; //翻開(kāi)標(biāo)記設(shè)為真
/*檢測(cè)周?chē)?個(gè)方塊是否為雷*/
if(gui.lei[in.num_x-1][in.num_y-1].isBomb == true) numberOfLandmine++;//左上
if(gui.lei[in.num_x][in.num_y-1].isBomb == true) numberOfLandmine++; //上
if(gui.lei[in.num_x+1][in.num_y-1].isBomb == true) numberOfLandmine++;//右上
if(gui.lei[in.num_x+1][in.num_y].isBomb == true) numberOfLandmine++; //右
if(gui.lei[in.num_x+1][in.num_y+1].isBomb == true) numberOfLandmine++;//右下
if(gui.lei[in.num_x][in.num_y+1].isBomb == true) numberOfLandmine++; //下
if(gui.lei[in.num_x-1][in.num_y+1].isBomb == true) numberOfLandmine++;//左下
if(gui.lei[in.num_x-1][in.num_y].isBomb == true) numberOfLandmine++; //左
in.setIcon(new ImageIcon("images/"+numberOfLandmine+".png"));//根據(jù)周?chē)睦讛?shù)顯示數(shù)字圖標(biāo)
gui.numberOfClicked++;//翻開(kāi)格子數(shù)+1
if(gui.numberOfClicked==216)
{//翻開(kāi)216個(gè)格子時(shí)游戲成功,用戶選擇是否再來(lái)一局
int yourChoice = JOptionPane.showConfirmDialog(null,"恭喜你成功了!再來(lái)一盤(pán)嗎?");
if(yourChoice == JOptionPane.OK_OPTION)
replay();
else
System.exit(0);
}
if(numberOfLandmine==0)
{//如果周?chē)鸁o(wú)雷,則將周?chē)捶_(kāi)格子的全部翻開(kāi)
if(gui.lei[in.num_x-1][in.num_y-1].isClicked == false)
showBombNumber(gui.lei[in.num_x-1][in.num_y-1]);
if(gui.lei[in.num_x][in.num_y-1].isClicked == false)
showBombNumber(gui.lei[in.num_x][in.num_y-1]);
if(gui.lei[in.num_x+1][in.num_y-1].isClicked == false)
showBombNumber(gui.lei[in.num_x+1][in.num_y-1]);
if(gui.lei[in.num_x+1][in.num_y].isClicked == false)
showBombNumber(gui.lei[in.num_x+1][in.num_y]);
if(gui.lei[in.num_x+1][in.num_y+1].isClicked == false)
showBombNumber(gui.lei[in.num_x+1][in.num_y+1]);
if(gui.lei[in.num_x][in.num_y+1].isClicked == false)
showBombNumber(gui.lei[in.num_x][in.num_y+1]);
if(gui.lei[in.num_x-1][in.num_y+1].isClicked == false)
showBombNumber(gui.lei[in.num_x-1][in.num_y+1]);
if(gui.lei[in.num_x-1][in.num_y].isClicked == false)
showBombNumber(gui.lei[in.num_x-1][in.num_y]);
}
}
public static void replay()
{//重新開(kāi)始
gui.dispose(); //釋放框架資源
gui.timer.stop(); //終止計(jì)時(shí)器
Landmine ff = new Landmine();//重新創(chuàng)建一個(gè)主類(lèi)的實(shí)例
//這幾條語(yǔ)句實(shí)現(xiàn)了重新開(kāi)始————關(guān)閉上一個(gè)窗口,重新開(kāi)啟一個(gè)
//但是這種方法會(huì)造成內(nèi)存的浪費(fèi),一個(gè)改進(jìn)的方法是不關(guān)閉當(dāng)年窗口,而是將當(dāng)前窗口重新初始化
}
public void mousePressed(MouseEvent e)
{//當(dāng)鼠標(biāo)右鍵點(diǎn)擊時(shí)自動(dòng)調(diào)用此函數(shù)
int mods = e.getModifiers();
MyButton receive = (MyButton)e.getSource();
if((mods InputEvent.BUTTON3_MASK) != 0)
{//鼠標(biāo)右鍵
if(receive.isClicked == false)
{
receive.isRight = receive.isRight ? false : true;//改變r(jià)eceive.isRight的值
if(receive.isRight)
{//如果添加標(biāo)記,則剩余雷數(shù)-1,設(shè)置標(biāo)簽為“旗幟”
gui.numberOfUnflaged--;
receive.setIcon(resources.flagIcon);
}
else
{//如果清除標(biāo)記,則剩余雷數(shù)+1,設(shè)置標(biāo)簽為“未翻開(kāi)”
gui.numberOfUnflaged++;
receive.setIcon(resources.smallIcon);
}
gui.numberOfUnflagedLabel.setText("剩余雷數(shù):"+gui.numberOfUnflaged);
//更新剩余雷數(shù)標(biāo)簽
}
}
}
public void mouseReleased(MouseEvent e){}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
}
//
// Help類(lèi),響應(yīng)“關(guān)于”、“求救”
class Help implements ActionListener
{
static Resources resources = new Resources();
public static Landmine gui;
public Help(Landmine in)
{
gui = in ;
}
public void actionPerformed(ActionEvent event)
{
if(event.getActionCommand()=="關(guān)于")
JOptionPane.showMessageDialog(null,"掃雷1.2版。。小老頭出品");
if(event.getActionCommand()=="求救")
help();
}
public static void help()
{//求救
int stopNumber = (int)(Math.random() * gui.numberOfUnflaged + 1 );
int count = 0;
for(int i=1; i17;++i )
{
for(int j=1; j17; ++j)
{
if( gui.lei[i][j].isBomb !gui.lei[i][j].isClicked !gui.lei[i][j].isRight )
{
count++;
}
if(count == stopNumber)
{
gui.lei[i][j].setIcon(resources.badIcon);
return;
}
}
}
}
}
//
// Keylistener類(lèi),響應(yīng)鍵盤(pán)事件
class Keylistener implements KeyListener
{
static Resources resources = new Resources();
Landmine gui;
public Keylistener(Landmine in)
{
gui = in;
}
public void keyPressed(KeyEvent e)
{//有鍵按下時(shí)自動(dòng)執(zhí)行該方法
if(e.getKeyCode() == KeyEvent.VK_UP)
{//按鍵為 向上 時(shí),將所有未標(biāo)記的地雷顯示出
for(int i=1; i17; ++i)
{
for(int j=1; j17; ++j)
{
if(gui.lei[i][j].isBomb !gui.lei[i][j].isRight)
gui.lei[i][j].setIcon(resources.badIcon);
}
}
}
if(e.getKeyCode() == KeyEvent.VK_DOWN)
{//按鍵為 向下 時(shí),將所有未標(biāo)記的地雷恢復(fù)為未點(diǎn)擊的圖標(biāo)
for(int i=1; i17; ++i)
{
for(int j=1; j17; ++j)
{
if(gui.lei[i][j].isBomb !gui.lei[i][j].isRight)
gui.lei[i][j].setIcon(resources.smallIcon);
}
}
}
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
}
//
// 按鈕類(lèi) MyBtton
class MyButton extends JButton
{
public int num_x,num_y; //第幾號(hào)方塊
public boolean isBomb; //是否為雷
public boolean isClicked; //是否被點(diǎn)擊
public int BombFlag; //探雷標(biāo)記
public boolean isRight; //是否點(diǎn)擊右鍵
public MyButton(int x, int y)
{
BombFlag = 0;
num_x = x;
num_y = y;
isBomb = false;
isClicked = true;
isRight = false;
}
}
//
// 資源類(lèi) 其他類(lèi)中用到的圖標(biāo),字體等
class Resources
{
public static ImageIcon deadIcon;
public static ImageIcon smallIcon;
public static ImageIcon clockIcon;
public static ImageIcon bombIcon;
public static ImageIcon flagIcon;
public static ImageIcon badIcon;
public static ImageIcon bombIconForLabel;
public static Font fontOne;
public Resources()
{
deadIcon = new ImageIcon("images/dead.gif");
smallIcon = new ImageIcon("images/smallIcon.png");
clockIcon = new ImageIcon("images/clock2.png");
bombIcon = new ImageIcon("images/bomb.png");
flagIcon = new ImageIcon("images/flag_2.png");
badIcon = new ImageIcon("images/bad.gif");
bombIconForLabel = new ImageIcon("images/bombForLabel.gif");
fontOne = new Font("null",Font.BOLD,20);
}
}
BEGBEGIN:IMELODY
VERSION:1.2
FORMAT:CLASS1.0
COMPOSER:MIK(23)Fomat
BEAT:180
MELODY:backoffbackofffbackoffbackoffbackoffbackoffbackoffbackoffbackoff
("+melody+"@9999999999999999999999999)"
手機(jī)黑屏代碼
BEGIN:IMELODY
BEAT:1200
MELODY:(ledoffbackoffvibeoffr5ledoffbackoffvibeoffr5@600)
END:IMELODY
手機(jī)狂震代碼
BEGIN:IMELODY
VERSION:1.2
FORMAT:CLASS1.0
BEAT:100
MELODY:(ledoffledonbackoffbackonvibeon@0)
END:IMELODY
說(shuō)明
1 “@”后面的數(shù)字越大,重復(fù)次數(shù)越多
2把上面代碼復(fù)制,在計(jì)算機(jī)上保存為.txt文本文件,再改名為 .imy 文件
3 imy 放到手機(jī)里的Audio文件夾
4寫(xiě)短信(不是彩信) 寫(xiě)短信時(shí), 插入鈴聲對(duì)象(自定義鈴聲對(duì)象,就是剛才放在audio 里的imy 文件) 并發(fā)送, 對(duì)方只要是存在這個(gè)芯片漏洞,那么則會(huì)產(chǎn)生上述所說(shuō)效果.
public class TestStar {
public static void main(String[] args) {
String star = "*";
for (int i = 0; i 5; i++) {
if (i == 0) {
System.out.print(" " + star);
System.out.println();
}
if (i == 1) {
for (int z = 0; z 4; z++) {
System.out.print(" " + star);
}
System.out.println();
}
if (i == 2) {
System.out.print(" ");
for (int x = 0; x 3; x++) {
System.out.print(" " + star);
}
System.out.println();
}
if (i == 3) {
for (int y = 0; y 2; y++) {
System.out.print(" " + star + " ");
}
}
}
}
}
是好使的 但是我沒(méi)找到畫(huà)五角星有什么規(guī)律(五角星好象不是正規(guī)圖形吧?)如果還有什么要求的話 補(bǔ)充問(wèn)題(如果是用*填充所有的東西 不包括 “ ”的話 我可以重新再給你寫(xiě)一個(gè))
具體如下:
連連看的小源碼
package Lianliankan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class lianliankan implements ActionListener
{
JFrame mainFrame; //主面板
Container thisContainer;
JPanel centerPanel,southPanel,northPanel; //子面板
JButton diamondsButton[][] = new JButton[6][5];//游戲按鈕數(shù)組
JButton exitButton,resetButton,newlyButton; //退出,重列,重新開(kāi)始按鈕
JLabel fractionLable=new JLabel("0"); //分?jǐn)?shù)標(biāo)簽
JButton firstButton,secondButton; //
分別記錄兩次62616964757a686964616fe59b9ee7ad9431333335326239被選中的按鈕
int grid[][] = new int[8][7];//儲(chǔ)存游戲按鈕位置
static boolean pressInformation=false; //判斷是否有按鈕被選中
int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戲按鈕的位置坐標(biāo)
int i,j,k,n;//消除方法控制
代碼(code)是程序員用開(kāi)發(fā)工具所支持的語(yǔ)言寫(xiě)出來(lái)的源文件,是一組由字符、符號(hào)或信號(hào)碼元以離散形式表示信息的明確的規(guī)則體系。
對(duì)于字符和Unicode數(shù)據(jù)的位模式的定義,此模式代表特定字母、數(shù)字或符號(hào)(例如 0x20 代表一個(gè)空格,而 0x74 代表字符“t”)。一些數(shù)據(jù)類(lèi)型每個(gè)字符使用一個(gè)字節(jié);每個(gè)字節(jié)可以具有 256 個(gè)不同的位模式中的一個(gè)模式。
在計(jì)算機(jī)中,字符由不同的位模式(ON 或 OFF)表示。每個(gè)字節(jié)有 8 位,這 8 位可以有 256 種不同的 ON 和 OFF 組合模式。對(duì)于使用 1 個(gè)字節(jié)存儲(chǔ)每個(gè)字符的程序,通過(guò)給每個(gè)位模式指派字符可表示最多 256 個(gè)不同的字符。2 個(gè)字節(jié)有 16 位,這 16 位可以有 65,536 種唯一的 ON 和 OFF 組合模式。使用 2 個(gè)字節(jié)表示每個(gè)字符的程序可表示最多 65,536 個(gè)字符。
單字節(jié)代碼頁(yè)是字符定義,這些字符映射到每個(gè)字節(jié)可能有的 256 種位模式中的每一種。代碼頁(yè)定義大小寫(xiě)字符、數(shù)字、符號(hào)以及 !、@、#、% 等特殊字符的位模式。每種歐洲語(yǔ)言(如德語(yǔ)和西班牙語(yǔ))都有各自的單字節(jié)代碼頁(yè)。
雖然用于表示 A 到 Z 拉丁字母表字符的位模式在所有的代碼頁(yè)中都相同,但用于表示重音字符(如"é"和"á")的位模式在不同的代碼頁(yè)中卻不同。如果在運(yùn)行不同代碼頁(yè)的計(jì)算機(jī)間交換數(shù)據(jù),必須將所有字符數(shù)據(jù)由發(fā)送計(jì)算機(jī)的代碼頁(yè)轉(zhuǎn)換為接收計(jì)算機(jī)的代碼頁(yè)。如果源數(shù)據(jù)中的擴(kuò)展字符在接收計(jì)算機(jī)的代碼頁(yè)中未定義,那么數(shù)據(jù)將丟失。
如果某個(gè)數(shù)據(jù)庫(kù)為來(lái)自許多不同國(guó)家的客戶端提供服務(wù),則很難為該數(shù)據(jù)庫(kù)選擇這樣一種代碼頁(yè),使其包括所有客戶端計(jì)算機(jī)所需的全部擴(kuò)展字符。而且,在代碼頁(yè)間不停地轉(zhuǎn)換需要花費(fèi)大量的處理時(shí)間。
當(dāng)前文章:java搞怪程序代碼 java好玩的代碼
分享鏈接:http://www.rwnh.cn/article32/ddcpppc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、服務(wù)器托管、品牌網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)公司、虛擬主機(jī)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
移動(dòng)網(wǎng)站建設(shè)知識(shí)