设为首页收藏本站

仙剑之十里坡

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 2532|回复: 5
打印 上一主题 下一主题

java_swing贪吃蛇教程[上]

 关闭 [复制链接]

28

主题

11

听众

5325

积分

管理员

昨日黄昏

管理员

  • TA的每日心情

    2010-9-25 00:07
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    精华
    5
    积分
    5325
    历练
    10
    声望
    119
    人气
    141

    润泽万物 匠心独运

    单身中……
    帮我摆脱单身吧
    跳转到指定楼层
    1
    发表于 2011-5-17 00:04:44 |只看该作者 |倒序浏览
    这个帖子我竟然不知道发到哪里~~就扔水区了~呵呵~管他呢~



    关于java Swing的基本开发教程,以贪吃蛇游戏为实例,但本教程并不是0基础教程,需要有一定的java基础才可以明白。

    这一讲 三个类的源代码
    snackMain类
    package game;
    import javax.swing.*;
    public class snackMain extends JFrame{
    public snackMain() {
      snackWin win = new snackWin();
      add(win);
      setTitle("贪吃蛇1.0v---七夕小雨作品");
      setSize(435,390);
      setLocation(200, 200);
      setVisible(true);
    }
    public static void main(String[] args) {
      new snackMain();
    }
    }


    snckaWin类

    package game;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.util.List;
    public class snackWin extends JPanel implements ActionListener,KeyListener{
    JButton newGame,stopGame;
    int fenShu=0,Speed=0;
    boolean start = false;
    Random r = new Random();
    int rx = 0,ry=0;
    List<snackAct> list = new ArrayList<snackAct>();
    public snackWin() {
      newGame = new JButton("开始");
      stopGame =new JButton("退出");
      this.setLayout(new FlowLayout(FlowLayout.LEFT));
      newGame.addActionListener(this);
      stopGame.addActionListener(this);
      this.addKeyListener(this);
      this.add(newGame);
      this.add(stopGame);
    }
    public void paintComponent(Graphics g){
      super.paintComponent(g);
      g.drawRect(10, 40, 400, 300);
      g.drawString("分数:"+fenShu, 150, 20);
      g.drawString("速度:"+Speed, 150, 35);
      g.setColor(new Color(0,255,0));
      if (start) {
       g.fillRect(10+rx*10, 40+ry*10, 10, 10);
       g.setColor(new Color(255,0,0));
       for (int i = 0; i < list.size(); i++) {
        g.fillRect(10+list.get(i).getX()*10, 40+list.get(i).getY()*10, 10, 10);
       }
      }
    }
    public void actionPerformed(ActionEvent e) {
      if (e.getSource()==newGame) {
       newGame.setEnabled(false);
       start = true;
       rx = r.nextInt(40);ry = r.nextInt(30);
       snackAct tempAct = new snackAct();
       tempAct.setX(20);
       tempAct.setY(15);
       list.add(tempAct);
       requestFocus(true);
       repaint();
      }
      if (e.getSource()==stopGame) {
       System.exit(0);
      }
    }
    public void move(int x,int y){
      if (minYes(x, y)) {
       list.get(0).setX(list.get(0).getX()+x);
       list.get(0).setY(list.get(0).getY()+y);
       repaint();
      }else {
       
      }
    }
    public boolean minYes(int x,int y){
      if (!maxYes(list.get(0).getX()+x, list.get(0).getY()+y)) {
       return false;
      }
      return true;
    }
    public boolean maxYes(int x,int y){
      if (x<0||x>=40||y<0||y>=30) {
       return false;
      }
      return true;
    }
    public void keyPressed(KeyEvent e) {
      if (start) {
       switch (e.getKeyCode()) {
       case KeyEvent.VK_UP:
        move(0, -1);
        break;
       case KeyEvent.VK_DOWN:
        move(0, 1);
        break;
       case KeyEvent.VK_LEFT:
        move(-1, 0);
        break;
       case KeyEvent.VK_RIGHT:
        move(1, 0);
        break;
       default:
        break;
       }
      }
    }
    public void keyReleased(KeyEvent arg0) {}
    public void keyTyped(KeyEvent arg0) {}
    }



    snackAct类
    package game;
    public class snackAct {
    private int x;
    private int y;
    public int getX() {
      return x;
    }
    public void setX(int x) {
      this.x = x;
    }
    public int getY() {
      return y;
    }

    public void setY(int y) {
      this.y = y;
    }
    }
    1

    查看全部评分

    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    转播转播0 分享淘帖0 分享分享0 收藏收藏0

    5

    主题

    2

    听众

    1091

    积分

    寻仙问道

    会员等级: 4

  • TA的每日心情
    郁闷
    2013-8-26 18:13
  • 签到天数: 397 天

    [LV.9]以坛为家II

    精华
    0
    积分
    1091
    历练
    0
    声望
    21
    人气
    262
    单身中……
    帮我摆脱单身吧
    2
    发表于 2011-5-17 07:33:00 |只看该作者
    ……
    看到代码就头痛...学c++学得内伤了
    脑细胞快死光了_(:зゝ∠)_
    回复

    使用道具 举报

    157

    主题

    2

    听众

    5946

    积分

    名扬四海

    挺尸中请勿打扰。。。。。

    会员等级: 7

  • TA的每日心情
    无聊
    2011-8-13 00:03
  • 签到天数: 256 天

    [LV.8]以坛为家I

    精华
    1
    积分
    5946
    历练
    4
    声望
    68
    人气
    68

    出神入化

    单身中……
    帮我摆脱单身吧
    3
    发表于 2011-5-17 12:46:42 |只看该作者
    于是小雨- -你最近就在鼓捣这玩意么..
    心情不好,靠近者,死
    回复

    使用道具 举报

    48

    主题

    2

    听众

    2733

    积分

    威镇一方

    会员等级: 6

  • TA的每日心情

    2015-6-15 20:14
  • 签到天数: 105 天

    [LV.6]常住仙友II

    精华
    1
    积分
    2733
    历练
    1
    声望
    6
    人气
    250
    单身中……
    帮我摆脱单身吧
    4
    发表于 2011-5-17 12:51:13 |只看该作者

    null

    完全不明白…茫然中…
    取次花丛懒回顾,只缘修道不缘君。
    回复

    使用道具 举报

    489

    主题

    2

    听众

    5468

    积分

    名扬四海

    会员等级: 7

  • TA的每日心情

    昨天 14:45
  • 签到天数: 1855 天

    [LV.Master]伴坛终老

    精华
    0
    积分
    5468
    历练
    0
    声望
    246
    人气
    69

    黑色羽翼 神仙眷侣 转帖之王

    最爱菱纱
    幸福:65℃
    5
    发表于 2011-5-17 18:22:39 |只看该作者
    不知道神马玩意.........
    回复

    使用道具 举报

    1013

    主题

    5

    听众

    2万

    积分

    返璞归真

    不器用な星の瞬き

    会员等级: 10

  • TA的每日心情
    擦汗
    昨天 20:10
  • 签到天数: 1408 天

    [LV.10]以坛为家III

    精华
    2
    积分
    23743
    历练
    3
    声望
    133
    人气
    2624

    转帖之王 金融巨子 黑色羽翼

    单身中……
    帮我摆脱单身吧
    6
    发表于 2011-5-17 19:32:59 |只看该作者
    满是代码啊
    夜空の星に 捧げた願いの
    欠片積めて 爆誕する奇跡
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    手机版|Archiver|仙剑之十里坡 ( 苏ICP备11022766号 )  

    GMT+8, 2024-11-24 06:34 , Processed in 0.736890 second(s), 61 queries .

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回顶部