| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 568 人关注过本帖
标题:这个到底是哪出了问题
只看楼主 加入收藏
qq727755316
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-8-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
这个到底是哪出了问题
import java.awt.*;
import java.util.*;
import java.awt.event.ActionEvent.*;
import static java.util.EventObject.*;
import javax.swing.Timer;
import java.awt.event.KeyAdapter.*;
import static java.awt.AWTEvent.*;
public class PinBall
{
//桌面的宽度
private final int TABLE_WIDTH=300;
//桌面的高度
private final int TABLE_HEIGHT=400;
//球拍的垂直位置
private final int RACKET_Y=340;
//下面定义球拍的高度和宽度
private final int RACKET_HEIGHT=20;
private final int RACKET_WIDTH=60;
//小球的大小
private final int BALL_SIZE=16;
private Frame f =new Frame("弹球游戏");
Random rand=new Random();
//小球纵向的运行速度
private int ySpeed=10;
//返回一个-0.5-0.5的比率,用于控制小球的运行方向
private double xyRate=rand.nextDouble() - 0.5;
//小球横向的运行速度
private int xSpeed=(int)(ySpeed * xyRate * 2);
//ballx和bally代表小球的坐标
private int ballx=rand.nextInt(200)+20;
private int bally=rand.nextInt(10)+20;
    //racketX代表球拍的水平位置
private int racketX=rand.nextInt(200);
    private MyCanvas tableArea=new MyCanvas();
//用于保存需要绘制什么图形的字符串属性
private String shape="";
Timer timer;
//游戏是否结束的旗标
private boolean isLose=false;//963446064
public void init()
    {
    tableArea.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));
    f.add(tableArea);
    //定义键盘监听器
    KeyAdapter keyProcessor=new KeyAdapter()
        {
        public void keyPressed(KeyEvent ke)
            {
            //按下向左、向右键时,球拍水平坐标分别减少、增加
            if (ke.getKeyCode()==KeyEvent.VK_LEFT)
            {
            if(racketX>0)
                racketX-=10;
            }
            if(ke.getkeycode()==KeyEvent.VK_RIGHT)
                {
                if(racketX<TABLE_WIDTH-RACKEY_WIDTH)
                    racketX+=10;
                }
            }
        };

        //为窗口和tableArea对象分别添加键盘监听器
        f.addKeyListener(keyProcessor);
        tableArea.addkeyListener(keyProcessor);
        //定义每0.1秒执行一次的时间监听器。
        ActionListener taskPerformer=new ActionListener()
        {
            public void actionPerformed(ActionEvent evt)
            {
                //如果小球碰到左边边框
                if(ballx<0||ballx>=TABLE_WIDTH-BALL_SIZE)
                {
                    xSpeed=-xSpeed;
                }
                //如果小球高度超出了球拍位置,且横向不在球拍范围内,游戏结束。
                if(ballx>=RACKET_Y-BALL_SIZE&&
                    (ballX<racketX||ballX>racketX+RACKET_WIDTH))
                {
                    timer.stop();
                    //设置游戏是否结束的旗标为true.
                    isLose=true;
                    tableArea.repaint();
                }
                //如果小球位于球拍之内,且到达球拍位置,小球反弹
                else if (bally<=0||
                    (bally>=RACKET_Y-BALL_Size
                    &&ballX>racketX&&ballX<=racketX+RACKET_WIDTH))
                {
                    ySpeed=-ySpeed;
                }
                //小球坐标增加
                bally+=ySpeed;
                ballX+=xSpeed;
                tableArea.repaint();
            }
        };
        timer=new Timer(100,taskPerformer);
        timer.start();
        f.setVisible(true);

    }
    public static void main(String[]args)
    {
        new PinBall().init();
    }
    class MyCanvas extends Canvas
    {
        //重写Canvas的paint方法,实现绘画
        public void paint(Graphics g)
        {
            //如果游戏已经结束
            if(isLose)
            {
                g.setColor(new Color(255,0,0));
                g.setFont(new Font("Times",Font.BOLD,30));
                g.drawString("游戏已结束!",50,200);
                    }
                //如果游戏还未结束
                else
            {
                    //设置颜色,并绘制小球
                    g.setColor(new Color(240,240,80));
                    g.fillOval(ballx,bally,BALL_SIZE,BALL_SIZE);
                    //设置颜色,并绘制球拍
                    g.setColor(new Color(80,80,200));
                    g.fillRect(racketX,RACKET_Y,RACKET_WIDTH,RACKET_HEIGHT);
            }
        }
    }
}
            
            
            
            
   
   
               
搜索更多相关主题的帖子: private 
2011-08-28 18:38
付政委
该用户已被删除
收藏
得分:7 
提示: 作者被禁止或删除 内容自动屏蔽
2011-08-28 19:36
qq727755316
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-8-28
收藏
得分:0 
回复 2楼 付政委
。。。没啊
。。。。。才怪


[ 本帖最后由 qq727755316 于 2011-8-28 21:10 编辑 ]
2011-08-28 21:05
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:7 
具体内容我没有看,只是根据IDE提示把错误改了一下,可以运行了。不知道是不是你想的结果。
程序代码:
import java.awt.*;
import java.util.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.Timer;
public class PinBall
{
//桌面的宽度
private final int TABLE_WIDTH=300;
//桌面的高度
private final int TABLE_HEIGHT=400;
//球拍的垂直位置
private final int RACKET_Y=340;
//下面定义球拍的高度和宽度
private final int RACKET_HEIGHT=20;
private final int RACKET_WIDTH=60;
//小球的大小
private final int BALL_SIZE=16;
private Frame f =new Frame("弹球游戏");
Random rand=new Random();
//小球纵向的运行速度
private int ySpeed=10;
//返回一个-0.5-0.5的比率,用于控制小球的运行方向
private double xyRate=rand.nextDouble() - 0.5;
//小球横向的运行速度
private int xSpeed=(int)(ySpeed * xyRate * 2);
//ballx和bally代表小球的坐标
private int ballx=rand.nextInt(200)+20;
private int bally=rand.nextInt(10)+20;
    //racketX代表球拍的水平位置
private int racketX=rand.nextInt(200);
    private MyCanvas tableArea=new MyCanvas();
//用于保存需要绘制什么图形的字符串属性
private String shape="";
Timer timer;
//游戏是否结束的旗标
private boolean isLose=false;//963446064
public void init()
    {
    tableArea.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));
    f.add(tableArea);
    //定义键盘监听器
    KeyAdapter keyProcessor=new KeyAdapter()
        {
        public void keyPressed(KeyEvent ke)
            {
            //按下向左、向右键时,球拍水平坐标分别减少、增加
            if (ke.getKeyCode()==KeyEvent.VK_LEFT)
            {
            if(racketX>0)
                racketX-=10;
            }
            if(ke.getKeyCode()==KeyEvent.VK_RIGHT)
                {
                if(racketX<TABLE_WIDTH-RACKET_WIDTH)
                    racketX+=10;
                }
            }
        };

        //为窗口和tableArea对象分别添加键盘监听器
        f.addKeyListener(keyProcessor);
        tableArea.addKeyListener(keyProcessor);
        //定义每0.1秒执行一次的时间监听器。
        ActionListener taskPerformer=new ActionListener()
        {
            public void actionPerformed(ActionEvent evt)
            {
                //如果小球碰到左边边框
                if(ballx<0||ballx>=TABLE_WIDTH-BALL_SIZE)
                {
                    xSpeed=-xSpeed;
                }
                //如果小球高度超出了球拍位置,且横向不在球拍范围内,游戏结束。
                if(ballx>=RACKET_Y-BALL_SIZE&&
                    (ballx<racketX||ballx>racketX+RACKET_WIDTH))
                {
                    timer.stop();
                    //设置游戏是否结束的旗标为true.
                    isLose=true;
                    tableArea.repaint();
                }
                //如果小球位于球拍之内,且到达球拍位置,小球反弹
                else if (bally<=0||
                    (bally>=RACKET_Y-BALL_SIZE
                    &&ballx>racketX&&ballx<=racketX+RACKET_WIDTH))
                {
                    ySpeed=-ySpeed;
                }
                //小球坐标增加
                bally+=ySpeed;
                ballx+=xSpeed;
                tableArea.repaint();
            }
        };
        timer=new Timer(100,taskPerformer);
        timer.start();
        f.setVisible(true);

    }
    public static void main(String[]args)
    {
        new PinBall().init();
    }
    class MyCanvas extends Canvas
    {
        //重写Canvas的paint方法,实现绘画
        public void paint(Graphics g)
        {
            //如果游戏已经结束
            if(isLose)
            {
                g.setColor(new Color(255,0,0));
                g.setFont(new Font("Times",Font.BOLD,30));
                g.drawString("游戏已结束!",50,200);
                    }
                //如果游戏还未结束
                else
            {
                    //设置颜色,并绘制小球
                    g.setColor(new Color(240,240,80));
                    g.fillOval(ballx,bally,BALL_SIZE,BALL_SIZE);
                    //设置颜色,并绘制球拍
                    g.setColor(new Color(80,80,200));
                    g.fillRect(racketX,RACKET_Y,RACKET_WIDTH,RACKET_HEIGHT);
            }
        }
    }
}
2011-08-29 01:28
w123012306
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:蜘蛛侠
威 望:4
帖 子:307
专家分:1180
注 册:2010-4-22
收藏
得分:7 


楼上,楼下的一定要幸福开心哦!
2011-08-29 07:40
qq727755316
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-8-28
收藏
得分:0 
回复 4楼 czsbc
谢谢啊!
2011-08-30 09:57
快速回复:这个到底是哪出了问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022181 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved