package cn.sxt.game; import java.awt.Graphics; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; public class MyGameFrame extends JFrame{ @Override public void paint(Graphics g) {//自动被调用 ,g相当一个画笔 g.drawLine(50, 50, 100, 100); } //初始化窗口 public void launchFrame(){ this.setTitle("尚学堂学员"); this.setVisible(true); this.setSize(500, 500); this.setLocation(50, 50); this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void main(String[] args) { MyGameFrame myGameFrame = new MyGameFrame(); myGameFrame.launchFrame(); } }
g.drawLine(50, 50, 100, 100)时,运行程序,出现窗口是黑色的怎么回事?
45是一个整型,默认为int型,所以short a=45;的含义是不是将45强制转化为short型了?
老师,for和while循环这样写不行吗:
我的运行结果为什么不换行,代码是一样的,而且在输入时光标在提示语的前面,这是为什么?
老师好,窗口继承自 javax.swing.JFrame,为什么闪的还是特别厉害?
为啥我下的没有JRE
老师,我想问下,当学完这一章后,自己去写游戏时,一点思路都没有,感觉很懵,完全不知道怎么去写,或者知道写的步骤,但写不出来,这种情况,需不需要重新去学呢?
构造函数中,this函数为什么要第一行,放入第二行就报错
老师,eclipse中的窗口大小和位置的单位是什么?
以下方法为例,该方法中参数的单位是什么?
public void setSize(int width, int height) { super.setSize(width, height); }
我按着视频敲的代码,画出窗口感觉很大?
老师,这是双色球资料包中老师给的代码:
Scanner类的nextInt(int n)方法中的形参代表的是进制,不是范围吧,红框出,给出的33、16貌似是当作范围了
只能是父子关系才能向上或向下转型吗?
有几个字节是指的是可容纳数据的长度吗
请问有API文档吗?
老师,为什么在程序运行后,能够正常运行,但总是出现异常呢?我根据老师的源码检查了多次,没有发现哪里有问题啊?
package cn.sxt.game; import java.awt.Color; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; /** * 容器和数组产生多发炮弹 * @author Administrator * */ public class MyGameFrame extends Frame{ Image planeImg = GameUtil.getImage("images/plane.png"); Image bg = GameUtil.getImage("images/bg.jpg"); //创建飞机的对象,并调用Plane Plane plane = new Plane(planeImg,250,250); //创建炮弹的对象,并调用Shell Shell[] shells = new Shell[50]; @Override public void paint(Graphics g) {//自动被调用。g变量相当于画笔 g.drawImage(bg, 0, 0, null); plane.drawSelf(g);//画飞机 //画50个炮弹 for(int i = 0;i<shells.length;i++) { shells[i].draw(g); //飞机和炮弹的碰撞检测 boolean peng = shells[i].getRect().intersects(plane.getRect()); if(peng) { plane.live = false; } } } //定义一个内部类并继承线程 class PaintThread extends Thread{ @Override public void run() { while(true) { repaint();//重画窗口 try { Thread.sleep(40);//1秒等于1000毫秒 } catch (InterruptedException e) { e.printStackTrace(); } } } } //定义键盘监听的内部类,并继承KeyAdapter class KeyMonitor extends KeyAdapter{ @Override //按一下键,会获得那些信息 public void keyPressed(KeyEvent e) { plane.addDirection(e);//调用Plane中的按下方法 } @Override //释放按键,会获得哪些信息 public void keyReleased(KeyEvent e) { plane.minusDirection(e); } } /** * 初始化窗口 */ public void launchFrame() { this.setTitle("2D经典");//窗口名称 this.setVisible(true); this.setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);//设置窗口大小 this.setLocation(300, 300);//设置窗口位置 //定义窗口关闭程序 this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0);//表示直接关闭 } }); new PaintThread().start();//启动重化窗口的线程 addKeyListener(new KeyMonitor());//给窗口增加键盘的监听 //初始化50个炮弹 for(int i = 0;i<shells.length;i++) { shells[i] = new Shell(); } } public static void main(String[] args) { MyGameFrame f = new MyGameFrame(); f.launchFrame(); } private Image offScreenImage = null; public void update(Graphics g) { if(offScreenImage == null) offScreenImage = this.createImage(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);//窗口的宽度和高度 Graphics gOff = offScreenImage.getGraphics(); paint(gOff); g.drawImage(offScreenImage, 0, 0, null); } }
视频中讲诉了Math.random()的方法,我想请问一下为什么不教大家Random.nextInt()方法呢?我感觉外面还要做乘法还要强制转换成int类型很麻烦,例如以下代码:
Random ra =new Random(); i = ra.nextInt(7);
这样就可以直接取0-7之间的随机数(包含0而不包含7),感觉这样方便很多.
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637