java 板


LINE

(此文为代po,谢谢~) ※状况概述:想请问能否在构造函式中使用判断式。 以下是People档案中的构造函式: public People() { try { if(UpStatue==true){ image1 = ImageIO.read(new File("image/boy-up-1.png"));//向上的图片一 image2 = ImageIO.read(new File("image/boy-up-2.png"));//向上的图片二 image3 = ImageIO.read(new File("image/boy-up-3.png"));//向上的图片三 }else if(RightStatue==true) { image1 = ImageIO.read(new File("image/boy-right-1.png"));//向上的图片一 image2 = ImageIO.read(new File("image/boy-right-2.png"));//向上的图片二 image3 = ImageIO.read(new File("image/boy-right-3.png"));//向上的图片三 }else if(LeftStatue==true) { image1 = ImageIO.read(new File("image/boy-left-1.png"));//向上的图片一 image2 = ImageIO.read(new File("image/boy-left-2.png"));//向上的图片二 image3 = ImageIO.read(new File("image/boy-left-3.png"));//向上的图片三 }else if(DownStatue==true) { image1 = ImageIO.read(new File("image/boy-down-1.png"));//向下的图片一 image2 = ImageIO.read(new File("image/boy-down-2.png"));//向下的图片二 image3 = ImageIO.read(new File("image/boy-down-3.png"));//向下的图片三 }else { image1 = ImageIO.read(new File("image/boy-down-1.png"));//向下的图片一 image2 = ImageIO.read(new File("image/boy-down-2.png"));//向下的图片二 image3 = ImageIO.read(new File("image/boy-down-3.png"));//向下的图片三 } } catch (IOException e) { e.printStackTrace(); } x = 100;// 初始x轴化座标 y = 100;// 初始y轴化座标 } https://i.imgur.com/HHNdbTc.jpg
如上图, 构造函式的图片没办法进行判断,按上下左右的键图片也不会改变。 ※程式码:全部的程式码 https://i.imgur.com/fKuBbP3.jpg
https://i.imgur.com/dVNDIng.jpg
https://i.imgur.com/hC8JVxR.jpg
https://i.imgur.com/qf9ywGe.jpg
< GamePanel.java档案> package ex02; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JPanel; //alt + / 自动补全 //ctrl + shift + f 调整格式 public class GamePanel extends JPanel implements KeyListener { BufferedImage image;// 主图片 Graphics2D g2;// 绘图工具,美工 People golden; boolean finish = false;// 游戏是否结束 static final int FRESH = 20;//非静态的 final无法改变的常量 ,刷新时间,20毫秒 BufferedImage background;// 背景 // 构造函数,给对象的数据(属性)惊醒初始化 会先於初始化函数 相较於//静态函数: 只能执行一次,构造函数:能执行多次 public GamePanel() { image = new BufferedImage(600, 500, BufferedImage.TYPE_INT_BGR); g2 = image.createGraphics(); golden = new People();//引用People()构造函数 try { background = ImageIO.read(new File("image/background.png")); } catch (IOException e) { e.printStackTrace(); } FreshThread t = new FreshThread(this);// 刷新线程 t.start(); } // 绘制图片 private void paintImage() { golden.move();// 移动 g2.drawImage(background, 0, 0, this);// 先放背景 g2.drawImage(golden.image, golden.x, golden.y, this);// 再放人物 } // 设置画布 @Override被继承的方法 @Override public void paint(Graphics g) { paintImage(); g.drawImage(image, 0, 0, this); } public boolean isFinish() { return finish; } @Override public void keyTyped(KeyEvent e) {// 按键类型 // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent e) {// 按键按下 e可以 int code = e.getKeyCode(); if (code == KeyEvent.VK_UP) { golden.up(); } else if (code == KeyEvent.VK_DOWN) { golden.down(); } else if (code == KeyEvent.VK_RIGHT) { golden.right(); } else if (code == KeyEvent.VK_LEFT) { golden.left(); } } @Override public void keyReleased(KeyEvent e) {// 按键抬起 golden.released(); } } https://i.imgur.com/empqY5j.jpg
https://i.imgur.com/5LL37yZ.jpg
https://i.imgur.com/yDHxbxB.jpg
https://i.imgur.com/8bUy710.jpg
< People.java档案> package ex02; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class People { int x, y;// 座标 BufferedImage image; BufferedImage image1, image2, image3;// 人的图片 int stepTimer = 0;// 添加计时器 毫秒 int fresh = GamePanel.FRESH;// 为静态 可调用 boolean UpStatue = false;// 向上的状态 boolean DownStatue = false;// 向下的状态 boolean RightStatue = false;// 向右的状态 boolean LeftStatue = false;// 向左的状态 public People() { try { image1 = ImageIO.read(new File("image/boy-down-1.png"));//向下的图片一 image2 = ImageIO.read(new File("image/boy-down-2.png"));//向下的图片二 image3 = ImageIO.read(new File("image/boy-down-3.png"));//向下的图片三 } catch (IOException e) { e.printStackTrace(); } x = 100;// 初始x轴化座标 y = 100;// 初始y轴化座标 } public void move() {// 游戏面板中的移动 step();// 踏步 if (UpStatue && (y > 5)) { y -= 5; } else if (DownStatue && (y < 410)) { y += 5; } else if (RightStatue && (x < 555)) { x += 5; } else if (LeftStatue && (x > 5)) { x -= 5; } } void step() {// 移动中的踏步 int tmp = stepTimer / 250 % 3;// 每四分之一秒出现一张图 只会余0,1,2因此只有 三种结果 switch (tmp) { case 0: image = image1; break; case 1: image = image2; break; default: image = image3; break; } stepTimer += fresh;// 得到计时器递增刷新时间 } public void up() {// 向上 UpStatue = true; } public void down() { DownStatue = true; } public void right() { RightStatue = true; } public void left() { LeftStatue = true; } public void released() { UpStatue = false; DownStatue = false; RightStatue = false; LeftStatue = false; } } https://i.imgur.com/LY2N0B0.jpg
<MainFrame.java档案> package ex02; import java.awt.Container; import javax.swing.JFrame; public class MainFrame extends JFrame { GamePanel p; public MainFrame() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); p = new GamePanel(); Container c = getContentPane();// 获得窗体的主容器 c.add(p);// 把游戏面板添加到主容器 addKeyListener(p);// 添加键盘事件监听 } public static void main(String[] args) { MainFrame frame = new MainFrame(); frame.setTitle("The Game"); frame.setBounds(300, 100, 600, 500);// 设置屏幕位置,大小 frame.setVisible(true); frame.setResizable(false); } } https://i.imgur.com/SZa29fD.jpg
<FreshThread.java档案> package ex02; public class FreshThread extends Thread {// 继承线程功能 GamePanel p; public FreshThread(GamePanel p) {// 调用构造方法 this.p = p;// 将参数给类成员属性赋值 } @Override public void run() { while (!p.isFinish()) {// 当游戏没有结束时 p.repaint();// 重新绘制图片 try { Thread.sleep(p.FRESH); } catch (InterruptedException e) { e.printStackTrace(); } // 休眠多长时间 } } } 是超级新手,谢谢各位拨冗观看~~~ --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.11.192 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1582274157.A.C91.html ※ 编辑: earric (59.126.69.245 台湾), 02/21/2020 17:48:56 ※ 编辑: earric (59.126.69.245 台湾), 02/21/2020 17:59:54 ※ 编辑: earric (59.126.69.245 台湾), 02/21/2020 18:02:57 ※ 编辑: earric (180.217.239.202 台湾), 02/21/2020 18:06:22 ※ 编辑: earric (59.126.69.245 台湾), 02/21/2020 18:22:18
1F:推 pupudice: 要不要考虑考虑用一个repo, 这样架构什麽的比较清楚 02/23 10:08
2F:→ earric: 昨天已经把功能用出来了,会试着用pro看看的,谢谢建议~ 02/23 10:36







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP