博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018-2019学年第一学期Java课设--魔塔
阅读量:6208 次
发布时间:2019-06-21

本文共 2596 字,大约阅读时间需要 8 分钟。

目录

Magic-Towers

一、团队课程设计博客链接

  

二、个人负责模块或任务说明

 我负责Controller类

  • 玩家数据I/O流
  • 游戏内部监听器:存档、选角色、退出
  • 游戏地图数据
  • 编写团队博客

三、自己的代码提交记录截图

1233559-20190116230215666-262475669.png

1233559-20190116230252329-415958601.png

四、自己负责模块或任务详细说明

数据I/O流功能

/*游戏过程中,玩家由于各种原因需要退出终止游戏,但是还想下次继续游戏。所以设计了游戏进度的保存/读取的功能。使用了FileOutputStream、BufferedOutputStream、 ObjectOutputStream结合使用。*/public class PlayerFile {        public static final void savePlayer(Player player) {//保存玩家数据            //try-with-resource            try ( FileOutputStream out = new FileOutputStream("player.dat");                    BufferedOutputStream bout = new BufferedOutputStream(out);                    ObjectOutputStream obout = new ObjectOutputStream(bout);) {                obout.writeObject(player);            } catch (IOException e) {            }        }        public static final Player readPlayer() {//读取玩家数据            Player player = null;            try (FileInputStream in = new FileInputStream("player.dat");                    BufferedInputStream bin = new BufferedInputStream(in);                    ObjectInputStream obin = new ObjectInputStream(bin);) {                player = (Player) obin.readObject();            } catch (IOException e) {            } catch (ClassNotFoundException e) {            }            return player;        }}

游戏动作监听器功能(部分)

/**     * 人物碰触格子     */    private void contact(int x, int y) {        // 坐标对应第y行第x列        if (mapData[y][x].contact(player)) {            // 可以通过时            Component component = mapView.getComponent(x + y * 11);            // 获取该位置组件并判断是否为门            if (mapData[y][x] instanceof Door) {                mapData[y][x] = Floor.FLOOR;                inofView.update();                mainView.setVisible(true);                ((DoorView) component).show();                return;            }            mapView.remove(playerView);            mapView.add(new FloorView(), player.getX() + player.getY() * 11);            mapView.remove(x + y * 11);            mapView.add(playerView, x + y * 11);            player.setCoord(x, y);            // 通过后显示提示            showInof(x, y);                        if (mapData[y][x].getType() != Stairs.STAIRS_TYPE_DOWN_BIRTH                    && mapData[y][x].getType() != Stairs.STAIRS_TYPE_UP_BIRTH) {                mapData[y][x] = Floor.FLOOR;                player.getMapDataList().get(player.getNowFloor() - 1)[y][x] = 0;            }        } else {//不能通过            noEntryInof(x, y);        }    }

五、课程设计感想

本次课设对我来说还是比较有挑战性的,但因为对本游戏充满了兴趣,还是动力满满的完成的我所负责的部分。比较遗憾的是我们组并未完成网络或者数据库上的技术难点,不过我们组的界面以及人物动画是值得我们骄傲的,目前的游戏地图只到了10层还属于比较简易的难度,我们计划以后将地图扩展到50层,让勇士成功地营救出公主。

转载于:https://www.cnblogs.com/lmb171004/p/10280007.html

你可能感兴趣的文章
jq挑战30天——打字机效果+小程序
查看>>
Spring Cloud 学习 (五) Zuul
查看>>
正则表达式怎样匹配 不包含特定字符串的字符串
查看>>
Flex布局
查看>>
U-Mail邮件服务系统任意文件上传+执行漏洞(runtime缺陷与验证绕过)
查看>>
SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元
查看>>
Win下更新pip出现OSError:[WinError17]与PerrmissionError:[WinError5]及解决
查看>>
c# .Net 缓存 使用System.Runtime.Caching 做缓存 平滑过期,绝对过期
查看>>
【SRX】折腾了半天终于我的那对SRX210 升级到了 12.1R1.9
查看>>
【JS】我的JavaScript学习之路(2)
查看>>
Java 集合系列目录(Category)
查看>>
白盒测试目录导航
查看>>
bzoj 2296: 【POJ Challenge】随机种子
查看>>
Setuptool+pip安装
查看>>
jquery学习笔记
查看>>
51nod 1250 排列与交换——dp
查看>>
第二阶段冲刺进程6
查看>>
js二级下拉被flash档住的解决办法
查看>>
Purley平台Linpak测试,从踏坑开始一步步优化
查看>>
ORACLE 10.2.01升级10.2.05 for windows 详细文档
查看>>