首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

求个JAVA小程序或者小游戏源代码和解析步骤,考试要用 多谢了啊

2013-01-18 
求个JAVA小程序或者小游戏源代码和解析步骤,考试要用 谢谢了啊啊考试需要我们做一个JAVA小程序,要求我们写

求个JAVA小程序或者小游戏源代码和解析步骤,考试要用 谢谢了啊啊
考试需要我们做一个JAVA小程序,要求我们写下源代码并要求我们说出解析步骤,不要太难的那种,越简单越好,众大神求解救啊  多谢了
随便在书上找个带注释的弄懂就行了
[解决办法]
《面向对象程序设计》
 
题    目:       单间的井字棋小游戏        
班    级:        通信104                     
学    号:        2010014271                  
姓    名:        张建腾               
完成时间:        2011.10.27            
1)应用意义
简单的娱乐小游戏 可以两人对战 富有趣味性 
2)功能描述
上方两个按钮 选择阵营 点击方格落下棋子 当一方有三个棋子连成一线则获胜
3)结构分析














public class zjt extends JFrame {
 /*首先设置参数*/
int x = 0, y = 0;
….. 
/*主类zjt(): 实现面板 运行游戏 判断输赢 */
 public zjt() {
  Container c = getContentPane();          
  C.setLayout(new FlowLayout());
  congxin = new JButton("重新开始红队先下");
  c.add(congxin);
  huanse = new JButton("重新开始蓝队先下");
  c.add(huanse);                                    // 添加两个按钮
  jl=newJLabel();                                  // 按钮下的标签
 c.add(jl, BorderLayout.SOUTH);                       //标签的位置
 
  addMouseListener(new MouseAdapter() {              //鼠标监听事件  
   public void mousePressed(MouseEvent event) {
    if (event.isAltDown()) {
     repaint();


    }                                        //按钮点击后开始画图调用repaint();方法 绘制棋子
    x = event.getPoint().x; y = event.getPoint().y; int a = mm(x, y);                               //获取鼠标的X  Y坐标
 if (yin) {jl.setForeground(Color.RED);
     jl.setText("游戏已结束,请重新开始");
    }                                          //赢了以后出现提示
    else {
     if (s[a] == 1) {jl.setForeground(Color.RED);
      jl.setText("   此位置有棋子,请另选位置重新下棋    ");
     }                                                                 // 判断有棋子的地方不能再下 并给出提示

         else {                          
      fa = false; if (a == 1) a1 = 1; …………………………….. 
 }                                /*若无棋子 鼠标点击后设置参数变为1*/

    s[a] = 1;
   }
  });
  congxin.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
    for (int i = 0; i < s.length; i++) {
     s[i] = 0;
     jj[i] = 0;
    }
    ……………………..
 }                                /*点击按钮从新开始 并初始化 s[i] jj[i]  重新置零*/


/*画棋子 paint方法用于绘图 绘制出棋盘*/
public void paint(Graphics g) { 
  if (fa) { 
   super.paint(g);
   int x = 100, y = 100, c = 300, k = 300;
   for (int i = 0; i < 300; i += 100)                  //竖坐标每隔100画一条线
    g.drawRect(x, y + i, c, k - i);
   for (int i = 0; i < 300; i += 100 )                  //很坐标每隔100画一条竖线


    g.drawRect(x + i, y, c - i, k);
  } 
   /*绘制红色的X棋子 并且该处参数变为1  每当其中一方下好一个后轮到对方下*/                                   
  else {
   jl.setForeground(Color.black);
   if (huatu) {
    g.setColor(Color.red);
    if (a1 == 1) {
     g.drawLine(120, 120, 180, 180);
     g.drawLine(180, 120, 120, 180);   
     a1 = 0;
     jj[1] = 1;
    }                                    
    ……………………
}                                 
    huatu = false;                    
    jl.setText("蓝队下棋");                   
   } 
/*绘制蓝方棋子 蓝色的O  绘制完成参数变为1 */
else {
            g.setColor(Color.blue);
            if (a1 == 1) {
     g.drawOval(125, 125, 50, 50);      //棋子O的位置大小
     a1 = 0;
     jj[1] = 2;
    }
   ……………………………………
   
   }                                 
dd();                           
  }
 }
/*判断鼠标点击位置有没有在范围内 在的话参数由0变为1*/
       public int mm(int x, int y) {
         if (x >= 100 && x < 200 && y >= 100 && y < 200)
         a = 1;
        else if (x >= 200 && x < 300 && y >= 100 && y < 200)
         a = 2;
        ……………………..
       else
       a = 0;
       return a;
      }

/*判断输赢、有连着的三个部分为相同则获胜否则都不获胜 并给出提示*/
public void dd() {
if (jj[1] == 1 && jj[2] == 1 && jj[3] == 1) {


       jl.setForeground(Color.RED);
       jl.setText("红方获胜,连接线1,2,3");
       yin = true;
        }
……………………………….  }



[解决办法]


4)实现结果
 
5)源代码
mport java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class zjt extends JFrame {
 int x = 0, y = 0;
int a = 0;
int x1 = 0, y1 = 0, x2 = 0, y2 = 0, x3 = 0, y3 = 0, x4 = 0, y4 = 0;;
boolean fa = true, huatu = true, yin = false;
 int a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0, a7 = 0, a8 = 0, a9 = 0;
 int s[] = new int[10], jj[] = new int[10];
 JButton congxin, huanse;
 JLabel jl;

 public zjt() {
  Container c = getContentPane();
  c.setLayout(new FlowLayout());
  congxin = new JButton("重新开始红队先下");
  c.add(congxin);
  huanse = new JButton("重新开始蓝队先下");
  c.add(huanse);
  jl = new JLabel();
 c.add(jl, BorderLayout.SOUTH);
 
  addMouseListener(new MouseAdapter() {
   public void mousePressed(MouseEvent event) {
    if (event.isAltDown()) {
     repaint();
    }
    x = event.getPoint().x;
    y = event.getPoint().y;
    int a = mm(x, y);
    if (yin) {
     jl.setForeground(Color.RED);
     jl
       .setText("游戏已结束,请重新开始");

    }
    else {
     if (s[a] == 1) {
      jl.setForeground(Color.RED);
      jl.setText("   此位置有棋子,请另选位置重新下棋    ");
     } 
     else {
      fa = false;
      if (a == 1)
       a1 = 1;
      if (a == 2)
       a2 = 1;
      if (a == 3)
       a3 = 1;
      if (a == 4)
       a4 = 1;
      if (a == 5)


       a5 = 1;
      if (a == 6)
       a6 = 1;
      if (a == 7)
       a7 = 1;
      if (a == 8)
       a8 = 1;
      if (a == 9)
       a9 = 1;
      jl.setText("");
      repaint();
     }
    }
    s[a] = 1;
   }
  });
congxin.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
    for (int i = 0; i < s.length; i++) {
     s[i] = 0;
     jj[i] = 0;
    }
    fa = true;
    repaint();
    yin = false;
    huatu = true;
    jl.setForeground(Color.black);
    jl.setText("红队先下");
   }
  });

  huanse.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
    for (int i = 0; i < s.length; i++) {
     s[i] = 0;
     jj[i] = 0;
    }
    fa = true;
    repaint();
    yin = false;
    huatu = false;
    jl.setForeground(Color.black);
    jl
      .setText("蓝队先下");
   }
  });

  setSize(500, 500);
  setVisible(true);
 }
 public void paint(Graphics g) {
  if (fa) {
   super.paint(g);
   int x = 100, y = 100, c = 300, k = 300;
   for (int i = 0; i < 300; i += 100)
    g.drawRect(x, y + i, c, k - i);
   for (int i = 0; i < 300; i += 100)
    g.drawRect(x + i, y, c - i, k);
  }
  else {
   jl.setForeground(Color.black);
   if (huatu) {
    g.setColor(Color.red);
    if (a1 == 1) {
     g.drawLine(120, 120, 180, 180);
     g.drawLine(180, 120, 120, 180);
     a1 = 0;
     jj[1] = 1;
    }
    if (a2 == 1) {
     g.drawLine(220, 120, 280, 180);
     g.drawLine(280, 120, 220, 180);
     a2 = 0;


     jj[2] = 1;
    }

    if (a3 == 1) {
     g.drawLine(320, 120, 380, 180);
     g.drawLine(380, 120, 320, 180);
     a3 = 0;
     jj[3] = 1;
    }
    if (a4 == 1) {
     g.drawLine(120, 220, 180, 280);
     g.drawLine(180, 220, 120, 280);
     a4 = 0;
     jj[4] = 1;
    }
    if (a5 == 1) {
     g.drawLine(220, 220, 280, 280);
     g.drawLine(280, 220, 220, 280);
     a5 = 0;
     jj[5] = 1;
    }
    if (a6 == 1) {
     g.drawLine(320, 220, 380, 280);
     g.drawLine(380, 220, 320, 280);
     a6 = 0;
     jj[6] = 1;
    }
    if (a7 == 1) {
     g.drawLine(120, 320, 180, 380);
     g.drawLine(180, 320, 120, 380);
     a7 = 0;
     jj[7] = 1;
    }
    if (a8 == 1) {
     g.drawLine(220, 320, 280, 380);
     g.drawLine(280, 320, 220, 380);
     a8 = 0;
     jj[8] = 1;
    }
    if (a9 == 1) {
     g.drawLine(320, 320, 380, 380);
     g.drawLine(380, 320, 320, 380);
     a9 = 0;
     jj[9] = 1;
    }
    huatu = false;
    jl.setText("蓝队下棋");
   } else {
    g.setColor(Color.blue);
    if (a1 == 1) {
     g.drawOval(125, 125, 50, 50);
     a1 = 0;
     jj[1] = 2;
    }
    if (a2 == 1) {
     g.drawOval(225, 125, 50, 50);
     a2 = 0;
     jj[2] = 2;
    }
    if (a3 == 1) {
     g.drawOval(325, 125, 50, 50);
     a3 = 0;
     jj[3] = 2;
    }
    if (a4 == 1) {
     g.drawOval(125, 225, 50, 50);
     a4 = 0;
     jj[4] = 2;
    }
    if (a5 == 1) {


     g.drawOval(225, 225, 50, 50);
     a5 = 0;
     jj[5] = 2;
    }
    if (a6 == 1) {
     g.drawOval(325, 225, 50, 50);
     a6 = 0;
     jj[6] = 2;
    }
    if (a7 == 1) {
     g.drawOval(125, 325, 50, 50);
     a7 = 0;
     jj[7] = 2;
    }
    if (a8 == 1) {
     g.drawOval(225, 325, 50, 50);
     a8 = 0;
     jj[8] = 2;
    }
    if (a9 == 1) {
     g.drawOval(325, 325, 50, 50);
     a9 = 0;
     jj[9] = 2;
    }
    huatu = true;
    jl.setText("红队下棋");
   }
   dd();
  }
 }
 public int mm(int x, int y) {
  if (x >= 100 && x < 200 && y >= 100 && y < 200)
   a = 1;
  else if (x >= 200 && x < 300 && y >= 100 && y < 200)
   a = 2;
  else if (x >= 300 && x < 400 && y >= 100 && y < 200)
   a = 3;
  else if (x >= 100 && x < 200 && y >= 200 && y < 300)
   a = 4;
  else if (x >= 200 && x < 300 && y >= 200 && y < 300)
   a = 5;
  else if (x >= 300 && x < 400 && y >= 200 && y < 300)
   a = 6;
  else if (x >= 100 && x < 200 && y >= 300 && y < 400)
   a = 7;
  else if (x >= 200 && x < 300 && y >= 300 && y < 400)
   a = 8;
  else if (x >= 300 && x < 400 && y >= 300 && y < 400)
   a = 9;
  else
   a = 0;
  return a;
 }
 public void dd() {

  if (jj[1] == 1 && jj[2] == 1 && jj[3] == 1) {
   jl.setForeground(Color.RED);
   jl.setText("红方获胜,连接线1,2,3");


   yin = true;
  }
  if (jj[4] == 1 && jj[5] == 1 && jj[6] == 1) {
   jl.setForeground(Color.RED);
   jl
     .setText("红方获胜,连接线4,5,6");
   yin = true;
  }
  if (jj[7] == 1 && jj[8] == 1 && jj[9] == 1) {
   jl.setForeground(Color.RED);
   jl.setText("红方获胜,连接线7,8,9");
   yin = true;
  }
  if (jj[1] == 1 && jj[5] == 1 && jj[9] == 1) {
   jl.setForeground(Color.RED);
   jl.setText("红方获获胜,连接线1,5,9");
   yin = true;
  }
  if (jj[3] == 1 && jj[5] == 1 && jj[7] == 1) {
   jl.setForeground(Color.RED);
   jl.setText("红方获胜,连接线3,5,7");
   yin = true;
  }
  if (jj[1] == 1 && jj[4] == 1 && jj[7] == 1) {
   jl.setForeground(Color.RED);
   jl.setText("红方获胜,连接线1,4,7");
   yin = true;
  }
  if (jj[2] == 1 && jj[5] == 1 && jj[8] == 1) {
   jl.setForeground(Color.RED);
   jl.setText("红方获胜,连接线2,5,8");
   yin = true;
  }
  if (jj[3] == 1 && jj[6] == 1 && jj[9] == 1) {
   jl.setForeground(Color.RED);
   jl.setText("红方获胜,连接线3,6,9");
   yin = true;
  }

  if (jj[1] == 2 && jj[2] == 2 && jj[3] == 2) {
   jl.setForeground(Color.RED);
   jl.setText("蓝方获胜,连接线1,2,3");
   yin = true;
  }
  if (jj[4] == 2 && jj[5] == 2 && jj[6] == 2) {
   jl.setForeground(Color.RED);
   jl.setText("蓝方获胜,连接线4,5,6");
   yin = true;
  }
  if (jj[7] == 2 && jj[8] == 2 && jj[9] == 2) {
   jl.setForeground(Color.RED);
   jl.setText("蓝方获胜,连接线7,8,9");
   yin = true;
  }
  if (jj[1] == 2 && jj[5] == 2 && jj[9] == 2) {
   jl.setForeground(Color.RED);
   jl.setText(" 蓝方获胜,连接线1,5,9 ");
   yin = true;
  }
  if (jj[3] == 2 && jj[5] == 2 && jj[7] == 2) {
   jl.setForeground(Color.RED);
   jl.setText("蓝方获胜,连接线3,5,7 ");
   yin = true;
  }
  if (jj[1] == 2 && jj[4] == 2 && jj[7] == 2) {
   jl.setForeground(Color.RED);
   jl.setText("蓝方获胜,连接线1,4,7 ");


   yin = true;
  }
  if (jj[2] == 2 && jj[5] == 2 && jj[8] == 2) {
   jl.setForeground(Color.RED);
   jl.setText("蓝方获胜,连接线2,5,8");
   yin = true;
  }
  if (jj[3] == 2 && jj[6] == 2 && jj[9] == 2) {
   jl.setForeground(Color.RED);
   jl.setText("蓝方获胜,连接线3,6,9");
   yin = true;
  }
  if (s[1] == 1 && s[2] == 1 && s[3] == 1 && s[4] == 1 && s[5] == 1
    && s[6] == 1 && s[7] == 1 && s[8] == 1 && s[9] == 1) {
   jl.setForeground(Color.RED);
   jl.setText("双方都没获胜,游戏结束");
   yin = true;
  }
  System.out.println(jj[2]);
 }
public static void main(String[] args) {
  zjt s = new zjt();
  s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
}
6)设计总结
   通过自己设计小程序 更加深刻的理解了书本上的知识 
   自己设计自己调试 找到错误试着解决 或者请教别人 都对知识的巩固和运用有很大帮助
   并且通过网络 自学了一些书上没有的知识 比如java中的paint方法 用来绘制图形 以此类推 五子棋围棋的棋盘都可以绘制了
    

热点排行