




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
永磁同步電機(jī)雙環(huán)調(diào)速系統(tǒng)的仿真研究Java與面向?qū)ο蠹夹g(shù)課程設(shè)計(jì)報(bào)告(2012)PAGE4PAGE1Java與面向?qū)ο蠹夹g(shù)課程設(shè)計(jì)報(bào)告(2011--2012年度第2學(xué)期)魔板游戲?qū)I(yè)電子信息工程學(xué)生姓名吳才奇班級(jí)電信四班學(xué)號(hào)1103030429指導(dǎo)教師周越完成日期2012魔板游戲PAGE3目錄目錄TOC\o"1-5"\h\z\u目錄 21概述 11.1課程設(shè)計(jì)目的 1課程設(shè)計(jì)任務(wù)書 12需求分析 22.1設(shè)計(jì)目標(biāo) 22.2主體功能 12.3開發(fā)環(huán)境 13概要設(shè)計(jì) 23.1系統(tǒng)的功能模塊劃分 23.1.1PuzzleGame.java類模塊 23.1.4Point.java類模塊 33.2系統(tǒng)流程圖 44詳細(xì)設(shè)計(jì) 65測(cè)試 75.1測(cè)試方案 75.2測(cè)試結(jié)果 76小結(jié) 8參考文獻(xiàn) 10附錄 11附錄1源程序清單 11附錄1.1PuzzleGame模塊源程序 11附錄1.2PuzzlePad模塊源程序 13附錄1.3Block類模塊源程序 16附錄1.4Point類模塊源程序 17附錄1.5HandleImage類模塊源程序 17附錄1.6HandleMove類模塊源程序 18附錄1.7VertfySuccess類模塊源程序 20附錄1.8Sound類模塊源程序 21附錄1.8Sound類模塊源程序 21PAGE5魔板游戲1概述1.1課程設(shè)計(jì)目的利用所學(xué)高級(jí)語(yǔ)言的語(yǔ)法特性,結(jié)合數(shù)據(jù)結(jié)構(gòu)算法、網(wǎng)絡(luò)知識(shí)、文件處理和數(shù)據(jù)庫(kù)等知識(shí)完成綜合題目的設(shè)計(jì)和代碼實(shí)現(xiàn),并培養(yǎng)鍛煉分析程序、撰寫報(bào)告等能力。1.2課程設(shè)計(jì)任務(wù)書學(xué)院信息學(xué)院專業(yè)電子信息工程學(xué)生姓名吳才奇班級(jí)學(xué)號(hào)1103030429課程設(shè)計(jì)題目基于Java的魔板游戲軟件設(shè)計(jì)實(shí)踐教學(xué)要求與任務(wù):采用java技術(shù)設(shè)計(jì)魔板游戲軟件,設(shè)計(jì)要求如下:魔板由3*3或4*4個(gè)格子組成。對(duì)于3*3魔板,在前8個(gè)格子里隨機(jī)放置8個(gè)編號(hào)1~8的方塊,最后一個(gè)格子是未放置方塊的空格子;對(duì)于4*4的魔板,在前15個(gè)格子里隨機(jī)放置15個(gè)編號(hào)1~15的方塊,最后一個(gè)格子是未放置方塊的空格子。用鼠標(biāo)單擊任何與格子水平或垂直相鄰的方塊就可以把該方塊移入空格子,而當(dāng)前方塊移動(dòng)之前所在的格子成為空格子。通過不斷地移動(dòng)方塊可以將方塊一行一行地按數(shù)順序排好。魔板游戲也可以使用圖像來代替數(shù)字。例如,對(duì)于3*3的魔板,將一幅圖像分成3*3個(gè)小圖像,除去最后一幅小圖像(圖像的右下角),將其余的各幅小圖像打亂順序后放在魔板的方塊上,最終目標(biāo)是通過移動(dòng)方塊回復(fù)原始圖像(不包括圖像的右下角)。當(dāng)用戶按要求排列好方塊后,程序彈出對(duì)話框,提示用戶成功的消息。模板游戲分為兩個(gè)級(jí)別,用戶可以通過界面上提供的菜單來選擇“初級(jí)”或“高級(jí)”兩個(gè)級(jí)別。對(duì)于“初級(jí)”級(jí)別,魔板由3*3個(gè)格子組成;對(duì)于“高級(jí)”級(jí)別,魔板由4*4個(gè)格子組成?!澳0逵螒颉碧峁┮环J(rèn)圖像,用戶可以使用該圖像來玩魔板游戲。用戶也可以使界面提供的菜單選擇一幅新圖像,然后使用這個(gè)新的圖像來玩魔板游戲。工作計(jì)劃與進(jìn)度安排:第18周:布置課程設(shè)計(jì)任務(wù),查閱資料,分組設(shè)計(jì),程序調(diào)試。第19周:程序調(diào)試,編寫課程設(shè)計(jì)報(bào)告,驗(yàn)收,答辯。指導(dǎo)教師:2012年月日專業(yè)負(fù)責(zé)人:2012年月日學(xué)院教學(xué)副院長(zhǎng):2012年月日2需求分析2.1設(shè)計(jì)目標(biāo)熟悉Java語(yǔ)言和NetBeansIDE6.8等開發(fā)工具。2.2主體功能這個(gè)程序定義了一些組件,工具欄按鈕,文本區(qū)和菜單。魔板游戲程序設(shè)計(jì)通過PuzzleGame.java、PuzzlePad.java、Point.java、Block.java、HandleImage.java、VerifySuccsee.java和HandleMove.java7個(gè)類來實(shí)現(xiàn)魔板游戲的整體功能。2.3開發(fā)環(huán)境操作系統(tǒng):MicrosoftWindows98/2000/XP硬件要求:處理器:2.6GHzIntelPentiumIV或具有同等性能的處理器內(nèi)存:2GB硬盤空間:1GB可用硬盤空間開發(fā)工具:NetBeansIDE6.83概要設(shè)計(jì)3.1系統(tǒng)的功能模塊劃分在設(shè)計(jì)魔板游戲時(shí),需要編寫7個(gè)java源文件:PuzzleGame.java、PuzzlePad.java、Point.java、Block.java、HandleImage.java、VerifySuccsee.java和HandleMove.java。魔板游戲除了需要編寫的上述7個(gè)Java源文件所給出的類外,還需要Java系統(tǒng)提供的一些重要的類,如JMenuItem、JButton和JRadioButton等類。魔板游戲所用到的一些重要的類以及之間的組合關(guān)系如圖1.1所示。PuzzleGamePuzzleGameJMenuPuzzlePadJRadioButtonJButtonPointBlockHandleMoveImageHandleImageVerifySuccess圖1-1類之間的組合關(guān)系3.1.1PuzzleGame.java類模塊PuzzleGame類負(fù)責(zé)創(chuàng)建魔板游戲的主窗口,該類含有main方法,程序從該類開始。PuzzleGame類的成員變量中有4種重要類型的對(duì)象:PuzzlePad、JMenu、JRadioButton和JButton。PuzzleGame類的主要成員的作用將在后面的詳細(xì)設(shè)計(jì)中闡述,PuzzleGame類創(chuàng)建的窗口以及其中的主要成員對(duì)象如圖6.3所示。3.1.2PuzzlePad.java類PuzzlePad類創(chuàng)建的對(duì)象是PuzzleGame類最重要的成員之一,代表“魔板”。該類的成員變量中有5種重要類型的對(duì)象:Point、Block、HandleMove、HandleImage和Image。PuzzlePad類的主要成員的作用將在后面的詳細(xì)設(shè)計(jì)中闡述。3.1.3Block.java類模塊Block類是JTextField的一個(gè)子類,創(chuàng)建的對(duì)象是PuzzlePad類的重要成員之一,用來表示“魔板”中的“方塊”。3.1.4Point.java類模塊Point類負(fù)責(zé)創(chuàng)建確定位置的對(duì)象,使用Point對(duì)象可以確定Block對(duì)象在PuzzlePad對(duì)象中的位置,即確定“方塊”在“魔板”中的位置。3.1.5HandleImage.java類HandImage類所創(chuàng)建的對(duì)象負(fù)責(zé)處理鼠標(biāo)事件。3.1.6HandleMove.java類模塊HandMove類所創(chuàng)建的對(duì)象負(fù)責(zé)處理鼠標(biāo)事件。3.1.7VerifySuccess.java類VerifySuccess類所創(chuàng)建的對(duì)象負(fù)責(zé)驗(yàn)證用戶是否按要求成功排列魔板中的方塊。3.2系統(tǒng)流程圖主界面主界面開始選擇級(jí)別選擇圖像數(shù)字玩法圖像玩法初級(jí)高級(jí)使用一幅新圖像使用默認(rèn)圖像圖2-1總體功能圖根據(jù)對(duì)模板游戲的功能分析,設(shè)計(jì)得到魔板游戲總流程,如圖2-2所示:開始開始魔板游戲開始界面Switch開始游戲計(jì)時(shí)器計(jì)時(shí)開始移動(dòng)方塊改變游戲難度完成游戲選初級(jí)初級(jí)高級(jí)重新放置方塊改變游戲玩法選擇數(shù)字玩法數(shù)字玩法圖像玩法選擇一幅新圖像選擇默認(rèn)圖像確定玩法退出結(jié)束是否是否圖2-2總體流程圖4詳細(xì)設(shè)計(jì)本程序?qū)崿F(xiàn)的游戲分為初級(jí)和高級(jí)模式,可以在單機(jī)選擇級(jí)別之后進(jìn)行選擇級(jí)別模式。初級(jí)的話共分為9格魔板一個(gè)為空,8個(gè)魔板上下左右自由移動(dòng),直至排列完成。該游戲初始默認(rèn)為數(shù)字玩法,不過在單擊圖像玩法之后可以進(jìn)行圖像的選擇也可選擇默認(rèn)圖像(dog.jpg)單擊開始,如果圖像不能立刻顯示,那么再單擊一次就會(huì)出現(xiàn)圖像魔板了。如圖3.1所示:圖3-1初級(jí)的圖像玩法圖如果想要選擇了一幅新的圖像,只要單擊選擇圖像中的選擇一幅新圖像就可出現(xiàn)如下界面,如圖3.3:圖3-2圖像選擇界面在選擇了新圖像之后單擊開始按鈕,就會(huì)有一張新的圖片替換了剛剛所使用的默認(rèn)圖像了。此時(shí)如果再選擇高級(jí)的模式圖像就會(huì)被分成16快隨即小魔板,如圖3.4所示:圖3-3高級(jí)的圖像玩法圖由上圖的底部可以看出還有一個(gè)計(jì)時(shí)器功能,當(dāng)你開始移動(dòng)魔板是它就開始計(jì)時(shí)直至完成魔板的正確排列。5測(cè)試5.1測(cè)試方案我以最簡(jiǎn)單的方案初級(jí)的數(shù)字玩法進(jìn)行了測(cè)試如圖4.1:圖4-1測(cè)試方案圖5.2測(cè)試結(jié)果點(diǎn)擊開始后,經(jīng)過了109秒的努力,我終于把魔板游戲給測(cè)試完成了。我親自驗(yàn)證了這神奇的一刻,如圖4.2:圖4-2測(cè)試結(jié)果圖這就是魔板游戲完成后的界面,系統(tǒng)會(huì)提示你成功了!以表示祝賀,并且底部還會(huì)有你完成本次游戲所用的時(shí)間。6小結(jié)這學(xué)期我們專業(yè)課開設(shè)了Java語(yǔ)言,初步了解java語(yǔ)言的特點(diǎn)及相關(guān)知識(shí),雖然之學(xué)了很短一段時(shí)間,但還是在其中學(xué)到很多東西的。這學(xué)期老師通知要做java課程設(shè)計(jì)之后,我就到圖書館查閱資料,借相關(guān)的書籍,在網(wǎng)上查找了一些資料開始了我的課程設(shè)計(jì)之旅。在制作過程中,遇到了自己從所未有的困難,由于java學(xué)的不是那么透徹,因此在分析程序代碼必然會(huì)遇到很大的困擾。其中遇到了一個(gè)問題,就是使用圖像玩法的時(shí)候選擇圖片選不到,一開始不知道是什么問題但是通過翻閱書籍,上網(wǎng)查閱資料,同學(xué)之間的相互討論,原來是格式不對(duì),它只能選擇一些小規(guī)模的圖片如dog.jpg等格式而電腦的圖片都是JPEG格式,了解這點(diǎn)之后這些問題也就迎刃而解了。但重要的這不是最困難的地方,難得地方在運(yùn)行程序上面,當(dāng)把代碼輸入完之后,無法運(yùn)行,經(jīng)受著“百般折磨”后,各種思考,才把這部分解決了,確實(shí)很不容易,還得歸功于同學(xué)的團(tuán)結(jié)。這次的課程設(shè)計(jì)為我提供了一次鍛煉的機(jī)會(huì),經(jīng)過開發(fā)這個(gè)系統(tǒng),這不僅僅是一次課程設(shè)計(jì),不僅僅是學(xué)會(huì)了一門開發(fā)語(yǔ)言,更重要的是在學(xué)習(xí)的過程中,所有的問題要自已去面對(duì),有問題也只有靠自已去解決,在學(xué)習(xí)和解決這些困難的過程中提高了我學(xué)習(xí)的能力、解決問題的能力和實(shí)際工作的能力,學(xué)到了許多書本以外的知識(shí)經(jīng)歷過這次以后,我對(duì)前面學(xué)過的許多課程有了更為深刻的理解,也是我對(duì)這三年所學(xué)的東西的一個(gè)綜合體現(xiàn)。然而這次設(shè)計(jì)讓我感受頗深,讓我真正體會(huì)到了在整個(gè)過程給我?guī)淼臒o奈與快樂??磥韺W(xué)好java這門語(yǔ)言真的要花上很大的努力,而且它的用處太大了?;叵脒@兩周所經(jīng)歷的,自己所收獲到的遠(yuǎn)遠(yuǎn)超越自己受到的痛苦,我體會(huì)了“不經(jīng)歷風(fēng)雨怎么見彩虹”的真正內(nèi)涵,這次課程設(shè)計(jì)讓我學(xué)到了更多東西,我會(huì)更加努力的去學(xué)習(xí)java語(yǔ)言以及其他語(yǔ)言,更加充實(shí)自己的大腦,使自己更加豐富,將來成為一個(gè)有用的人,為社會(huì)作貢獻(xiàn)的人。參考文獻(xiàn)[1]耿祥義,張躍平.
Java2實(shí)用教程(第三版)[M].北京:清華大學(xué)出版社,2006
[2]耿祥義.
Java課程設(shè)計(jì)(第三版)[M].北京:清華大學(xué)出版社,2004[3]張躍平.Java2實(shí)用教程實(shí)驗(yàn)指導(dǎo)與習(xí)題解答(第三版)[M].北京:清華大學(xué)出版社,2004……附錄附錄1源程序清單附錄1.1PuzzleGame模塊源程序importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.io.*;importjavax.swing.filechooser.*;publicclassPuzzleGameextendsJFrameimplementsActionListener{PuzzlePadpuzzlePad;JMenuBarbar;JMenugradeMenu,choiceImage;JMenuyinyue;JMenuItemoneGrade,twoGrade,newImage,defaultImage;JMenuItembofang;JRadioButtondigitPlay,imagePlay;ButtonGroupgroup=null;JButtonstartButton;Imageimage;Toolkittool;publicPuzzleGame(){tool=getToolkit();bar=newJMenuBar();gradeMenu=newJMenu("選擇級(jí)別");yinyue=newJMenu("音樂");choiceImage=newJMenu("選擇圖像");oneGrade=newJMenuItem("初級(jí)");twoGrade=newJMenuItem("高級(jí)");newImage=newJMenuItem("選擇一幅新圖像");defaultImage=newJMenuItem("使用默認(rèn)圖像");bofang=newJMenuItem("播放");yinyue.add(bofang);gradeMenu.add(oneGrade);gradeMenu.add(twoGrade);choiceImage.add(newImage);choiceImage.add(defaultImage);bar.add(gradeMenu);bar.add(yinyue);bar.add(choiceImage);setJMenuBar(bar);bofang.addActionListener(this);oneGrade.addActionListener(this);twoGrade.addActionListener(this);newImage.addActionListener(this);defaultImage.addActionListener(this);startButton=newJButton("開始");startButton.addActionListener(this);group=newButtonGroup();digitPlay=newJRadioButton("數(shù)字玩法",true);imagePlay=newJRadioButton("圖像玩法",false);group.add(digitPlay);group.add(imagePlay);puzzlePad=newPuzzlePad();puzzlePad.setGrade(1);puzzlePad.setIsDigitPlay();add(puzzlePad,BorderLayout.CENTER);JPanelpNorth=newJPanel();pNorth.add(digitPlay);pNorth.add(imagePlay);pNorth.add(startButton);pNorth.add(newJLabel("如果圖像不能立刻顯示,請(qǐng)?jiān)賳螕粢淮伟磁?));add(pNorth,BorderLayout.NORTH);add(puzzlePad.getHandleMove(),BorderLayout.SOUTH);validate();setVisible(true);setBounds(100,50,550,380);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);try{image=tool.createImage(newFile("dog.jpg").toURI().toURL());puzzlePad.setImage(image);}catch(Exceptionexp){}}publicvoidactionPerformed(ActionEvente){if(e.getSource()==startButton){if(digitPlay.isSelected()){puzzlePad.setIsDigitPlay();}elseif(imagePlay.isSelected()){puzzlePad.setImage(image);puzzlePad.setIsImagePlay();}}elseif(e.getSource()==bofang){Sounds=newSound("D:\\wcq\\fu.wav");s.start();}elseif(e.getSource()==oneGrade){puzzlePad.setGrade(1);}elseif(e.getSource()==twoGrade){puzzlePad.setGrade(2);}elseif(e.getSource()==newImage){FileNameExtensionFilterfilter=newFileNameExtensionFilter("JPG&GIFImages","jpg","gif");JFileChooserchooser=newJFileChooser();chooser.setFileFilter(filter);intstate=chooser.showOpenDialog(null);Filefile=chooser.getSelectedFile();if(file!=null&&state==JFileChooser.APPROVE_OPTION){try{image=tool.createImage(file.toURI().toURL());puzzlePad.setImage(image);}catch(Exceptionexp){}}}elseif(e.getSource()==defaultImage){try{image=tool.createImage(newFile("dog.jpg").toURI().toURL());puzzlePad.setImage(image);}catch(Exceptionexp){}}}publicstaticvoidmain(Stringargs[]){newPuzzleGame();}}附錄1.2PuzzlePad模塊源程序importjavax.swing.*;importjava.io.*;importjava.util.*;importjava.awt.*;publicclassPuzzlePadextendsJPanel{Point[][]point;Block[][]block;intdistance=56,grade,m=3,n=3;HandleMovehandleMove;HandleImagehandleImage;VerifySuccessverifySuccess;Imageimage;booleanisDigitPlay;publicPuzzlePad(){setBackground(Color.gray);setLayout(null);handleMove=newHandleMove();handleMove.initSpendTime();handleImage=newHandleImage();verifySuccess=newVerifySuccess();handleMove.setVerifySuccess(verifySuccess);}publicHandleMovegetHandleMove(){returnhandleMove;}publicvoidsetImage(Imageimage){this.image=image;}publicvoidsetGrade(intgrade){this.grade=grade;if(grade==1){m=4;n=4;}elseif(grade==2){m=5;n=5;}}publicintgetGrade(){returngrade;}privatevoidneedInit(){handleMove.initSpendTime();removeAll();point=newPoint[m][n];block=newBlock[m][n];intHspace=distance,Vspace=distance;for(inti=0;i<m;i++){for(intj=0;j<n;j++){point[i][j]=newPoint(Hspace,Vspace);Hspace=Hspace+distance;}Hspace=distance;Vspace=Vspace+distance;}handleMove.setPoint(point);verifySuccess.setPoint(point);handleMove.setVerifySuccess(verifySuccess);intk=0;for(inti=0;i<m;i++){if(i<m-1)for(intj=0;j<n;j++){block[i][j]=newBlock();block[i][j].addMouseListener(handleMove);k++;}elsefor(intj=0;j<n-1;j++){block[i][j]=newBlock();block[i][j].addMouseListener(handleMove);k++;}}for(inti=0;i<m;i++){if(i<m-1)for(intj=0;j<n;j++){add(block[i][j]);block[i][j].setSize(distance,distance);block[i][j].setLocation(point[i][j].getX(),point[i][j].getY());block[i][j].setAtPoint(point[i][j]);point[i][j].setBlock(block[i][j]);point[i][j].setHaveBlock(true);}elsefor(intj=0;j<n-1;j++){add(block[i][j]);block[i][j].setSize(distance,distance);block[i][j].setLocation(point[i][j].getX(),point[i][j].getY());block[i][j].setAtPoint(point[i][j]);point[i][j].setBlock(block[i][j]);point[i][j].setHaveBlock(true);}}}publicvoidsetIsDigitPlay(){needInit();isDigitPlay=true;ArrayList<Integer>numberList=newArrayList<Integer>();for(intk=0;k<m*n-1;k++){numberList.add(k+1);}Object[]object=numberList.toArray();verifySuccess.setObject(object);Collections.shuffle(numberList);intk=0;for(inti=0;i<m;i++){if(i<m-1)for(intj=0;j<n;j++){block[i][j].setObject(numberList.get(k));k++;}elsefor(intj=0;j<n-1;j++){block[i][j].setObject(numberList.get(k));k++;}}repaint();}publicvoidsetIsImagePlay(){needInit();isDigitPlay=false;ArrayList<Image>imageList=newArrayList<Image>();Image[]blockImage=handleImage.getImages(image,m,n);for(intk=0;k<blockImage.length-1;k++){imageList.add(blockImage[k]);}Object[]object=imageList.toArray();verifySuccess.setObject(object);Collections.shuffle(imageList);intk=0;for(inti=0;i<m;i++){if(i<m-1)for(intj=0;j<n;j++){block[i][j].setObject(imageList.get(k));block[i][j].repaint();block[i][j].setBorder(null);k++;}elsefor(intj=0;j<n-1;j++){block[i][j].setObject(imageList.get(k));block[i][j].repaint();block[i][j].setBorder(null);k++;}}repaint();}publicvoidpaintComponent(Graphicsg){super.paintComponent(g);if(isDigitPlay==false)try{g.drawImage(image,20+distance*(m+1),point[0][0].getY(),distance*m,distance*n,this);}catch(Exceptionexp){}}}附錄1.3Block類模塊源程序importjavax.swing.*;importjava.awt.*;publicclassBlockextendsJTextField{Pointpoint;Objectobject;Block(){setEditable(false);setHorizontalAlignment(JTextField.CENTER);setForeground(Color.blue);}publicvoidsetAtPoint(Pointp){point=p;}publicPointgetAtPoint(){returnpoint;}publicvoidsetObject(Objectobject){this.object=object;if(objectinstanceofInteger){Integernumber=(Integer)object;setText(""+Value());}elseif(objectinstanceofImage){repaint();}}publicObjectgetObject(){returnobject;}publicvoidpaintComponent(Graphicsg){super.paintComponent(g);intw=getBounds().width;inth=getBounds().height;try{g.drawImage((Image)object,0,0,w,h,this);}catch(Exceptionexp){}}}附錄1.4Point類模塊源程序publicclassPoint{intx,y;booleanhaveBlock;Blockblock=null;publicPoint(intx,inty){this.x=x;this.y=y;}publicbooleanisHaveBlock(){returnhaveBlock;}publicvoidsetHaveBlock(booleanboo){haveBlock=boo;}publicintgetX(){returnx;}publicintgetY(){returny;}publicbooleanequals(Pointp){if(p.getX()==this.getX()&&p.getY()==this.getY())returntrue;elsereturnfalse;}publicvoidsetBlock(Blockblock){this.block=block;}publicBlockgetBlock(){returnblock;}}附錄1.5HandleImage類模塊源程序importjava.awt.*;importjavax.swing.*;importjava.awt.image.*;publicclassHandleImageextendsJComponent{intimageWidth,imageHeight;Toolkittool;HandleImage(){tool=getToolkit();}publicImage[]getImages(Imageimage,introws,intcolums){Image[]blockImage=newImage[rows*colums];try{imageWidth=image.getWidth(this);imageHeight=image.getHeight(this);intw=imageWidth/colums;inth=imageHeight/rows;intk=0;PixelGrabberpg=null;ImageProducerip=null;for(inti=0;i<rows;i++){for(intj=0;j<colums;j++){intpixels[]=newint[w*h];pg=newPixelGrabber(image,j*w,i*h,w,h,pixels,0,w);pg.grabPixels();ip=newMemoryImageSource(w,h,pixels,0,w);blockImage[k]=tool.createImage(ip);k++;}}}catch(Exceptionee){}returnblockImage;}}附錄1.6HandleMove類模塊源程序importjava.awt.event.*;importjava.awt.*;importjavax.swing.*;publicclassHandleMoveextendsJPanelimplementsMouseListener,ActionListener{Point[][]point;intspendTime=0;javax.swing.TimerrecordTime;JTextFieldshowTime;VerifySuccessverify;HandleMove(){recordTime=newjavax.swing.Timer(1000,this);showTime=newJTextField(16);showTime.setEditable(false);showTime.setHorizontalAlignment(JTextField.CENTER);showTime.setFont(newFont("楷體_GB2312",Font.BOLD,16));JLabelhitMess=newJLabel("用鼠標(biāo)單擊方塊",JLabel.CENTER);hitMess.setFont(newFont("楷體_GB2312",Font.BOLD,18));add(hitMess);add(showTime);setForeground(Color.red);setBackground(Color.yellow);}publicvoidsetPoint(Point[][]p){point=p;}publicvoidinitSpendTime(){recordTime.stop();spendTime=0;showTime.setText(null);}publicvoidsetVerifySuccess(VerifySuccessverify){this.verify=verify;}publicvoidmousePressed(MouseEvente){recordTime.start();Blockblock=null;block=(Block)e.getSource();intw=block.getBounds().width;inth=block.getBounds().height;intstartI=-1,startJ=-1,endI=-1,endJ=-1;PointstartPoint=block.getAtPoint();PointendPoint=null;for(inti=0;i<point[0].length;i++){for(intj=0;j<point[0].length;j++)if(point[i][j].equals(startPoint)){startI=i;startJ=j;break;}}for(inti=0;i<point.length;i++){for(intj=0;j<point[0].length;j++)if(point[i][j].isHaveBlock()==false){endI=i;endJ=j;endPoint=point[i][j];break;}}booleanmoveCondition1=Math.abs(endI-startI)==1&&endJ==startJ;booleanmoveCondition2=Math.abs(endJ-startJ)==1&&endI==startI;if(moveCondition1||moveCondition2){block.setLocation(endPoint.getX(),endPoint.getY());block.setAtPoint(endPoint);endPoint.setBlock(block);endPoint.setHaveBlock(true);startPoint.setHaveBlock(false);}}publicvoidactionPerformed(ActionEvente){spendTime++;showTime.setText("您的用時(shí):"+spendTime+"秒");}publicvoidmouseReleased(MouseEvente){if(verify.isSuccess()){recordTime.stop();JOptionPane.showMessageDialog(this,"您成功了!","消息框",JOptionPane.INFORMATION_MESSAGE);}}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}publicvoidmouseClicked(MouseEvente){}}附錄1.7VertfySuccess類模塊源程序publicclassVerifySuccess{Point[][]point;Object[]object;publicvoidsetPoint(Point[][]point){this.point=point;}publicvoidsetObject(Object[]object){this.object=object;}publicbooleanisSuccess(){booleanboo=true;intk=0;for(inti=0;i<point.length;i++){if(i<point.length-1){for(intj=0;j<point[i].length;j++){if(!(point[i][j].getBlock().getObject()==object[k])){boo=false;break;}k++;}}else{for(intj=0;j<point[i].length-1;j++){
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 用智慧譜寫幼兒園發(fā)展新篇章計(jì)劃
- 重大建設(shè)項(xiàng)目的安全檢查計(jì)劃
- 2025年貓爬架項(xiàng)目發(fā)展計(jì)劃
- 2025年板臥式電除塵器項(xiàng)目合作計(jì)劃書
- 2025年密封用填料及類似品項(xiàng)目建議書
- 實(shí)施均衡發(fā)展的人口政策
- 醫(yī)療健康管理服務(wù)協(xié)議
- 藝術(shù)品交易與展示項(xiàng)目投資合同
- 擔(dān)保期權(quán)合同
- 西游記中的人物形象賞析與解讀
- 人教版(2024新版)七年級(jí)上冊(cè)英語(yǔ)各單元重點(diǎn)語(yǔ)法知識(shí)點(diǎn)講義
- 安全閥校驗(yàn)標(biāo)準(zhǔn)
- 耳穴壓豆課件
- 建筑制圖與識(shí)圖教學(xué)課件:第八章 結(jié)構(gòu)施工圖
- 湘教版三年級(jí)美術(shù)下冊(cè)教案全冊(cè)
- (高清版)DB15∕T 3585-2024 高標(biāo)準(zhǔn)農(nóng)田施工質(zhì)量評(píng)定規(guī)程
- 試油(氣)HSE作業(yè)指導(dǎo)書
- 重癥監(jiān)護(hù)-ICU的設(shè)置、管理與常用監(jiān)測(cè)技術(shù)
- 法律顧問服務(wù)投標(biāo)方案(完整技術(shù)標(biāo))
- 中醫(yī)藥三方合作協(xié)議書范本
- 2024年《動(dòng)漫藝術(shù)概論》自考復(fù)習(xí)題庫(kù)(附答案)
評(píng)論
0/150
提交評(píng)論