javaWord下载.docx
《javaWord下载.docx》由会员分享,可在线阅读,更多相关《javaWord下载.docx(17页珍藏版)》请在冰豆网上搜索。
privateJLabeltextScores;
privateJLabel[][]texts;
privateIconicon2;
privateinttimes=16;
//记录剩余空方块数目
privateintscores=0;
//记录分数
privateintl1,l2,l3,l4,l5;
//用于判断游戏是否失败
Fontfont=newFont("
"
Font.BOLD,14);
//设置字体类型和大小
Fontfont2=newFont("
Font.BOLD,30);
//设置字体类型和大小
Randomrandom=newRandom();
//随机类实例化
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
Copy2048frame=newCopy2048();
frame.setVisible(true);
}
catch(Exceptione1){
e1.printStackTrace();
}
});
}
/**
*构造方法
*/
publicCopy2048(){
super();
setResizable(false);
//禁止调整窗体大小
getContentPane().setLayout(null);
//设置空布局
setBounds(500,50,500,615);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("
2048PC版"
);
//设置窗体标题
scoresPane=newJPanel();
//创建分数显示面板
scoresPane.setBackground(Color.green);
//设置分数显示面板的背景色
scoresPane.setBounds(20,20,460,40);
scoresPane.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.YELLOW));
//设置得分面板的边框
getContentPane().add(scoresPane);
//将得分面板添加到窗体
scoresPane.setLayout(null);
//设置面板空布局
labelMaxScores=newJLabel("
最高分:
//最高分标签
labelMaxScores.setFont(font);
//设置字体类型和大小
labelMaxScores.setBounds(10,5,50,30);
//设置最懂啊分标签的位置尺寸
scoresPane.add(labelMaxScores);
//将最高分标签添加到得分容器中
textMaxScores=newJTextField("
"
//得分标签
textMaxScores.setBounds(60,5,150,30);
textMaxScores.setFont(font);
textMaxScores.setEditable(false);
scoresPane.add(textMaxScores);
//将得分标签添加到分数面板中
labelScores=newJLabel("
得分:
labelScores.setFont(font);
//设置字体类型和大小
labelScores.setBounds(240,5,50,30);
scoresPane.add(labelScores);
textScores=newJLabel(String.valueOf(scores));
textScores.setFont(font);
textScores.setBounds(290,5,150,30);
scoresPane.add(textScores);
mainPane=newJPanel();
//创建游戏主面板
mainPane.setBounds(20,70,460,500);
//设置主面板位置尺寸
this.getContentPane().add(mainPane);
mainPane.setLayout(null);
//设置空布局
texts=newJLabel[4][4];
//创建文本框二维数组
for(inti=0;
i<
4;
i++){//遍历数组
for(intj=0;
j<
j++){
texts[i][j]=newJLabel();
//创建标签
texts[i][j].setFont(font2);
texts[i][j].setHorizontalAlignment(SwingConstants.CENTER);
texts[i][j].setText("
texts[i][j].setBounds(120*j,120*i,100,100);
//设置方块的大小位置
setColor(i,j,"
texts[i][j].setOpaque(true);
texts[i][j].setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.green));
//设置方块边框颜色
mainPane.add(texts[i][j]);
//将创建的文本框放在
}
tips=newJLabel("
Tips:
使用上、下、左、右键或者W、S、A、D键控制"
tips.setFont(font);
tips.setBounds(60,480,400,20);
mainPane.add(tips);
textMaxScores.addKeyListener(newKeyAdapter(){//为最高分标签添加按键监听器
publicvoidkeyPressed(KeyEvente){
do_label_keyPressed(e);
//调用时间处理方法
Create2();
*按键输入事件的处理方法
*@parame
protectedvoiddo_label_keyPressed(finalKeyEvente){
intcode=e.getKeyCode();
//获取按键代码
inta;
//a的引入是为了防止连加的情况出现
Stringstr;
Stringstr1;
intnum;
switch(code){
caseKeyEvent.VK_LEFT:
caseKeyEvent.VK_A:
//如果按键代码是左方向键或者A键
for(inti=0;
i++){
a=5;
for(intk=0;
k<
3;
k++){
for(intj=1;
j++){//遍历16个方块
str=texts[i][j].getText();
//获取当前方块标签文本字符
str1=texts[i][j-1].getText();
//获取当前左1方块标签文本字符
if(pareTo("
)==0){//如果左1方块文本为空字符
texts[i][j-1].setText(str);
//字符左移
setColor(i,j-1,str);
texts[i][j].setText("
//当前方块字符置空
setColor(i,j,"
}elseif((pareTo(str1)==0)&
&
(j!
=a)&
=a-1)){//如果当前方块和左1方块文本字符相等
num=Integer.parseInt(str);
scores+=num;
times++;
str=String.valueOf(2*num);
//左1方块文本字符变为两方块之和
setColor(i,j-1,str);
a=j;
}
}
l1=1;
Create2();
break;
caseKeyEvent.VK_RIGHT:
caseKeyEvent.VK_D:
i++){
for(intj=2;
j>
=0;
j--){
str1=texts[i][j+1].getText();
)==0){
texts[i][j+1].setText(str);
setColor(i,j+1,str);
elseif(pareTo(str1)==0&
j!
=a&
=a+1){
scores+=num;
}
l2=1;
caseKeyEvent.VK_UP:
caseKeyEvent.VK_W:
for(inti=1;
i++){
str1=texts[i-1][j].getText();
texts[i-1][j].setText(str);
setColor(i-1,j,str);
i!
=a&
=a-1){
a=i;
l3=1;
caseKeyEvent.VK_DOWN:
caseKeyEvent.VK_S:
j++){
5;
for(inti=2;
i>
i--){
str1=texts[i+1][j].getText();
texts[i+1][j].setText(str);
setColor(i+1,j,str);
elseif(pareTo(str1)==0&
=a+1){
texts[i+1][j].setText(str);
l4=1;
default:
break;
textScores.setText(String.valueOf(scores));
*在随机位置产生一个2号方块的方法
*@parami,j
publicvoidCreate2(){
inti,j;
booleanr=false;
Stringstr;
if(times>
0){
while(!
r){
i=random.nextInt(4);
j=random.nextInt(4);
str=texts[i][j].getText();
if((pareTo("
)==0)){
texts[i][j].setIcon(icon2);
texts[i][j].setText("
2"
setColor(i,j,"
times--;
r=true;
l1=l2=l3=l4=0;
elseif(l1>
0&
l2>
l3>
0&
l4>
0){//l1到l4同时被键盘赋值为1说明任何方向键都不能产生新的数字2,说明游戏失败
tips.setText("
GAME OVER!
*设置标签颜色
*@parami,j,str
publicvoidsetColor(inti,intj,Stringstr){
if(str=="
)
texts[i][j].setBackground(Color.yellow);
elseif(str=="
4"
texts[i][j].setBackground(Color.red);
8"
texts[i][j].setBackground(Color.pink);
16"
texts[i][j].setBackground(Color.orange);
32"
texts[i][j].setBackground(Color.magenta);
64"
texts[i][j].setBackground(Color.LIGHT_GRAY);
128"
texts[i][j].setBackground(Color.green);
256"
texts[i][j].setBackground(Color.gray);
512"
texts[i][j].setBackground(Color.DARK_GRAY);
1024"
texts[i][j].setBackground(Color.cyan);
2048"
texts[i][j].setBackground(Color.blue);
4096"
texts[i][j].setBackground(Color.white);
}
GUI——加法计算器
(一)
加法计算器:
是通过键盘输入加数和被加数,执行Run按钮,显示和在Thesumis上,如若重新输入数执行的话,点击Restart按钮
(二)程序截图
(三)程序代码
importjava.awt.*;
importjavax.swing.*;
publicclassSum_CalculationextendsJFrameimplementsActionListener
{Containercp;
JTextFieldtext1;
JTextFieldtext2;
JTextFieldanswertext;
JLabellb1;
JLabellb2;
JLabellb3;
JButtonbt1;
JButtonbt2;
Sum_Calculation(){
cp=getContentPane();
text1=newJTextField(10);
text2=newJTextField(10);
answertext=newJTextField(10);
lb1=newJLabel("
Pleaseinputthefirstnumber"
lb2=newJLabel("
Pleaseinputthesecondnumber"
lb3=newJLabel("
Thesumis"
bt1=newJButton("
Run"
bt2=newJButton("
Restart"
cp.setLayout(newGridLayout(4,2));
cp.add(lb1);
cp.add(text1);
cp.add(lb2);
cp.add(text2);
cp.add(lb3);
cp.add(answertext);
cp.add(b