- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京邮电大学_智能卡实验报告
智能卡实验报告需求分析身份反馈:收到00 a0 00 00 00 0f时反馈由十位学号及6位的姓名组成的代码,所以我的是:2013211209C1F5B2A9CEC5。初始化:创立3X3棋盘存储空间(9位数组)默认存储为00,人下棋存储为01,电脑下棋存储为02。确定先后手:确定是人或机器先下。下棋过程:人将存储空间中数据更改为1,计算机将存储空间中数据更改为2。判断棋局情况:判断此时棋局状态为哪一方胜、和棋或者尚未完成。纠错机制:已下过棋子的位置,不允许重复落子。结束:当判断棋局状态为哪一方胜或者和棋时,游戏结束。设计系统结构图子程序流程图 身份反馈流程图 初始化流程图 人类先手流程图 人类后手流程图APDU命令设计表1 APDU命令设计功能CLAINSP1P2LCDATALE返回值身份反馈00a00000——102013211209C1F5B2A9CEC5初始化00a10300/01——0200 90 00—成功 电脑先手选0009 90 00—成功 人先手63 01—初始化失败下棋00a200-0800——0203 9000 成功落子未完01 9000 成功落子人赢了—02 9000 成功落子电脑赢了00 9000 成功落子和局 —6301 落子失败打印棋盘00a30000——080x 0x 0x 0x 0x 0x 0x 0x 0x 棋盘情况 测试数据选中/select 627570742e67616d652e31选中身份反馈/send 00a0000010身份反馈初始化/send 00a1030002初始化棋盘并人先手/send 00a1030102初始化棋盘并AI先手落字/send 00a2000002落字到左上角/send 00a2010002落字到第一行中间/send 00a2020002落字到右上角/send 00a2030002落字到中间靠左/send 00a2040002落字到中心/send 00a2050002落字到中间靠右/send 00a2060002落字到左下角/send 00a2070002落字到最后一行中心/send 00a2080002落字到右下角 打印棋盘/send 00a3000008关键代码游戏初始化模块: private void init(APDU apdu){byte[] buffer = apdu.getBuffer();//棋盘维数——报错if(buffer[ISO7816.OFFSET_P1] != (byte)0x03){ISOException.throwIt(WRONG_P1);}//先后手——报错if(buffer[ISO7816.OFFSET_P2] != (byte)0x01){if(buffer[ISO7816.OFFSET_P2] != (byte)0x00)ISOException.throwIt(WRONG_P2);} //将临时变量放进RAMboard=JCSystem.makeTransientByteArray((short) 9,JCSystem.CLEAR_ON_DESELECT);order=JCSystem.makeTransientByteArray((short)1,JCSystem.CLEAR_ON_DESELECT)[0];turn=JCSystem.makeTransientByteArray((short)1,JCSystem.CLEAR_ON_DESELECT)[0]; depth=JCSystem.makeTransientByteArray((short)1,JCSystem.CLEAR_ON_DESELECT)[0]; answer=JCSystem.makeTransientByteArray((short)1,JCSystem.CLEAR_ON_DESELECT)[0]; result=JCSystem.makeTransientByteArray((short)1,JCSystem.CLEAR_ON_DESELECT)[0]; this.board[0]=(byte)0x00;this.board[1]=(byte)0x00;this.board[2]=(byte)0x00;this.board[3]=(byte)0x00;this.board[4]=(byte)0x00;this.board[5]=(byte)0x00;this.board[6]=(byte)0x00;this.board[7]=(byte)0x00;this.board[8]=(byte)0x00; this.depth=(byte)0x09; this.order=(byte)0x09; this.turn=(byte)
文档评论(0)