1、小游戏设计样本2048小游戏(一) 程序简介2048是一款益智小游戏,玩家需要在l6个格子中通过数字叠加办法将最初数字2凑成数字2048。有16个格子,初始时会有两个格子上安放了两个数字2,每次可以选取上下左右其中一种方向去滑动,每滑动一次,所有数宇方块都会往滑动方向靠拢外,系统也会在空自地方随后浮现一种数字方块,相似数字方块在靠拢、相撞时会相加。 2o48是比较流行一款数字游成a本课程设计通过设计与开发 JvM平台上2048游戏,进一步掌握所学Java课程知识,体验 Java跨平台性,同步将 Java设计方面知识拓展应用(二) 功能需求描述l、图形顾客界面:2048最大特点就是玩家对图形界面
2、里数字进行操作,也就是是玩家与游戏互动2、当前分数 scoRE 与最高分数显示:在咱们设计2048游戏中当前分数取了页面i内所有数字相加值为分数,对玩家玩游戏进展有直接性、客观性呈现,同步,最高分数取了以往玩家退出游戏时所保存分数最高分3、数字颜色游戏中数宇颜色以2为首項等比数列变化,即2、4、8、l6、32、“、128、256、5l2、l024、2048_.相应数字卡片变色4、游戏退出:游戏退出时,咱们采用弹出对话框确认玩家与否真要退出游戏,固然这样做更符合游戏人性化设计观念 。(三)玩法技巧:1、最大数尽量放在角落 2、数字按顺序紧邻排列3、一方面満足最大数和次大数在那一列/行是满 4、时
3、刻注意活动较大数旁边要有相近数 5、以大数所在一行为重要移动方向6、不要急于“清理桌面”(四)程序阐明一种类 Copy2048继承JFrame,类中涉及,一种构造办法 Copy2048,构造办法中设定游戏界面大小,背景颜色,边框,字体,标签,布局,位置,记录剩余空方块数目,记录分数,用于判断游成与否失败,用于判断游戏与否失败,设立字体类型和大小,为最高分标签添加接键监听器,一种 KeyEvent按键事件,构造办法中创立游戏主面板,设立主面板位置尺寸,设立空布局,创立文本框二维数组,创立标签,调用时间解决办法,一种Create2办法,是在随机位置产生一种2号方块办法,ll到l4同步被键盘赋値为1
4、阐明任何方向键都不能产生新数字2,那就阐明游戏失败GAME OVER!一种setColor办法,是为了产生2l:)48小游戏方块颜色。(五) 程序构造l.重新开始,若是初次运营游戏,则从文献中读入最高分void restart02.控制办法ptlblic void keyPtessed(KeyEvent e)3.结图办法public void paint(iraphics g)4.判断与否己经失败,若失败则返回true,否则返回falsepablic boolean judgeFai105.向下滑动,若各列均投有方块相相或移动,则返回false,否则返回true;public void mov
5、eDown06.向左滑动,若各行均投有方块相相或移动,则返回false,否则返回true;ptlblic void moveLeft07.向右滑动,若各行均投有方块相相或移动,则返回false,否则返回true,public void moveRight08.向上滑动,若各行均投有方块相消或移动,则返回false,否则返回true;Public void moveUp09.在游戏区空用处随机生成2public void generateRandom2 0(六)JAVA制作2048小游戏详细代码import java.awt.Color;import java.awt.EventOueue;im
6、port java.awt.BorderLayout;impol1 java.awt.FlowLayout;import java.awt.Font;import java.awt.event.;import java.util. Random;import javax.swing_BorderFactory;import javax.swing_lcon;import javax.swing. lmagelcon;import javax.swing_JFrame;import javax.swing.JLabel;import javax.swing_JPanel;import javax
7、.swing.SwingConstants;import java)(.swing_border.*;import java)(.swing.JTextField;public class Copy2048 extends JFrameprivate JPanel scoresPane;private JPanel mainPane;private JLabel labelMaxScores;private JLabel labelScores;private JLabel tips;private JTextField textMa)(Scores;private JLabel textSc
8、ores;private JLabel texts;privatelcorl icon2;private int times= 16;private int scores= 0;private int11 ,l2,l3,l4,l5;/提示操作t示签/-记录剩余空方块数目/-记最分数/用 -判断游戏与否失败Font font= new Font(”H,Font.BOLD,14);Font font2 = new Font(-,Font.BOLD,30);Random random= new Random0;/般置字体类型和大小/设立字体类型和大小/随机类实例化public static void
9、 main(StringI args)EventOueue.invokeLater(new Runnable0public void run0tryCopy2048 ffame= new Copy20480;frame.setVisible(true);catch(Exception e1)e1 .prlntStact(Trace0;);public Copy20480super0;setFiesizable(false); getContentPane0.setLayout(null);setBounds(500,50,500,615);setDefaultCoseOperation(J F
10、rame. EX0N_CLOSE) ;setTltle(2048PC版) scoresPane= new JPanel0; scoresPane.setBackground(Color.green); scoresPane.setBounds(20,20,460,40);scoresPane.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.YELLOW);getContentPane0.add(scoresPane);scoresPane.setLayout(null);labelMaxScores= new JLabel(最高分
11、:);labelMaxScores.setFont(font) ;labelMaxScores.setBounds(10,5,50,30);scoresPane.add(labelMaxScores);textMaxScores= new JTextField( );textMaxScores.setBounds(60,5,150,30);textMaxScores.setFont(font);textMaxScores.setEditable(false);scores Pane.add(textMaxScores) ;数面ili ,1 labelScores= new JLabel(”得
12、分:);labelScores.setFont(font) ;labelScores.setBounds(240,5,50,30);scoresPane.add(labelScores);textSoores= new JLabe1(String.valueOf(scores);textSoores.setFont(font);textSoores.setBounds(290,5,150,30);scores Pane.add(textScores) ;mainPane= new JPanel0; mainPane.setBounds(20,70,460,500); this.getConte
13、ntPane0.add(mainPane);mainPane.setLayout(null); /设立空布用texts= new JLabel44;for(int i= 0;i4;i+)for(int j= 0;j4;j+)textsilm= new JLabel0;textsilm.setFont(font2);/创立文本框二维数组/遍历数组/创立 t示签textsilm. setHorizontalAlign me nt(SwingConstants.CENTE R) ;textsilm. setText(-) ;textsilm.setBounds(120* j,120*i,100,10
14、0); /设立方块大小位置setColor(l,j,”);te),(tsilm. setOpaque(true) ;textsilm.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.green);/设立方決边框颜色main Pane.add(textsilm) ;文本框放在tips=newJLabel(Tips:使用上、下、左、右键或者W、S、A、D键控制H);tips.setFont(font);tips.setBounds(60,480,400,20)main Pane.add(tips) ;textMaxScores.add
15、 KeyListe:ner( new KeyAdapte r0高分标签添加接键监所器publicvoid keyPressed( KeyEvente)(do_label_keyPressed(e) ;);/调用时同解决办法Create20;Create20;/t* 接键输入事件解决办法param e*/protected void do_label_keyPressed(fina KeyEvent e)int code= e.getKeyCode0;/获取接键代码inta;String str;Strirlg str1 ;int num;switch(oode)(case KeyEvent.V
16、K_LEFT:case KeyEvent.VK_A:或者A键for(int i= 0;i:4;i+)a=5;/a 引入是为了防止上连加情況浮现/如果按键代码是左方向键for(int k= 0;k 3;k+)for(int j= 1 ;j4;j+)str= textsilm.getTe)(t0;/遍历1 6个方块/获取当前方块标签文本字符str1 =textsij-1.getText0; /获取当前左1方块r(l00.;Ca -一 s al0本示:整文本字特if(pareTo() = 0)/如果左1方块文本为空字符textsi-1 .setText(str) ;setColor(i,j-1 ,s
17、tr);textsilm.setText() ;/字符左移/当前方.映字符a-1 )setColor(i,j,川);else if(pareTo(str1) = 0) & 0l=a) & (j!=/如果当前方映 和左1方块文本字fii:相等num =lnteger.parselnt(str);scores+= num;timeS十十;str= String.valueOf(2 num);textsi-1.setText(str); setColor(i,j-1 ,str);textsilm.setTe)(t(”) ;/当前方央字符l1=1;Create20;break;/用-一判断游戏与否失败
18、case KeyEvent.VK_RIGHT:case KeyEvent.VK_D:for(int i= 0;i4;i+)a=5;for(int k ,0;k= 0;j-)str= textsilm.getTe)(t0;str1 = textsij +1.getText0;if(pareTo()= 0)textsij+ 1.setText(str);setC0lor(i,j十1,str);textsin.setText() ;setColor(i,j,川);elself(pareTo(str1)= 0& j!=a& j!= a+1)num =lnteger.parselnt(str);scor
19、es+= num;timeS+;str= String.valueOf(2 num);textsil +1.setText(str);setC0lor(i,j十1 ,str);textsill.setTe)(t() ;setColor(i,j,);a=j;l2=1;Create20;break;case KeyEvent.VK_llP:case KeyEvent.VK_W:for(int j= 0;j4;j十十)a=5;for(int k= 0;k 3;k+)for(int i= 1;i4;i+)str = textsilm.getText0;str1 = textsi- 1m.getTe)(
20、t0;if(pareTo() = 0)textsi- 1m.setText(str);setColor(i-1,j,str);textsijl.setTe)(t() ;setColor(i,j,);else if(pareTo(str1) = 0& i!= a& i!= a-1)num =lnteger.parselnt(str);scores+= num;times十十;str= String.valueO,f(2 num);textsi- 1m.setText(str);setColor(i-1,j,str);textsijl.setTe)(t() ;setColor(i,j,-);a=i
21、;l3 =1;Create20;break;case KeyEvent.VK_DOWN:case KeyEvent.VK_S:for(int j= 0;j:4;j十十)(a= 5;for(int k= 0;k= 0;i-)str= textsilm.getTe)(t0;str1 =textsi+1m.getText0;if(pareTo() = 0)te)(tsi+1m.setText(str);setC0lor(i+1,j,str);te)(tsin.setText(-) ;setColor(i,j,);else if(pareTo(str1)= 0& i!= a& il= a+1)num
22、,lnteger.parselnt(str);scores+= num;timeS+;str= String.valueOf(2 num);textsi+1m.setText(str);setC0lor(i+1,j,str);textsin.setText(”) ;setColor(i,j,);a=i;l4=1;Create20;break;default:break;textScores.setTe)(t(Stri ng.valueOf (soores) ;在随机位皆产生一种2 ,1,方ji 办法(fppa1-al1 i,j/public void Create20int i,j;boole
23、an r= false;String str;if(times: 0)while(!r)i= random.ne)(tlnt(4);j= random.ne)(tlnt(4);str= textsilm.getText0;if(pareTo(”) = 0)textsilm.setlcon(icon2) ;textsilm.setText(2”) ;setColor(i,j,2);times-;r= true;l1=i2=13=l4=0;else if(l1 0& l2 0& l3 0& l4 0) /l1到l4同步被键盘賦值为1阐明任何方向键都不能产生新数字2,阐明游戏失败tips.setTe
24、xt( GAME OVER!);/tt*设立标签颜色param i,j,str */public void setCo1or(int i,int j,String str)if(str=2)te)(tsilm.setBackground(Color.yellow) ;else if(str=4)textsilm.setBackground(Color.red);else if(str=”8)textsilm.setBackground(Color.plnk);else if(str=16”)textsilm.setBackground(Color.orange);else if(str=32)
25、textsilm. setBackg round(Color. magenta) ;else if(str=64)textsilm.setBackground(Color.LIGHT_GRAY);else if(str=128”)textsilm. setBackg round(Color.green) ;else if(str=256”)textsi m. setBackg rou nd(Color.gray) ;else if(str=512”)textsilm. setBackg round(Color. DARK_GRAY) ;else if(str=1024)textsi m. se
26、tBackg rou nd(Color.cyan) ;else if(str=2048)textsilm.setEiackground(Color.blue);else if(str=4096)textsi m. setEiackg rou nd(Color.white) ;(七)游戏测试截图(八)游戏测试1测试意义游戏测试是为了发现错误而执行程序过程,成功测试是发现了至今尚未发现错误测试。测试目就是但愿能以至少人力和时间发现潜在各种错误和缺陷。游戏测试是保证系统质量和可靠性核心环节,是对游戏开发过程中系统分析游戏设计和实行最后复查。2测试过程(1)拟定测试筹划。依照游戏总体状况,仔细分析游戏
27、各个环节运营也许浮现状况,对各种状况进行汇总,然后拟定出一份详细测试环节。(2)初步测试。依照拟定好筹划进行游戏调试,浮现意外状况时及时记录。测试完后对所记录意外状况进行分析,然后提出改进方案,再进行修改。(3)深度测试。对游戏进行最后修改确认没有漏洞后再进行测试,从各个方面进行一次整体排查,懂得不再浮现意料之外状况。(4)测试人员。测试初级阶段重要由游戏重要编程员进行测试,以便可以全面进行一次错误排查。然后由不同玩家进行测试,集众人之益,可以从不同角度发现问题,以便更好地改进。3测试内容(1)初始界面打开游戏后,会弹出初始界面,显示按回车键退出此界面(2)协助界面按回车后,进入正式游戏界面,可以使用F1键打开协助,这时会弹出小对话框,提示各按键相应功能。再次按回车键可以退出。(3)正式游戏界面每次可以选取上下左右其中一种方向去滑动,每滑动一次,所有数字方块都会往滑动方向靠拢外,系统也会在空白地方乱数浮现一种数字方块,相似数字方块在靠拢、相撞时会相加。不断叠加最后拼凑出2048这个数字就算成功。但此时游戏不会停止,会继续直到无路可走,当游戏结束时,会自动截图,并将成绩保存在文献夹内。4测试成果程序运营正常,没有发现什么错误。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1