本游戏是突发一个想法写出来的,只写了个大概,大概如下:

游戏菜单界面
游戏主界面

 

人物详情界面

 

背包界面
装备详情界面

游戏介绍:

  1. 游戏目录为src存放代码,lib存放jar包(build path加入jar),res存放资源
  2. 类列表:

    GameConfig 游戏配置接口

    MenuGame 游戏菜单(含有main方法创建new menuGame)

    Player 玩家类

    StarGame 游戏界面

    GameUtil 游戏工具类

    BackpackJFrame 背包界面

    EquipDetailJFrame 背包物品详情界面

    PlayerJFrame 角色详情界面

    UnitXLS 操作XLS工具类

  3. 方法注释:太多了有时间再写吧,认真学习的,加我QQ问也行(大部分我在代码中都有注释)

  4. 本来为了放数据,代码执行会在D盘建一个文字游戏的文件夹,然而,我并没有发现有啥用

最最重要的代码下载地址↓↓↓↓:

链接: https://pan.baidu.com/s/1-PViDjNVfdh58vagk63czw

提取码: 6666

注:开发不易,有票子的老铁可以在这下载→:https://download.csdn.net/download/qq_40176716/10727643

游戏接口:

import java.util.ArrayList;
import java.util.List;
import java.util.Map;/*** 游戏接口* * @author 莫言情难忘 1179307527**/
public interface GameConfig {String[][] MAP = new String[10][10];// 新手村地图String[][] MAPabout = new String[10][10];// 新手村地图注释int[][][] coordinate = new int[10][10][10];// 10个新手村这么大的地图Player player = new Player();List<Map<String, String>> zhuangbeilist = new ArrayList<Map<String, String>>();// 所有装备
}

MenuGame.java

游戏菜单,main方法在里面,还有初始化装备列表

import java.awt.Container;
import java.awt.Desktop;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;/*** * @author 莫言情难忘* QQ 1179307527* 游戏菜单*/
public class MenuGame implements GameConfig{public static JFrame loginFrame;// 启动界面public MenuGame() {Initialization1();loginFrame = new JFrame("文字游戏");// 设置大小loginFrame.setSize(200, 235);// 设置窗体居中loginFrame.setLocationRelativeTo(null);// 设置不可最大化loginFrame.setResizable(false);// 设置没有标题栏// loginFrame.setUndecorated(true);// 设置图标Image icon = Toolkit.getDefaultToolkit().getImage("images/icon.png");loginFrame.setIconImage(icon);// 设置关闭loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置字体Font font = new Font("楷体", 0, 16);// 设置文本字体UIManager.put("Label.font", font);// 面板,用于添加按钮JPanel jPanel = new JPanel();Container container = loginFrame.getContentPane();// 按钮实例化JButton stargame = new JButton("开始游戏");JButton duqugame = new JButton("读取游戏");JButton guanyugame = new JButton("关于游戏");JButton helpgame = new JButton("游戏帮助");JButton tuichugame = new JButton("退出游戏");// 面板添加5个菜单按钮jPanel.add(stargame);jPanel.add(duqugame);jPanel.add(guanyugame);jPanel.add(helpgame);jPanel.add(tuichugame);// 为按钮设置字体stargame.setFont(font);duqugame.setFont(font);guanyugame.setFont(font);tuichugame.setFont(font);helpgame.setFont(font);// 添加面板container.add(jPanel);// 开始游戏按钮监听stargame.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// 开始游戏StartGame ks = new StartGame();loginFrame.dispose();}});// 读取游戏按钮监听duqugame.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// 警告信息框JOptionPane.showMessageDialog(jPanel, "后续开发", "读取存档", JOptionPane.WARNING_MESSAGE);}});// 关于按钮被单击guanyugame.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// 弹出文本内容String guanyu = "本软件为文字类游戏,ok";// 信息框JOptionPane.showMessageDialog(null, guanyu, "关于", JOptionPane.PLAIN_MESSAGE);}});// 帮助按钮被单击helpgame.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// 弹出文本内容String help = "这是帮助";// 信息框JOptionPane.showMessageDialog(null, help, "帮助", JOptionPane.PLAIN_MESSAGE);}});// 退出游戏监听tuichugame.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {int res = JOptionPane.showConfirmDialog(null, "我们正在努力添加游戏各种功能\n" + "敬请期待", "退出?",JOptionPane.YES_NO_OPTION);if (res == JOptionPane.YES_OPTION) {Desktop desktop = Desktop.getDesktop();try {desktop.browse(new URI("http://www.520mylove.com"));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (URISyntaxException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.exit(0);// 退出}}});// 显示窗口loginFrame.setVisible(true);}/*** 初始化1,判断是否存在游戏文档文件夹(游戏文档包括游戏存档等)*/void Initialization1() {File file = new File("D:\\文字游戏");//游戏目录File file1 = new File("D:\\文字游戏\\map");//游戏地图File file2 = new File("D:\\文字游戏\\cundang");//游戏存档if (!file.exists() && !file.isDirectory()) {// 不存在此文件夹,建立此文件夹file.mkdir();}if (!file1.exists() && !file1.isDirectory()) {// 不存在此文件夹,建立此文件夹file1.mkdir();}if (!file2.exists() && !file2.isDirectory()) {// 不存在此文件夹,建立此文件夹file2.mkdir();}}public static void main(String[] args) {//加载游戏装备列表String 所有装备 = "res/装备匹配表.xls";String 队列1[] = {"ID", "品质", "位置", "名称", "说明", "等级", "善恶", "门派", "生命", "攻击", "防御", "速度", "暴击","命中", "闪避", "生命加成", "攻击加成", "防御加成", "速度加成", "吸血"};UnitXLS.AddXls(zhuangbeilist,所有装备,队列1);//加载当前装备列表String 角色装备 = "res/角色装备.xls";String 队列2[] = {"ID", "名称"};UnitXLS.AddXls(player.juesezhuangbeilist,角色装备,队列2);new MenuGame();}}

StartGame.java

游戏主界面(地图移动,打开人物界面等)

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;/*** 游戏初始界面* * @author 莫言情难忘 1179307527**/
public class StartGame extends JFrame implements GameConfig {// 游戏面板JPanel panel;int PlayerX = 1;int PlayerY = 1;JButton shang, xia, zuo, you, zhong;/*** 设置窗体*/public StartGame() {// 读取游戏mapReadMap();this.setTitle("文字类");this.setSize(450, 485);// 450*450 标题栏占35this.setLayout(null);// 设置关闭方式this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗体居中this.setLocationRelativeTo(null);// 设置字体Font font = new Font("楷体", 0, 20);// 设置文本字体UIManager.put("Label.font", font);// 上shang = new JButton("上城");shang.setBounds(150, 0, 150, 150);shang.setFont(font);this.add(shang);shang.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubReMap(0);}});// 下xia = new JButton("下城");xia.setBounds(150, 300, 150, 150);xia.setFont(font);this.add(xia);xia.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubReMap(1);}});// 左zuo = new JButton("左城");zuo.setBounds(0, 150, 150, 150);zuo.setFont(font);this.add(zuo);zuo.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubReMap(2);}});// 右you = new JButton("右城");you.setBounds(300, 150, 150, 150);you.setFont(font);this.add(you);you.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubReMap(3);}});// 中zhong = new JButton("该城");zhong.setBounds(150, 150, 150, 150);zhong.setFont(font);this.add(zhong);zhong.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubReMap(4);}});// 人物JButton renwu = new JButton("人物");renwu.setBounds(0, 0, 150, 150);renwu.setFont(font);this.add(renwu);renwu.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new PlayerJFrame();// String[] a = {"da","da","da"};// int va =JOptionPane.showOptionDialog(StartGame.this, "人物详情", "标题",// JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, a, "da");}});// 背包JButton backpack = new JButton("背包");backpack.setBounds(300, 0, 150, 150);backpack.setFont(font);this.add(backpack);backpack.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubnew BackpackJFrame();}});// 设置JButton shezhi = new JButton("设置");shezhi.setBounds(0, 300, 150, 150);shezhi.setFont(font);this.add(shezhi);shezhi.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub}});// 特殊JButton teshu = new JButton("特殊");teshu.setBounds(300, 300, 150, 150);teshu.setFont(font);this.add(teshu);teshu.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String pojie = JOptionPane.showInputDialog("请输入密码");if (pojie != null && pojie.equals("我爱文字游戏1179307527")) {player.PoJie1();JOptionPane.showMessageDialog(null, "输入key成功,开启贵族的待遇", "破解success", JOptionPane.PLAIN_MESSAGE);} else if (pojie != null && pojie.equals("我有故事你有酒吗")) {String aString = "输入KEY值成功,我有故事你有酒吗?\n" + "真的,谁没有藏在心底的故事呢?";JOptionPane.showMessageDialog(null, aString, "来,干杯", JOptionPane.PLAIN_MESSAGE);} else {JOptionPane.showMessageDialog(null, "输入key失败", "破解失败", JOptionPane.PLAIN_MESSAGE);}}});shang.setText(MAP[PlayerX - 1][PlayerY]);xia.setText(MAP[PlayerX + 1][PlayerY]);zuo.setText(MAP[PlayerX][PlayerY - 1]);you.setText(MAP[PlayerX][PlayerY + 1]);zhong.setText(MAP[PlayerX][PlayerY]);this.setResizable(false);this.setVisible(true);}/*** 读取地图及地图介绍 地图为res文件夹的MAP.txt 地图介绍为res文件夹的MAPabout.txt*/void ReadMap() {// 加载地图try {File file = new File("res\\MAP.txt");InputStreamReader reader = new InputStreamReader(new FileInputStream(file));BufferedReader br = new BufferedReader(reader);// 读取地图的主要操作for (int i = 0; i < 10; i++) {String[] iString = br.readLine().split(";");for (int j = 0; j < 10; j++) {MAP[i][j] = iString[j];}}// 关闭输出流reader.close();} catch (Exception e) {// 处理异常}// 加载地图介绍try {File file = new File("res\\MAPabout.txt");InputStreamReader reader = new InputStreamReader(new FileInputStream(file));BufferedReader br = new BufferedReader(reader);// 读取地图的主要操作for (int i = 0; i < 10; i++) {for (int j = 0; j < 10; j++) {String iString = br.readLine();MAPabout[i][j] = iString;}}// 关闭输出流reader.close();} catch (Exception e) {// 处理异常}}/*** 刷新地图* * @param j*            0=上 1=下 2=左 3=右 4=中 获取移动方向*/void ReMap(int key) {switch (key) {// 上case 0:if (MAP[PlayerX - 1][PlayerY] != null && !MAP[PlayerX - 1][PlayerY].equals("空")) {PlayerX--;shang.setText(MAP[PlayerX - 1][PlayerY]);xia.setText(MAP[PlayerX + 1][PlayerY]);zuo.setText(MAP[PlayerX][PlayerY - 1]);you.setText(MAP[PlayerX][PlayerY + 1]);zhong.setText(MAP[PlayerX][PlayerY]);}break;// 下case 1:if (MAP[PlayerX + 1][PlayerY] != null && !MAP[PlayerX + 1][PlayerY].equals("空")) {PlayerX++;shang.setText(MAP[PlayerX - 1][PlayerY]);xia.setText(MAP[PlayerX + 1][PlayerY]);zuo.setText(MAP[PlayerX][PlayerY - 1]);you.setText(MAP[PlayerX][PlayerY + 1]);zhong.setText(MAP[PlayerX][PlayerY]);}break;// 左case 2:if (MAP[PlayerX][PlayerY - 1] != null && !MAP[PlayerX][PlayerY - 1].equals("空")) {PlayerY--;shang.setText(MAP[PlayerX - 1][PlayerY]);xia.setText(MAP[PlayerX + 1][PlayerY]);zuo.setText(MAP[PlayerX][PlayerY - 1]);you.setText(MAP[PlayerX][PlayerY + 1]);zhong.setText(MAP[PlayerX][PlayerY]);}break;// 右case 3:if (MAP[PlayerX][PlayerY + 1] != null && !MAP[PlayerX][PlayerY + 1].equals("空")) {PlayerY++;shang.setText(MAP[PlayerX - 1][PlayerY]);xia.setText(MAP[PlayerX + 1][PlayerY]);zuo.setText(MAP[PlayerX][PlayerY - 1]);you.setText(MAP[PlayerX][PlayerY + 1]);zhong.setText(MAP[PlayerX][PlayerY]);}break;// 中case 4:int res = JOptionPane.showConfirmDialog(null, GameUtil.StringToHtml(MAPabout[PlayerX][PlayerY], 10),"是否进入" + MAP[PlayerX][PlayerY] + "?", JOptionPane.YES_NO_OPTION);if (res == JOptionPane.YES_OPTION) {// 此处处理进入方法System.out.println("进入了" + MAP[PlayerX][PlayerY]);} else {// 此处可做不处理System.out.println("没进入" + MAP[PlayerX][PlayerY]);}break;default:JOptionPane.showMessageDialog(this, "219", "default错误", JOptionPane.WARNING_MESSAGE);break;}}
}

Player.java

玩家类,里面大多是变量,例如攻击防御等信息

import java.util.ArrayList;
import java.util.List;
import java.util.Map;/*** * @author 莫言情难忘 1179307527**/
public class Player {String name = "情难忘";// 姓名int age = 15;// 年龄(默认年龄在70岁死亡,冒险在15岁)String sex = "男";// 性别(加入帮派限制)(转职?)String designation = "无";// 称号int leave = 0;// 等级,每级增加int jingyan = 0;// 当前经验int[] shengjijingyan = { 100, 200, 400, 800, 1600, 3200, 6400, 12800, 25600, 51200, 102400, 204800, 409600,999999 };// 升级所需的经验int life = 100;// 生命值int attack = 20;// 攻击(攻击算法)int defend = 10;// 防御(防御算法)int speed = 5;// 速度(速度大的先手)int violent = 2; // 暴击率(2倍)(百分比,最大100,最小0)int goodevil = 0;// 善恶值 可触发一些事件任务int prestige = 0;// 声望值 到达某些指定声望值时,购买东西可打折int faction = 0;// 门派 在门派可以学习很多东西,当然要用门派的积分来换,有些门派任务是有时限的int lucky = 5;// 幸运值,掉宝几率大,暴击加成(掉宝加成具体宝贝具体算法,暴击=原有暴击+幸运值*0.5)boolean burns1;// 1级烧伤,每回合2%boolean burns2;// 2级烧伤,每回合5%boolean burns3;// 3级烧伤,每回合10%boolean frostbite1;// 1级冻伤,每回合2%boolean frostbite2;// 2级冻伤,每回合5%boolean frostbite3;// 3级冻伤,每回合10%boolean poisoning1;// 1级中毒,每回合2%boolean poisoning2;// 2级中毒,每回合5%boolean poisoning3;// 3级中毒,每回合10%boolean deceleration;// 减速List<Map<String, String>> juesezhuangbeilist = new ArrayList<Map<String, String>>();// 角色装备列表String[] backpackcontent = new String[99];// 背包内容String equipment1;// 装备1,武器String equipment2;// 装备2,头盔String equipment3;// 装备3,上衣甲String equipment4;// 装备4,下裤甲String equipment5;// 装备5,鞋子String equipment6;// 装备6,首饰boolean pojie1 = true;/*** 破解方法 增加10倍于0级的生命值 攻击 防御 速度 增加 幸运点数20*/public void PoJie1() {if (pojie1) {life = life + 1000;attack = attack + 200;defend = defend + 100;speed = speed + 50;lucky = lucky + 20;pojie1 = false;}}boolean pojie2 = true;/*** 破解方法 增加20倍于0级的生命值 攻击 防御 速度 增加 幸运点数50*/public void PoJie2() {if (pojie2) {life = life + 2000;attack = attack + 400;defend = defend + 200;speed = speed + 100;lucky = lucky + 50;pojie2 = false;}}}

PlayerJFrame.java

玩家界面,里面是玩家的各种信息

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;/*** 人物界面* * @author 莫言情难忘**/
public class PlayerJFrame extends JFrame implements GameConfig {public PlayerJFrame() {JFrame playerjframe = new JFrame("人物详情");JPanel playerJPanel = new JPanel();// 设置字体Font font = new Font("楷体", 0, 20);// 设置文本字体UIManager.put("Label.font", font);// 称号JLabel jLabel_designation = new JLabel("称号:" + player.designation, JLabel.CENTER);jLabel_designation.setFont(font);jLabel_designation.setBounds(0, 0, 200, 20);// 名字JLabel jLabel_name = new JLabel(player.name, JLabel.CENTER);jLabel_name.setFont(font);jLabel_name.setBounds(0, 20, 200, 20);// 年龄JLabel jLabel_age = new JLabel(String.valueOf(player.age) + "岁", JLabel.CENTER);jLabel_age.setFont(font);jLabel_age.setBounds(0, 40, 100, 20);// 性别JLabel jLabel_sex = new JLabel(player.sex, JLabel.CENTER);jLabel_sex.setFont(font);jLabel_sex.setBounds(100, 40, 100, 20);// 等级JLabel jLabel_leave = new JLabel("等级:" + String.valueOf(player.leave), JLabel.CENTER);jLabel_leave.setFont(font);jLabel_leave.setBounds(0, 60, 200, 20);// 经验JLabel jLabel_jingyan = new JLabel("经验:" + String.valueOf(player.jingyan), JLabel.CENTER);jLabel_jingyan.setFont(font);jLabel_jingyan.setBounds(0, 80, 200, 20);// 生命值JLabel jLabel_life = new JLabel("生命" + String.valueOf(player.life), JLabel.CENTER);jLabel_life.setFont(font);jLabel_life.setBounds(0, 100, 200, 20);// 攻击JLabel jLabel_attack = new JLabel("攻击" + String.valueOf(player.attack), JLabel.CENTER);jLabel_attack.setFont(font);jLabel_attack.setBounds(0, 120, 100, 20);// 防御JLabel jLabel_defend = new JLabel("防御" + String.valueOf(player.defend), JLabel.CENTER);jLabel_defend.setFont(font);jLabel_defend.setBounds(100, 120, 100, 20);// 速度JLabel jLabel_speed = new JLabel("速度" + String.valueOf(player.speed), JLabel.CENTER);jLabel_speed.setFont(font);jLabel_speed.setBounds(0, 140, 100, 20);// 暴击JLabel jLabel_violent = new JLabel("暴击" + String.valueOf(player.violent), JLabel.CENTER);jLabel_violent.setFont(font);jLabel_violent.setBounds(100, 140, 100, 20);// 善恶JLabel jLabel_goodevil = new JLabel("善恶" + String.valueOf(player.goodevil), JLabel.CENTER);jLabel_goodevil.setFont(font);jLabel_goodevil.setBounds(0, 180, 200, 20);// 声望JLabel jLabel_prestige = new JLabel("声望" + String.valueOf(player.prestige), JLabel.CENTER);jLabel_prestige.setFont(font);jLabel_prestige.setBounds(0, 200, 200, 20);// 门派JLabel jLabel_faction = new JLabel("门派" + String.valueOf(player.faction), JLabel.CENTER);// 门派jLabel_faction.setFont(font);jLabel_faction.setBounds(0, 220, 200, 20);// 幸运JLabel jLabel_lucky = new JLabel("幸运" + String.valueOf(player.lucky), JLabel.CENTER);jLabel_lucky.setFont(font);jLabel_lucky.setBounds(0, 240, 200, 20);// 装备列表JLabel[] jLable_zhuangbei = new JLabel[6];for (int i = 0; i < 6; i++) {jLable_zhuangbei[i] = new JLabel();}jLable_zhuangbei[0].setText("装备1:" + "空");jLable_zhuangbei[0].setFont(font);jLable_zhuangbei[0].setHorizontalAlignment(JLabel.CENTER);jLable_zhuangbei[1].setText("装备2:" + "空");jLable_zhuangbei[1].setFont(font);jLable_zhuangbei[1].setHorizontalAlignment(JLabel.CENTER);jLable_zhuangbei[2].setText("装备3:" + "空");jLable_zhuangbei[2].setFont(font);jLable_zhuangbei[2].setHorizontalAlignment(JLabel.CENTER);jLable_zhuangbei[3].setText("装备4:" + "空");jLable_zhuangbei[3].setFont(font);jLable_zhuangbei[3].setHorizontalAlignment(JLabel.CENTER);jLable_zhuangbei[4].setText("装备5:" + "空");jLable_zhuangbei[4].setFont(font);jLable_zhuangbei[4].setHorizontalAlignment(JLabel.CENTER);jLable_zhuangbei[5].setText("装备6:" + "空");jLable_zhuangbei[5].setFont(font);jLable_zhuangbei[5].setHorizontalAlignment(JLabel.CENTER);jLable_zhuangbei[0].setBounds(0, 260, 200, 20);jLable_zhuangbei[1].setBounds(0, 280, 200, 20);jLable_zhuangbei[2].setBounds(0, 300, 200, 20);jLable_zhuangbei[3].setBounds(0, 320, 200, 20);jLable_zhuangbei[4].setBounds(0, 340, 200, 20);jLable_zhuangbei[5].setBounds(0, 360, 200, 20);// 关闭人物详情界面JButton close = new JButton("关闭界面");close.setFont(font);close.setBounds(20, 380, 160, 35);// 关闭人物详情界面的按钮触发close.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {playerjframe.dispose();}});// 面板添加组件playerJPanel.add(jLabel_designation);playerJPanel.add(jLabel_name);playerJPanel.add(jLabel_age);playerJPanel.add(jLabel_sex);playerJPanel.add(jLabel_leave);playerJPanel.add(jLabel_jingyan);playerJPanel.add(jLabel_life);playerJPanel.add(jLabel_attack);playerJPanel.add(jLabel_defend);playerJPanel.add(jLabel_speed);playerJPanel.add(jLabel_violent);playerJPanel.add(jLabel_goodevil);playerJPanel.add(jLabel_prestige);playerJPanel.add(jLabel_faction);playerJPanel.add(jLabel_lucky);playerJPanel.add(jLable_zhuangbei[0]);playerJPanel.add(jLable_zhuangbei[1]);playerJPanel.add(jLable_zhuangbei[2]);playerJPanel.add(jLable_zhuangbei[3]);playerJPanel.add(jLable_zhuangbei[4]);playerJPanel.add(jLable_zhuangbei[5]);playerJPanel.add(close);// 设置布局格式playerJPanel.setLayout(null);// JFame添加面板playerjframe.add(playerJPanel);playerjframe.setSize(200, 450);// 设置在最前显示playerjframe.setAlwaysOnTop(true);// 关闭方式,DISPOSE_ON_CLOSE,隐藏并释放窗体,dispose(),当最后一个窗口被释放后,则程序也随之运行结束。playerjframe.setDefaultCloseOperation(DISPOSE_ON_CLOSE);// 设置窗体居中playerjframe.setLocationRelativeTo(null);// 大小不可变playerjframe.setResizable(false);// 显示界面playerjframe.setVisible(true);}
}

BackpackJFrame.java

背包界面,内容为你的背包的东西

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;/*** 背包界面* * @author 莫言情难忘 1179307527**/
public class BackpackJFrame extends JFrame implements GameConfig {public BackpackJFrame() {JFrame backpackjframe = new JFrame("背包详情");JPanel backpackJPanel = new JPanel();// 设置字体Font font = new Font("楷体", 0, 20);// 设置文本字体UIManager.put("Label.font", font);// 设置布局格式backpackJPanel.setLayout(null);// 面板添加组件JButton[] JButton_zhuangbei = new JButton[99];for (int i = 0; i < 33; i++) {for (int j = 0; j < 3; j++) {JButton_zhuangbei[i * 3 + j] = new JButton();JButton_zhuangbei[i * 3 + j].setText(GameUtil.StringToHtml(GameUtil.取指定文本(UnitXLS.取内容(player.juesezhuangbeilist, i * 3 + j), "名称=", "}"), 3));JButton_zhuangbei[i * 3 + j].setFont(font);backpackJPanel.add(JButton_zhuangbei[i * 3 + j]);// 设置位置JButton_zhuangbei[i * 3 + j].setBounds(j * 100, i * 100, 100, 100);// i=纵 j=横}}ActionListener jbutton = new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int k = -1;// html标准格式头String strhtmltou = "<html>";// html标准格式尾String strhtmlwei = "</html>";// 循环判断点击的按钮的for (int i = 0; i < 99; i++) {if (!GameUtil.取指定文本(e.getSource().toString(), "text=", ",").equals("空")) {if (GameUtil.HtmlToString(GameUtil.取指定文本(e.getSource().toString(), strhtmltou, strhtmlwei)).equals(GameUtil.取指定文本(UnitXLS.取内容(zhuangbeilist, i), "名称=", ","))) {k = i;}}}// 打开该ID的装备信息if (k != -1) {new EquipDetailJFrame(k);}}};for (int i = 0; i < JButton_zhuangbei.length; i++) {JButton_zhuangbei[i].addActionListener(jbutton);}// JFame添加面板// backpackJPanel.setSize(300, 3300);采用下面的方法设置大小backpackJPanel.setPreferredSize(new Dimension(300, 3300));// 向jscrollpane中添加背包面板JScrollPane jsp = new JScrollPane(backpackJPanel);// Jfame添加JScerollPanebackpackjframe.add(jsp);// 设置大小backpackjframe.setSize(324, 335);// 关闭方式,DISPOSE_ON_CLOSE,隐藏并释放窗体,dispose(),当最后一个窗口被释放后,则程序也随之运行结束。backpackjframe.setDefaultCloseOperation(DISPOSE_ON_CLOSE);// 设置在最前显示backpackjframe.setAlwaysOnTop(true);// 设置窗体居中backpackjframe.setLocationRelativeTo(null);// 大小不可变backpackjframe.setResizable(false);// 显示界面backpackjframe.setVisible(true);}
}

 

EquipDetailJFrame.java

物品详情界面

import java.awt.Font;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;/*** 物品详情界面* * @author 莫言情难忘 1179307527*/
public class EquipDetailJFrame implements GameConfig {/*** 物品详情界面,ID为物品ID* * @param ID*/public EquipDetailJFrame(int ID) {JFrame equipdetailjframe = new JFrame("详情");JPanel equipdetailJPanel = new JPanel();equipdetailJPanel.setLayout(null);// 设置字体Font font = new Font("楷体", 0, 20);// 设置文本字体UIManager.put("Label.font", font);// attribute属性String[] attribute = { "ID", "品质", "位置", "名称", "说明", "等级", "善恶", "门派", "生命", "攻击", "防御", "速度", "暴击", "命中", "闪避","生命加成", "攻击加成", "防御加成", "速度加成", "吸血" };// JLabel 品质,位置,名称,说明,等级,善恶,帮派,幸运,生命,攻击,防御,速度,暴击,命中,闪避,生命加成,攻击加成,防御加成,速度加成,吸血;// 品质=new JLabel(GameUtil.取指定文本(UnitXLS.取内容(ID),"品质",","));// 武器=new JLabel(GameUtil.取指定文本(UnitXLS.取内容(ID),"武器",","));// 上面那种太麻烦,改为下面的JLabel[] JLabel_attribute = new JLabel[20];for (int i = 0, k = JLabel_attribute.length; i < k; i++) {// for循环直接初始化if (i == k - 1) {JLabel_attribute[i] = new JLabel(GameUtil.取指定文本(UnitXLS.取内容(zhuangbeilist, ID), attribute[i] + "=", "}"), JLabel.CENTER);} else {JLabel_attribute[i] = new JLabel(GameUtil.取指定文本(UnitXLS.取内容(zhuangbeilist, ID), attribute[i] + "=", ","), JLabel.CENTER);}// 添加字体JLabel_attribute[i].setFont(font);}// 设置位置,IDJLabel_attribute[0].setText(attribute[0] + ":" + GameUtil.取点前(JLabel_attribute[0].getText()));JLabel_attribute[0].setBounds(0, 0, 250, 20);// 名称JLabel_attribute[3].setText(JLabel_attribute[3].getText());JLabel_attribute[3].setBounds(0, 20, 250, 20);// 品质JLabel_attribute[1].setText(attribute[1] + ":" + JLabel_attribute[1].getText());JLabel_attribute[1].setBounds(0, 40, 130, 20);// 位置JLabel_attribute[2].setText(attribute[2] + ":" + JLabel_attribute[2].getText());JLabel_attribute[2].setBounds(130, 40, 130, 20);// 攻击JLabel_attribute[9].setText(attribute[9] + ":" + GameUtil.取点前(JLabel_attribute[9].getText()));JLabel_attribute[9].setBounds(0, 60, 130, 20);// 防御JLabel_attribute[10].setText(attribute[10] + ":" + GameUtil.取点前(JLabel_attribute[10].getText()));JLabel_attribute[10].setBounds(130, 60, 130, 20);// 速度JLabel_attribute[11].setText(attribute[11] + ":" + GameUtil.取点前(JLabel_attribute[11].getText()));JLabel_attribute[11].setBounds(0, 80, 130, 20);// 暴击JLabel_attribute[12].setText(attribute[12] + ":" + GameUtil.取点前(JLabel_attribute[12].getText()));JLabel_attribute[12].setBounds(130, 80, 130, 20);// 命中JLabel_attribute[13].setText(attribute[13] + ":" + GameUtil.取点前(JLabel_attribute[13].getText()));JLabel_attribute[13].setBounds(0, 100, 130, 20);// 闪避JLabel_attribute[14].setText(attribute[14] + ":" + GameUtil.取点前(JLabel_attribute[14].getText()));JLabel_attribute[14].setBounds(130, 100, 130, 20);// 吸血JLabel_attribute[19].setText(attribute[19] + ":" + GameUtil.取点前(JLabel_attribute[19].getText()));JLabel_attribute[19].setBounds(0, 120, 130, 20);// 生命加成JLabel_attribute[15].setText(attribute[15] + ":" + GameUtil.取点前(JLabel_attribute[15].getText()));JLabel_attribute[15].setBounds(0, 140, 130, 20);// 攻击加成JLabel_attribute[16].setText(attribute[16] + ":" + GameUtil.取点前(JLabel_attribute[16].getText()));JLabel_attribute[16].setBounds(130, 140, 130, 20);// 防御加成JLabel_attribute[17].setText(attribute[17] + ":" + GameUtil.取点前(JLabel_attribute[17].getText()));JLabel_attribute[17].setBounds(0, 160, 130, 20);// 速度加成JLabel_attribute[18].setText(attribute[18] + ":" + GameUtil.取点前(JLabel_attribute[18].getText()));JLabel_attribute[18].setBounds(130, 160, 130, 20);// 等级JLabel_attribute[5].setText(attribute[5] + "需求:" + GameUtil.ZeroToWu(GameUtil.取点前(JLabel_attribute[5].getText())));JLabel_attribute[5].setBounds(0, 180, 260, 20);// 善恶JLabel_attribute[6].setText(attribute[6] + "需求:" + GameUtil.ZeroToWu(GameUtil.取点前(JLabel_attribute[6].getText())));JLabel_attribute[6].setBounds(0, 200, 260, 20);// 帮派JLabel_attribute[7].setText(attribute[7] + "需求:" + GameUtil.Faction(GameUtil.取点前(JLabel_attribute[7].getText())));JLabel_attribute[7].setBounds(0, 220, 260, 20);// 说明JLabel_attribute[4].setText(GameUtil.StringToHtml(attribute[4] + ":" + GameUtil.Faction(JLabel_attribute[4].getText()), 12));JLabel_attribute[4].setBounds(0, 240, 260, 100);/*** { "ID", "品质", "位置", "名称", "说明", "等级", "善恶", "帮派", , "生命", "攻击", "防御", "速度",* "暴击", "命中", "闪避", "生命加成", "攻击加成", "防御加成", "速度加成", "吸血" };*/// JLabel_attribute[14].setText(attribute[14] + ":"// +GameUtil.取点前(JLabel_attribute[14].getText()));// JLabel_attribute[14].setBounds(0, 120, 130, 20);for (int i = 0, k = JLabel_attribute.length; i < k; i++) {equipdetailJPanel.add(JLabel_attribute[i]);}JButton 装备 = new JButton("装备");JButton 卸下 = new JButton("卸下");装备.setFont(font);卸下.setFont(font);装备.setBounds(0, 350, 130, 40);卸下.setBounds(130, 350, 130, 40);equipdetailJPanel.add(装备);equipdetailJPanel.add(卸下);// JFame添加面板equipdetailjframe.add(equipdetailJPanel);// 设置大小equipdetailjframe.setSize(260, 420);// 关闭方式,DISPOSE_ON_CLOSE,隐藏并释放窗体,dispose(),当最后一个窗口被释放后,则程序也随之运行结束。equipdetailjframe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);// 设置在最前显示equipdetailjframe.setAlwaysOnTop(true);// 设置窗体居中equipdetailjframe.setLocationRelativeTo(null);// 大小不可变equipdetailjframe.setResizable(false);// 显示界面equipdetailjframe.setVisible(true);}}

 

UnitXLS.java

读取XLS的工具类

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;/*** XLS操作* * @author 莫言情难忘**/
public class UnitXLS implements GameConfig {public static void AddXls(List<Map<String, String>> list, String filePath, String[] queue) {// Excel文档Workbook wb = null;// Excel文档中的一个sheetSheet sheet = null;// 对应一个sheet中的一行Row row = null;String cellData = null;// 将xls赋值到wbwb = readExcel(filePath);if (wb != null) {// 用来存放表中数据// list = new ArrayList<Map<String, String>>();// 获取第一个sheetsheet = wb.getSheetAt(0);// 获取最大行数int rownum = sheet.getPhysicalNumberOfRows();// 获取第一行row = sheet.getRow(0);// 获取最大列数int colnum = row.getPhysicalNumberOfCells();for (int i = 1; i < rownum; i++) {Map<String, String> map = new LinkedHashMap<String, String>();row = sheet.getRow(i);if (row != null) {for (int j = 0; j < colnum; j++) {cellData = (String) getCellFormatValue(row.getCell(j));map.put(queue[j], cellData);}} else {break;}list.add(map);}}// 遍历解析出来的list// for (Map<String,String> map : list) {// for (Entry<String,String> entry : map.entrySet()) {// System.out.print(entry.getKey()+":"+entry.getValue()+",");// }// System.out.println();// }}/*** @param ID* * @return string类型的全部信息*/// ID为第几行,仅仅使用这个方法,在使用这个方法前,要调用下AddXls初始化public static String 取内容(List<Map<String, String>> list, int ID) {return String.valueOf(list.get(ID));}// 读取excelpublic static Workbook readExcel(String filePath) {Workbook wb = null;// 如果没有该文档if (filePath == null) {return null;}// 取文件后缀名String extString = filePath.substring(filePath.lastIndexOf("."));InputStream is = null;try {is = new FileInputStream(filePath);if (".xls".equals(extString)) {return wb = new HSSFWorkbook(is);} else if (".xlsx".equals(extString)) {return wb = new XSSFWorkbook(is);} else {return wb = null;}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return wb;}/*** 获取单元格中的值并转化成string* * @param cell*            单元格* @return*/public static Object getCellFormatValue(Cell cell) {Object cellValue = null;if (cell != null) {// 判断cell类型switch (cell.getCellType()) {case NUMERIC: {cellValue = String.valueOf(cell.getNumericCellValue());break;}case STRING: {cellValue = cell.getRichStringCellValue().getString();break;}default:cellValue = "";}} else {cellValue = "";}return cellValue;}}

 

GameUtil.java

游戏工具类

/*** * @author 莫言情难忘 1179307527**/
public class GameUtil {// 求减少生命值的方法 方法用static 修饰 ,调用时 类名.方法名public static int getLoseLife(int attack, int defend) {return attack - defend;}// 求a-b之间随机数方法public static int getNumber(int a, int b) {// 求任意两个数之间的随机数(int)return (int) (Math.random() * (b - a) + a);}/*** 将文本中左边文本与右边文本中间的String取出来* * @param 文本* @param 左边文本* @param 右边文本* @return String*/public static String 取指定文本(String 文本, String 左边文本, String 右边文本) {// int indexOf(String str)// 返回指定子字符串在此字符串中第一次出现处的索引。// int indexOf(int ch, int fromIndex)// 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。// String substring(int beginIndex, int endIndex)// 返回一个新字符串,它是此字符串的一个子字符串int 左边 = 文本.indexOf(左边文本);int 右边 = 文本.indexOf(右边文本, 左边);return 文本.substring(左边 + 左边文本.length(), 右边);}/*** 因为JButton是不自动换行的,但是支持html中的换行,所以写这个为了方便换行* * @param str*            文本* @param length*            每隔length长度换行* @return*/public static String StringToHtml(String str, int length) {// html换行符String strhtmlbr = "<br>";// html标准格式头String strhtmltou = "<html>";// html标准格式尾String strhtmlwei = "</html>";// 字符串总长度int strlength = str.length();// 循环次数int k = strlength / length;// 一开始的思路:// 存放string每一小段// String[] strings = new String[99];// 初次循环取出str赋值到数组// for (int i = 0; i < k; i++) {// strings[i] = str.substring(i * length, i * length + length);// }// //连接头和第一个文本// String strreturn = strhtmltou.concat(strings[0]);// //for循环从1开始,依次连接// for (int i = 1; i < k; i++) {// strreturn = strreturn.concat(strhtmlbr + strings[i]);// }// //连接html尾// strreturn = strreturn.concat(strhtmlwei);// 此方法可以改进,改进方式如下:取消数组,两个for循环合并// 如果小于则直接输出if (strlength < length) {return str;}String strreturn = strhtmltou.concat(str.substring(0 * length, 0 * length + length));for (int i = 1; i < k; i++) {strreturn = strreturn.concat(strhtmlbr + str.substring(i * length, i * length + length));}if (strlength - k * length != 0) {strreturn = strreturn.concat(strhtmlbr + str.substring(k * length, strlength));}strreturn = strreturn.concat(strhtmlwei);// 返回转化好的htmlreturn strreturn;}/*** 将html转化成string,<br>* =null* * @param str*            html文本* @return string*/public static String HtmlToString(String str) {// html换行符String strhtmlbr = "<br>";// html标准格式头String strhtmltou = "<html>";// html标准格式尾String strhtmlwei = "</html>";String strreturn = str.replace(strhtmltou, "");strreturn = strreturn.replace(strhtmlwei, "");strreturn = strreturn.replaceAll(strhtmlbr, "");// 返回转化好的htmlreturn strreturn;}public static String 取点前(String str) {String strreturn = str.substring(0, str.indexOf("."));return strreturn;}/*** 检测是否为文本型的0,如果是将文本转化成无* * @return "无"*/public static String ZeroToWu(String str) {if (str.equals("0")) {str = "无";}return str;}/*** * @param str*            门派数字* @return 门派名称*/public static String Faction(String str) {switch (str) {case "0":str = "无";break;case "1":str = "逆天者联盟";break;case "2":str = "佣兵工会";break;case "3":str = "刺客公会";break;case "4":str = "战士公会";break;case "5":str = "极寒宫";break;case "6":str = "九霄宫";break;case "7":str = "无极宫";break;case "8":str = "火炎宫";break;case "9":str = "金鼎宫";break;case "10":str = "灵木宫";break;case "11":str = "赤土宫";break;case "12":str = "稳定宫";break;case "13":str = "时空宫";break;default:break;}return str;}}

嗯emmm没了

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 【转】在MAC系统中编译ANDROID源码与模拟器内核GoldFish

    转自:http://blog.csdn.net/keenite/article/details/9566777本文是我在MAC下编译ANDROID源码和模拟器内核GoldFish时的过程与所遇到的问题解决方案,到目前已经编译完成并在模拟器中成功加载自己的内核,同时在系统中加载了一个内核模块进行测试,下面是编译和问题解决过程:…...

    2024/4/24 5:44:33
  2. javascript、 JS日期格式化转换方法

    1. 将日期转换为指定的格式:比如转换成 年月日时分秒 这种格式:yyyy-MM-dd hh:mm:ss 或者 yyyy-MM-dd。当然是网上的方法,只是总结下。可以为Date原型添加如下的方法:Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, …...

    2024/4/19 17:11:03
  3. [08]javascript对象和数组

    什么是对象,其实就是一种类型,即引用类型。而对象的值就是引用类型的实例。在ECMAScript 中引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称做为类,但 ECMAScript 中却没有这种东西。虽然 ECMAScript 是一门面向对象的语言,却不具备传统面向对象语言所支持…...

    2024/4/28 1:40:00
  4. 游戏设计之我见 —— 动作游戏中的敌人移动设计

    这篇博客结合了一些游戏案例,介绍了在3D动作游戏中常用的AI移动规律的设计。移动方向在3D游戏中,所有的物件都是以“横纵高”三个轴为基础进行移动。但是对于动作游戏来讲,如果让敌人在3D空间中自由移动是不明智的 —— 这样会导致难以瞄准以及预测。因此对于近距离格斗攻击…...

    2024/4/28 2:50:09
  5. OpenGL,OpenCL,OpenAL,OpenMp,Opengles,WebGL,OpenVG 概念

    1. OpenGL(OpenGraphics Library)OpenGL是业界最广泛采用的二维和三维图形API,将成千上万的应用程序应用到各种各样的计算机平台上。它是独立于窗口系统和操作系统以及网络透明。OpenGL使软件开发人员为PC,工作站和超级计算机硬件创造高性能,视觉上引人注目的图形软…...

    2024/4/28 12:53:00
  6. [JavaScript]常用的JS格式验证

    //判断身份证号是否是15位或者18位 function IsIdcard(idcard) {var re = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;if(!re.test(idcard)) {return false;}return true;}//判断手机号是否正确 function IsPhone(phone) {var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0…...

    2024/4/21 13:01:47
  7. 基于MATLAB的拼图游戏设计(图文详解,附完整代码)

    基于MATLAB的拼图游戏设计内容摘要:MATLAB强大的运算和图形展示功能,使图像处理变得更加的简单和直观。本博文基于MATLAB编程语言,详细介绍了如何利用MATLAB及其图像处理函数进行经典拼图游戏设计,并通过具体方法步骤及相应代码逐步实现游戏的完美运行。(有详细步骤及代码…...

    2024/4/28 0:37:19
  8. epoll机制读取linux串口数据

    1、基本知识epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。…...

    2024/4/28 4:06:57
  9. HTML笔记一

    学习前认识 - 操作系统 操作系统(Operating System)简称OS,是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的操作系统,任何其他软件都必须要在操作系统的支持下才能运行常见的操作系统有: Windows操作系统(Windows95/98/2000/xp/vista/…...

    2024/4/21 22:27:16
  10. codeforces 547D Mike and Fish 欧拉路径

    题目链接:点击打开链接 题意: 给定二维平面上的n个点的坐标 问: 把每个点用红色或蓝色染色, 使得 水平共线(或者垂直共线)的 点 中红色与蓝色数量差不超过1. 思路: 我们建一个二部图,X集是x轴,Y集是y轴 那么点(1,5)就是 x集的 1向 y集的 5连一条边。 此时点就是用边来…...

    2024/4/21 16:49:16
  11. 硕士女程序员相亲被拒,晒出征婚条件,网友:这是花钱娶祖宗?

    现在有很多人都在追求高学历,结果导致自己年龄很大了还没有找到结婚对象,一般情况大多数剩女都选择通过相亲来寻找自己的另一半,但是对于那些高学历高智商的女生,找对象要求还是很多的。 最近有一位网友在某职场论坛晒出了自己相亲的经历,一位30岁女程序员吗,还是硕士职位…...

    2024/4/21 11:29:47
  12. 如何使用Javascript格式化数字显示

    【JsJava官方中文博客】如果你刚刚接触倒JsJava,那么你应该好好读一读《什么是JsJava》这篇文章了,如果你已经知道JsJava是什么,而且你想在自己的项目中或者公司的项目中应用,那么你将会去JsJava官方网站下载JsJava的源码包,不过目前的JsJava源码包,包含了JsJava的所有工…...

    2024/4/21 13:59:18
  13. 笔记:JavaScript(变量)

    JavaScript 1. JavaScript的组成 JavaScriptECMAScriptDOMBOM 1.1 ECMAScript ECMAScript是由ECMA国际(原欧洲计算机制造商协会)进行标准化的一门编程语言,这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMAScript语言的实现和扩展。 ECM…...

    2024/4/21 9:10:03
  14. Mac下编译Android以及goldfish内核

    虚拟机挂了,Android源代码都没了。。不准备再在虚拟机中下载Android源码了,于是就直接在Mac下编译Android。在Mac下编译Android比想象的简单多了。我的Mac系统是10.10Yousemite。安装的Xcode也是最新的7.1beta版本。下载Android源码之前要做的一步就是从硬盘中分一个区分大小…...

    2024/4/21 9:31:05
  15. JavaScript学习之路

    内容梳理ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript)。日常场合,这两个词是可以互换的。Core JavaScript(ECMAScript)语法 错误处理 类型 全局方法 原型 全局对象(Json,Array)Bro…...

    2024/4/21 4:10:27
  16. Java实现RPG游戏

    一.实验目的掌握面向对象程序设计的方法。 明确类与对象的概念,掌握面向对象设计七大原则; 掌握常见的设计模式以及类图的描述。二、UML类图三、实验要求 1.功能描述几乎所有的RPG游戏(一种源自《龙与地下城》的游戏类型)在进入游戏时都会让用户 自己来创建自己喜欢的角色…...

    2024/4/21 11:35:07
  17. 在前台页面通过js格式化时间

    我们在开发过程过,一定会用到时间存储。当然,我们的数据库也有对应存储时间的类型,对应的如果使用java,java里面也会对应的时间类型。但是,在我们页面上面有时会放我们把时间显示出来。这个时候我们就要对时间进行格式化了。格式化是时间一般能在两个地方能够格式化: 一是…...

    2024/4/21 13:59:55
  18. Typora软件安装、主题下载

    第三章 第一节 软件安装与卸载sniparseFastCapture两个软件的对比 sniparse FastCapture安装方式 直接解压 直接解压功能特点 截图、取色、贴图置顶 截图、取色、测量重点推荐 截图F1、置顶F3 取色、测量(px)Windows中常见目录字体C:\Programe File64位软件默认安装路径C:\…...

    2024/4/21 16:27:09
  19. 身边有个漂亮女程序员是种什么样的体验?

    程序员,本来就被认为是奇葩的存在了,身上自带光(biao)环(qian),说的好听的就是人傻钱多好管理,还有另一种说法就是挣得多花的少死的早,在这里心疼程序猿们一秒钟。然而除了程序猿,还有另外一种存在——程序媛,如果你觉得陌生,你可以想象她们是雌性的程序猿。可能你…...

    2024/4/21 20:25:45
  20. 深入编译器——第一部分:词法解析和Scanner(介绍ECMAScript的词法规范和TypeScript scanner)...

    1. 文章的内容和主题 我对编译器的深入了解起源于一条推特中的问题:Angular是如何用Angular预先编译器(AOT)对静态代码进行解析工作的。在进行一些debugging后,我发现AOT非常依赖TypeScript编译器,所以我开始对它进行反编译(reverse-engineer)。有趣的是,大部分编译器都…...

    2024/4/21 10:18:04

最新文章

  1. js 下载音频的实现方式

    通常下载文件我们会用到 <a> 标签&#xff0c;但是 a 标签在下载音频的时候会跳转到一个新页面进行播放&#xff0c;不会直接下载&#xff0c;这与我们的需求南辕北辙。这里我通过查询资料&#xff0c;找到了两种方式&#xff08;原理想通&#xff0c;也可以理解为一种&a…...

    2024/4/28 16:36:32
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 【虚幻引擎】C++ slate全流程开发教程

    本套课程介绍了使用我们的虚幻C去开发我们的编辑器&#xff0c;扩展我们的编辑器&#xff0c;设置我们自定义样式&#xff0c;Slate架构设计&#xff0c;自定义我们的编辑器样式&#xff0c;从基础的Slate控件到我们的布局&#xff0c;一步步的讲解我们的的Slate基础知识&#…...

    2024/4/25 7:07:32
  4. 分发饼干(C++ 贪心)

    目录 题目需求 贪心算法思想 什么是贪心 贪心算法的使用 贪心算法的优缺点 代码实现 后言 题目需求 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&…...

    2024/4/26 3:28:56
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/28 13:52:11
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/28 3:28:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/28 13:51:37
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/28 15:57:13
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57