# C-CourseProject **Repository Path**: caesar_jin/c-course-project ## Basic Information - **Project Name**: C-CourseProject - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-04-29 - **Last Updated**: 2024-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C-CourseProject ## 1. 前言 本项目为《高级语言程序设计》大作业的Demo。其目的是为四个大作业提供界面显示以及交互功能,一方面为学员提供图形界面开发的基础范例,让同学可以了解其相关的基本概念,另一方面为学员搭建好的基础程序框架,可以让同学们快速入门,并且更加关注于大作业逻辑部分的开发。 本项目版权所述Nudt《高级语言程序设计》课程组。 ### 1.1 软件架构 人机交互界面使用easyX库开发,包括界面显示和处理鼠标事件。界面显示以及鼠标事件的捕获都封装在线程函数中,由一个子线程负责运行。因此逻辑部分和人机交互部分实现了解耦,主线程和子线程之间的数据共享通过全局变量进行。值得一提的是,在本应用中通过 **全局变量进行线程间数据共享均没有使用互斥锁等机制排除竞争**,这是基于对本程序的实际应用情况进行的综合评估给出的合理方案。 尽管easyX是一个面向C++的图形绘图库,但是easyX库本身的目的就是为高校学生学习而开发的,因此其具有简洁、易用的特性。特别是,其绘图功能均封装成API函数,使用起来并不需要用户掌握C++的太多知识,对于目前仅掌握C语言知识的同学来说是足够的,它完全不妨碍我们使用纯C语法来开发图形界面程序。并且,为了兼顾同学的现有知识,本框架的封装均使用标准C语法来实现,并没有参考网络上大多数博主动辄采用类的方式来编写界面代码。因此,本框架本身的代码非常值得同学们阅读和学习。这里面涉及了指针、结构体、函数、变量的作用域、分文件式的模块化程序设计等,学习这些代码有助于学员进一步巩固知识。 ### 1.2 环境配置 本框架依赖于easyX库。easyX库文件和文档手册均在本仓库中。 easyX库的安装请参考博客:https://blog.csdn.net/hold_time/article/details/128957381。其基本思路就是将easyX的库文件拷贝到codeblocks的对应目录中。 ### 1.3 工程的创建(参考博客) 注意需要创建一个C++工程,这需要再创建工程时选择C++语言,并且在创建工程后的 **编译** 选项中添加链接 **-leasyX** 。 ### 1.4 工程目录 在仓库根目录下有chess, wargame, robot, map四个目录,他们对应了四个作业题,不出意外,他们应该能直接编译运行。 ## 2 围棋小程序