?? mainframe.java
字號:
top10.addActionListener(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String arg[]){
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
MainFrame main = new MainFrame();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension mainSize = main.getSize();
main.setLocation((screenSize.width - mainSize.width) / 2,
(screenSize.height - mainSize.height) / 2);
main.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
chushihuablack();
if(e.getSource()==help){
HelpDialog helpdialog = new HelpDialog(this,"幫助");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension mainSize = helpdialog.getSize();
helpdialog.setLocation((screenSize.width - mainSize.width) / 2,
(screenSize.height - mainSize.height) / 2);
helpdialog.setResizable(false);
helpdialog.setVisible(true);
}
else if(e.getSource()==setup){
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension mainSize = setupdialog.getSize();
setupdialog.setLocation((screenSize.width - mainSize.width) / 2,
(screenSize.height - mainSize.height) / 2);
setupdialog.setResizable(false);
setupdialog.setVisible(true);
}else if(e.getSource()==about){
AboutDialog aboutdialog = new AboutDialog(this,"關于");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension mainSize = aboutdialog.getSize();
aboutdialog.setLocation((screenSize.width - mainSize.width) / 2,
(screenSize.height - mainSize.height) / 2);
aboutdialog.setResizable(false);
aboutdialog.setVisible(true);
}else if(e.getSource()==top10){
Top10 top10dialog = new Top10(this,"top10");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension mainSize = top10dialog.getSize();
top10dialog.setLocation((screenSize.width - mainSize.width) / 2,
(screenSize.height - mainSize.height) / 2);
top10dialog.setResizable(false);
top10dialog.setVisible(true);
}else{
sound.start();
if(kongzhi==0){
buttonxinxi1(e.getSource());
kongzhi=1;return;
}
if(kongzhi==1){
buttonxinxi2(e.getSource());
if(Compare1(upiconbuttonx,upiconbuttony,iconbuttonx,iconbuttony)){
xianshi.setText("兩次選擇的點相同,取消選擇!!");
iconbutton[map.buttonblack[n1]].setBorder(BorderFactory.createRaisedBevelBorder());
upiconbuttonx=-1;upiconbuttony=-1;
iconbuttonx=-1;iconbuttony=-1;kongzhi=0;return;
}
else{
if(Compare2(uptupianzhi,tupianzhi)){
iconbutton[map.buttonblack[n1]].setVisible(false);
iconbutton[map.buttonblack[n2]].setVisible(false);
sound.earse();
map.iconblack[n1]=-1;
map.iconblack[n2]=-1;
upiconbuttonx=0;
upiconbuttony=0;
iconbuttonx=0;
iconbuttony=0;
refreshiconnum-=2;
chushihuablack();
score=score+24;
scorelb.setText("分數:"+score);
kongzhi=0;
if(EndGame()){
xianshi.setText("點擊 GO TO TOP10 查看你的排名!!!");
isEmp=true;
top10.setEnabled(true);
}
return;
}else {
xianshi.setText("這次選擇的點與上個點無解!改變選擇為當前點!!");
score=score-1;
scorelb.setText("分數:"+score);
iconbutton[map.buttonblack[n1]].setBorder(BorderFactory.createRaisedBevelBorder());
if(n1!=n2){
iconbutton[map.buttonblack[n2]].setBorder(BorderFactory.createLineBorder(Color.RED,2));
n1=n2;upiconbuttonx=iconbuttonx;upiconbuttony=iconbuttony;uptupianzhi=tupianzhi;
}kongzhi=1;
}
}
}
}
}
public static void chushihuablack(){
for(int j=0;j<clomu;j++){
for(int i=0;i<row;i++){
black[i][j]=0;
}
}
int n=0;
for(int j=0;j<clomu;j++){
for(int i=0;i<row;i++){
if(iconbutton[n].isVisible())
black[i][j]=1;
n++;
}
}
}
public void buttonxinxi1(Object object){
int i;
for(i=0;i<map.iconnum;i++)
{
if(object==iconbutton[map.buttonblack[i]]){
n1=i;
upiconbuttony=map.buttonblack[i]/17+1;
upiconbuttonx=map.buttonblack[i]-(upiconbuttony-1)*17+1;
uptupianzhi=map.iconblack[i]+1;
iconbutton[map.buttonblack[i]].setBorder(BorderFactory.createLineBorder(Color.RED,2));
xianshi.setText("當前點的坐標:"+upiconbuttonx+","+upiconbuttony+"值為:"+uptupianzhi+"位移:"+(map.buttonblack[n1]+1));
}
}
}
public void buttonxinxi2(Object object){
int i;
for(i=0;i<map.iconnum;i++)
{
if(object==iconbutton[map.buttonblack[i]]){
n2=i;
iconbuttony=map.buttonblack[i]/17+1;
iconbuttonx=map.buttonblack[i]-(iconbuttony-1)*17+1;
tupianzhi=map.iconblack[i]+1;
iconbutton[map.buttonblack[i]].setBorder(BorderFactory.createLineBorder(Color.RED,2));
xianshi.setText("當前點的坐標:"+iconbuttonx+","+iconbuttony+"值為:"+tupianzhi+"位移:"+(map.buttonblack[n2]+1));
}
}
}
public boolean Compare1(int upiconbuttonx,int upiconbuttony,int iconbuttonx,int iconbuttony){
if(upiconbuttonx==iconbuttonx&&iconbuttony==upiconbuttony)
return(true);
else return(false);
}
public boolean Compare2(int uptupianzhi,int tupianzhi){
int direction=0;
if(uptupianzhi==tupianzhi){
direction=map.diretion(upiconbuttonx,iconbuttonx,upiconbuttony,iconbuttony);
if(map.det(direction,upiconbuttonx,iconbuttonx,upiconbuttony,iconbuttony,false)){
xianshi.setText("兩點有解,消除成功!");
return(true);
}else return(false);
}else
return(false);
}
public static boolean EndGame(){
int isDead=0;
for(int i=0;i<row*clomu;i++){
if(iconbutton[i].isVisible()){
isDead=1;
break;
}
}
if(isDead==1)return(false);
else return(true);
}
public void yanshi(int shijian){
try {
Robot ne=new Robot();
ne.delay(shijian);
} catch (AWTException en) {
en.printStackTrace();
}
}
Image getImage(String filename) {
URLClassLoader urlLoader = (URLClassLoader)this.getClass().
getClassLoader();
URL url = null;
Image image = null;
url = urlLoader.findResource(filename);
image = Toolkit.getDefaultToolkit().getImage(url);
MediaTracker mediatracker = new MediaTracker(this);
try {
mediatracker.addImage(image, 0);
mediatracker.waitForID(0);
}
catch (InterruptedException _ex) {
image = null;
}
if (mediatracker.isErrorID(0)) {
image = null;
}
return image;
}
}
class Time extends Thread{
public Time(){
MainFrame.map.time=0;
}
public void run() {
while((!MainFrame.isEmp)){
MainFrame.timelb.setText("時間:"+MainFrame.map.time);
yanshi(1000);
MainFrame.map.time++;
MainFrame.timelb.setText("時間:"+MainFrame.map.time);
}
if(MainFrame.isEmp){
if(MainFrame.map.time>=MainFrame.map.iconnum*4){
MainFrame.score=MainFrame.score-2*(MainFrame.map.time-(MainFrame.map.iconnum*4));
}else {
MainFrame.score=MainFrame.score+2*((MainFrame.map.iconnum*4)-MainFrame.map.time);
}
MainFrame.scorelb.setText("分數:"+MainFrame.score);
}
}
public void start(Time thread){
MainFrame.map.time=0;
thread.start();
}
public void yanshi(int shijian){
try {
Robot ne=new Robot();
ne.delay(shijian);
} catch (AWTException en) {
en.printStackTrace();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -