新闻中心

EEPW首页 > 电源与新能源 > 设计应用 > 基于FPGA的M2M异构虚拟化系统(三)

基于FPGA的M2M异构虚拟化系统(三)

作者: 时间:2018-08-31 来源:网络 收藏

本文引用地址:https://www.eepw.com.cn/article/201808/388221.htm

  4.3.2.应用程序设计与实现

  4.3.2.1.基于MIPS汇编语言的俄罗斯方块游戏设计

  开发环境:自己编写的MIPS汇编器AssemblerForRS-232.jar,MIPS汇编语言源文件in.asm,安装jre或jdk并配置好环境变量的windows XP及以上的操作系统。

  程序流程:

  

  图 47 俄罗斯方块程序流程图

  主要模块:

  start函数

  参数:无

  功能:游戏的主体框架,作用类似main函数

  说明:内部调用Tetris、tetris_clr、wait_key、start_enter等函数,构成整个游戏的主体框架。

  Tetris函数

  参数:无

  功能:游戏的逻辑控制主体

  说明:调用各种初始化函数、俄罗斯方块的生成函数和运动函数、玩家键盘控制函数、各种信息显示函数,实现游戏的所有逻辑。

  ini_boarder函数

  参数:无

  功能:画俄罗斯方块运行的左右边界

  说明:初始化游戏时使用

  set_bottom函数

  参数:无

  功能:画俄罗斯方块运行的下边界

  说明:初始化游戏时使用

  info函数类

  函数类:info_help、info_next、info_fail

  参数:无

  功能:显示各种信息

  说明:在初始化游戏界面时调用info_help显示帮助信息;调用info_next在屏幕左上角显示下一个即将下落的方块的形状和颜色,当游戏失败时调用info_fail提醒玩家。

  check_key函数

  参数:输出参数$v0和$v1

  功能:检查是否有键按下

  说明:键盘无键按下时$v0=0;否则$v0=1,$v1=键值

  chk_dlt函数

  参数:输出参数$v0

  功能:检查并删除满行

  说明:检测每一行是否已摆满方块,如果摆满则将其删除。返回值$v0为删除的满行数。

  detect_collision函数

  参数:输出参数$v0

  功能:检查是否有方块冲突

  说明:如果有冲突则返回$v0=2

  null_loop函数

  参数:输入参数$a0

  功能:空循环,用于延时

  说明:$a0=0,表示长延时;$a0=1表示短延时

  get_next_seq函数

  参数:输入参数$a3、输出参数$v0

  功能:根据当前方块的形状,得到下一个方块的形状

  说明:输入$a3当前形状的序列号,返回$v0下一个方块的形状的序列号

  draw_pic函数类

  函数类:pre_draw_pic类、un_pre_draw_pic类、draw_pic类

  参数:输入参数$a0和$a2

  功能:根据方块现在的位置和接下来的位置来画方块

  说明:输入参数$a0是当前位置,$a2是方块将要移动的位置

  4.3.2.2.基于C语言的吃豆子游戏设计

  开发环境:自己编写的硬件系统模拟器SimulatorForV5.jar,自己编写的内存填充工具MemoryFilling.jar,自己编写的硬件内存分配文件memory.bin,Gcc编译环境,严格的简单的C语言程序源文件user.c,安装jre或jdk并配置好环境变量的windows XP及以上的操作系统。

  程序流程:

  

  图 48吃豆子程序流程图

  主要模块:

  start_game函数

  原型:void start_game();

  功能:游戏程序的逻辑主函数

  说明:控制packman的运动,两个怪物的简单智能移动,检查游戏的终止条件,判断键盘输入并做相应的响应

  init_game函数

  原型:void init_game();

  功能:初始化游戏的全局变量

  说明:每次游戏重新开始时,需要调用该函数进行全局变量的初始化

  check_catch函数

  原型:int check_catch()

  功能:检测packman是否被怪物抓到

  说明:如果被抓到返回1,否则返回0

  check_collision函数

  原型:int check_collision()

  功能:检测两个怪物是否有冲突

  说明:如果有则返回1,否则返回0



关键词:

评论


相关推荐

技术专区

关闭