【源码+文档】微机原理汇编课设:五子棋游戏程序

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

设计思路

整体架构

本次课程设计我们小组完成了8086汇编实现的带有图形界面的五子棋游戏程序。我们实现的核心功能有人机对战、联机对战。我们的程序主要分为两个部分:汇编游戏框架和五子棋游戏设计。

 

我们发现,使用汇编语言,在8086 PC上实现五子棋,比起在现代的软硬件设施上,要困难很多。我们没有各式图形框架甚至游戏框架的支撑,如OpenGL、Unity等,因此渲染图形必须从显存绘制像素点这个层次开始考虑。其次,汇编语言本身相比高级语言更加底层,因此虽然具有更好的灵活性和更大的性能提升空间,但是会在编程中给人带来额外的心智负担,如需要考虑寄存器分配,需要考虑选择哪一种指令更高效,需要考虑如何把乘法优化为加法和移位运算等等。再者,DOS虽然是一个操作系统,但比起现代操作系统的层层抽象,DOS本身的系统调用功能较为局限。因此许多特殊功能,比如串口通信、定时器配置等等,我们仍然需要直接同8259中断控制器芯片、8254定时器芯片、8250串口芯片等一系列外设直接打交道。而另一方面,我们又不能因此过多牺牲游戏本身的设计,如游戏的交互逻辑,游戏的界面等等。如何实现“鱼和熊掌兼得“?

我们解决方案是将系统划分为两个抽象层次。一个是游戏框架层次,一个是游戏设计层次。两个层次虽然都使用汇编语言实现,但是每个层次解决的核心问题不一样。游戏框架层重点解决如何协调系统各个部分运行,提供图元渲染机制,并同各种外设打交道的底层问题——怎么处理键盘或者串口接收中断?怎么通过配置定时器芯片的频率来发出不同音调的声音?怎么通过操控显存来绘制图元?等。而游戏设计层重点解决游戏的界面设计以及交互逻辑设计——游戏由哪些视/听觉元素构成?这些视/听觉元素的出现、消失、动画等是通过何种逻辑,在外部事件(如键盘输入)的驱动下来进行控制的?如何设计AI算法?等。每个层次都由专门的

Unity Android 平台适配:Java/Kotlin 与 Unity 跨语言交互实战 剖析 Unity 与 Android 交互的 JNI 桥接机制:一次 Call 背后是查类、查方法加双向封送的多次往返,local reference 表溢出是隐形炸弹。文章给出双向调用完整示例、AndroidJavaProxy 回调选型、三条线程规则与 AAR 加 Gradle 的工程化上架清单。 阅读详情

相关推荐

Unity GameObject 核心机制深度解析:从底层结构到工程实践

从底层机制讲透 Unity GameObject:托管壳加原生芯的双层对象模型如何制造假 null 陷阱、Transform 层级与组件通信的原理、生命周期回调的确切顺序。文章同时给出 Instantiate 成本分析与对象池等高频场景的工程实践。

游戏人生 8

LLVM后端AsmPrinter深度拆解:一条MachineInstr是怎么变成汇编字符串的?

│ (CodeGen 最终输出) │││ 遍历 BB → 遍历 MI │││ ├─ 判断是否伪指令 │││ ││ (汇编输出 .s) │ │ (目标文件 .o) ││ ││ printInstruction() │ │ 编码为机器码 │││ TableGen 生成的 ││ printXXX() 函数 ││▼LLVM 的 AsmPrinter 实际上是一个"翻译层"——它不生成指令,也不优化代码,它的唯一工作就是把 CodeGen 产出的。

喜欢打篮球的普通人 326

Unity 资源管理模块计:从加载策略到引用计数全解析

以真实内存事故复盘切入,讲透 Unity 资源管理模块的闭环计:AssetBundle 元数据与对象两步加载、依赖拓扑序与同名请求合并、引用计数生命周期,以及异步加载与对象池。文章同时给出可直接落地的中央注册表实现与真机长时内存验证方法。

游戏人生 15

汇编中的减法与补码转换奥秘

本文介绍了计算机中减法运算的实现原理,指出虽然计算机硬件主要执行加法操作,但可以通过补码机制将减法转换为加法。具体转换公式为:y的补码等于其反码加1,即-y = y(补)。文中提供了一个C语言示例程序,演示了包含减法的运算过程,并给出了对应的汇编代码实现(包括mingw64、msvc64和32位版本)。汇编代码显示,减法操作实际上是通过补码加法来实现的,验证了补码转换的理论。该示例展示了高级语言减法运算在底层汇编中的实现方式,体现了计算机体系结构中补码运算的核心作用。

vip文章私信我(我文章全免费),或者https://www.cnblogs.com/himobrine已经搬运到博客园 192

Unity3D(Unity)跨平台游戏引擎简介

Unity3D是一款功能强大的跨平台游戏引擎,由Unity Technologies开发。它整合了渲染引擎、物理系统、动画工具等核心组件,支持2D/3D游戏开发及VR/AR等实时交互应用。主要特点包括:可视化编辑器、C#脚本编程、丰富的资源商店和强大的跨平台发布能力(支持移动端/主机/PC等20+平台)。Unity显著降低了开发门槛,特别适合中小团队,在移动游戏和独立游戏领域应用广泛。虽然存在包体优化等挑战,但其高效的工作流程和完整的生态体系使其成为游戏开发的主流选择之一。

Zhang Phil 411

UnityCsReference——笔记

Unity 的核心引擎主要由 C++ 实现,但开发者日常写的几乎全是 C#。这中间隔着一层怎样的桥梁?这个仓库把 C# 世界完整摊开在我们面前——类型定义、公开接口、托管逻辑、原生绑定声明,以及部分编辑器和模块代码。这篇文章不逐文件罗列代码,而是通过几条代表性源码线索,建立一张架构地图:C# API 如何连接 C++,Unity 对象为什么有托管包装和原生实体两层,协程与如何暂停和恢复,以及 Task、Job System 和 NativeArray 各自负责什么。

lastXuanGod的博客 352

Unity 物理材质解析:摩擦弹性参数、组合模式与手感调校

解析 Unity 物理材质的完整机制:库仑摩擦模型的静动摩擦语义与恢复系数的能量含义、四种 Combine 模式的组合行为与典型场景选择、冰面弹球等真实玩法的调参套路,以及材质资产复用、静态合并与 CCD 配置等工程实践。

游戏人生 27

Unity Event 系统深度解析:从序列化到原生层回调全链路

拆解 UnityEvent 从序列化到派发的完整链路:Persistent Call 走 YAML 序列化加反射调用,Runtime Call 走委托列表,Invoke 前快照拷贝保证遍历安全。文章澄清「组件销毁自动移除监听」的谣言,并给出高频事件选型与五大踩坑的避坑指南。

游戏人生 21

Unity 脚本层与原生引擎层分离架构:原理、实现与工程实践

解析 Unity 脚本层与原生引擎层分离架构的底层链路:四层金字塔分工、Mono 与 IL2CPP 的 JIT/AOT 差异、ICall 桥接与参数封送机制。文章同时给出批量跨边界调用、NativeArray 零拷贝、增量式 GC 与域重载安全等工程实践。

游戏人生 112

Unity 跨平台开发:基于平台特性的资源与性能优化实战

解析 Unity 跨平台开发中平台特性驱动的资源与性能优化:从 Mono/IL2CPP 后端差异讲起,拆解 PC、移动端、主机与 WebGL 在显存模型、带宽与内存配额上的本质区别。文章同时给出压缩纹理分流、Addressables 动态卸载与 Profiler 真机验证的完整工程闭环。

游戏人生 23

不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎

《三维GIS引擎自研之路:为何放弃UE/Unity,从零构建国产化解决方案》 本文从业务视角阐述了自研三维GIS渲染引擎的必要性及技术路径。针对UE/Unity等商业引擎存在的三大核心问题——国外技术授权风险、原生GIS能力不足、国产化适配困难,团队选择了完全自主可控的技术路线。AI3DGIS3.0采用四层架构计:数据层实现全球级地理数据的流式加载,渲染层自主开发核心图形管线,交互层处理复杂空间操作,应用层封装专业GIS功能。研发过程中攻克了地形LOD调度、倾斜摄影优化、国产GPU适配等关键技术难题,最终

DYCXKJCD的博客 173

unity基于Socket的网络学习

一般来说只有服务器需要监听socket,因为服务器其实作为中转站,中转的不只是聊天消息,更是游戏逻辑,移动,战斗,两个客户端都需要主动连接到服务器,所有数据传输都需要通过服务器,这也是避免一个客户端直接将数据传输到另一个客户端避开服务器的外挂检测,所以客户端不需要监听,只需要主动连接服务器就行。这就是一个简单的写在服务器上的程序,作用是监听客户端发送来的链接,然后分配socket进行通讯,接受到客户端的通讯后在向客户端发送通讯告知已接收到消息,断开双方链接,关闭socket,关闭服务器监听。

2401_84659046的博客 209

Unity 渲染系统的跨平台抽象层计与源码解析

解析 Unity 渲染抽象层如何抹平 DirectX、Metal、Vulkan 三套图形 API 在对象模型、资源绑定与命令提交上的差异:句柄化资源模型、着色器中间表示跨编译、渲染线程延迟提交三大核心机制。文章同时给出变体预算管理与 CommandBuffer/SRP 安全区的工程实践。

游戏人生 138

Unity2021.3.35在Android下请求位置权限

Unity3d Android下请求权限官方。

zouxin_88的专栏 227

Unity 中 C++ 底层模块与 Native Plugin 开发实践

解析 Unity 的 C++ 与 C# 双层架构:C++ 承担渲染物理动画等性能关键模块的原因、extern C 导出与 DllImport 桥接机制、IL2CPP 的 AOT 转译路径,以及 Native Plugin 的函数签名对齐、平台产物编译、内存所有权规则与性能下沉决策等开发实践。

游戏人生 105

Unity 跨平台架构:通用性与平台最优性能的权衡

剖析 Unity 跨平台抽象层的结构性代价:通用指令流封住渲染路径上限、内存与 IO 的平台物理差异、CPU 调度与大小核的隐蔽损耗。文章同时给出渲染管线分级、Addressables 资源双轨加载、平台分支白名单与性能预算 CI 守门等工程平衡方案。

游戏人生 13

Unity 跨平台引擎适配:从分层计到工程落地

阐述引擎平台适配的架构方法论:用接口加工厂把平台差异圈进最底层 Provider,宏只在编译期做零开销分发,并直面异步 IO 模型、沙盒路径、StreamingAssets 读取等系统级差异。文章同时给出 JNI 单次往返封装、真机测试矩阵与第三方库选型等工程清单。

游戏人生 25

Unity性能优化系列置篇 - URP 移动端置基线与分档策略

性能优化系列 · 置篇。一句话摘要:移动端不要一套 URP 配置跑到底,先按高中低备分档,再决定 HDR、阴影、后处理这些开关在哪些档位保留。每个置先看官方三档,再弄清它做什么、性能消耗在哪里、关掉画面会不会差;项目没用到、或者中低端吃紧,就按档位牺牲掉

shaobing32的博客 286
上一篇: 【源码+文档】基于java实现的区块链金融系统
下一篇: 【源码+文档】火车售票系统
yuxibdd
博客等级 码龄16年 44粉丝 · 234原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值