- 博客(96)
- 资源 (3)
- 收藏
- 关注
原创 用Racket做一个拼图游戏——31 创建主程序
主程序是指一个计算机程序中的核心代码,通常是整个程序的最高层次,换句话说就是主函数或入口函数。进程启动后首先会运行主程序,在主程序中做一些初始化操作等,然后再根据需要调用其它模块、函数或子程序。
2024-07-16 10:25:59
289
原创 用Racket做一个拼图游戏——30 拼图画布类
拼图画布类(puzzle-canvas%)在之前做过简单介绍,也创建出基本框架,接下来对其进行扩展。
2024-07-16 10:24:08
719
原创 用Racket做一个拼图游戏——29 主框架视图控制器
在这一节里,将进入成果享受型编程模式,一方面是因为主要工作就是为了完善视图(V)部分的相应函数,另一方面是因为基本上都是使用之前模型(M)部分编程的成果来搭建。
2024-07-16 10:22:08
565
原创 用Racket做一个拼图游戏——28 创建右侧布局
这里新创建的类puzzle-canvas%的基类为canvas%,在创建类的时候同时用(super-new)初始化基类。这样就创建了一个新的类,其功能现在与canvas%一致,后边可以通过进一步添加类字段或成员函数来对其进行扩展。
2024-07-16 10:20:21
895
原创 用Racket做一个拼图游戏——25 创建行列设置组
这里使用了一种新的面板类——group-box-panel%——组框面板,它将其子窗口排在单列中,并且在面板的顶部绘制一个可选的标签,并在面板内容周围绘制一个边框,这样就创建了一个标题为label的组窗格,将指定的多个构件框起来形成一个明确的分组。与大多数面板类不同,组框面板的水平和垂直边距默认为 2 (像素)。
2024-07-16 10:14:24
896
原创 用Racket做一个拼图游戏——24 创建命令功能区
这里同样使用了竖向面板。除了利用两个函数建立两个视图区外,最后还定义了一个按钮类button%对象。
2024-07-16 10:12:28
910
原创 用Racket做一个拼图游戏——23 创建左侧布局
由以上代码可以看出,左侧布局创建了一个竖向面板vertical-panel%的实例,并以此为父级创建了三个对象:一个画布实例canvas/target、一个命令区、一个状态显示区,它们三者是并列关系,形成竖向排列。
2024-07-16 10:10:19
641
原创 用Racket做一个拼图游戏——20 规划布局
在实际应用中,不一定采用上边的方式创建GUI程序。为了方便程序的控制,可能会将创建和定义分开,即将控件的实例值标识在程序模块开始的时候集中进行定义(值暂时设置为void),在后边分别分级创建空间实例并设置给对应值标识。这样就可以只定义需要执行操作的控件标识(如按钮、画布、字段框等),而不进行操作的控件则不用专门定义标识(如窗格、面板、信息框等),程序逻辑性更强,代码更简洁,也方便按控件之间的逻辑关系进行并列、嵌套创建(后边可以看到)。
2024-07-15 10:06:50
691
原创 用Racket做一个拼图游戏——19 定义主视图框架
之前基本上完成了拼图的数据准备工作,已经可以通过程序对拼图切块并自由拼合。接下来做一些人机交互的界面,以方便客户使用。Racket提供了专供人机交互编程的racket/gui语言工具箱来完成图形界面程序。
2024-07-15 10:03:52
515
原创 用Racket做一个拼图游戏——18 汇总提供标识
有一个问题是,模块外部最好是直接调用所提供标识的模块内的提供值,而不管其实现方式,否则每次就要将模块内代码阅读明白,显然这是不现实的。因此,Racket提供了合约对提供设置进行限制说明。
2024-07-15 10:01:40
1014
原创 用Racket做一个拼图游戏——15 初始化拼图数据、16 恢复拼图初始状态、17 判断是否成功完成拼图
前面各节将拼图会用到的图形操作的各个方面都设计完了。还需要为用户设置一个默认的初始环境,以避免用户打开软件后面对空白的界面懵圈。
2024-07-15 09:57:04
685
原创 用Racket做一个拼图游戏——14 操作id
谈到互动操作,往往都绕不过一个话题,就是对象,而每个对象要进行区分,必然需要一个标识,对于有规律的对象,往往采用编号来做标识,这就是id(identification,身份,身份象征等)。
2024-07-15 09:53:42
732
原创 用Racket做一个拼图游戏——11 将单元格列表转换为散列表
考虑到后续可能出现单元格混合、内容修改等,为了方便,实际使用的时候采用散列表来存储分割的单元格数据,这样就可以分别修改它的键或值来改变单元格属性(如当前位置)了。
2024-07-15 08:59:43
454
原创 用Racket做一个拼图游戏——10 分割图片到单元格列表
一个列表是一个序对的组合,它创建一个链表。更确切地说,一个列表要么是空列表null,要么是个序对。是序对时,其第一个值是一个列表元素,第二个值是一个列表。一个序对是两个任意值的有序组合。
2024-07-15 08:57:35
728
原创 用Racket做一个拼图游戏——9 生成单元格数据
现在可以把分割出的图片作为数据进行整理,以便后边使用。考虑到拼图存在混合单元格的操作,需要记录初始时的单元格位置,同时也需要记录混合后的单元格位置,另外还要考虑记录当前操作的单元格位置。
2024-07-15 08:55:39
664
原创 用Racket做一个拼图游戏——8 按行列分割图片
这一节,我们把调整好尺寸的图片分割成指定的rows行,columns列,每个行列单元格都存储一张分割后的小图片,需要的时候直接取出来使用即可。
2024-07-15 08:53:13
732
原创 用Racket做一个拼图游戏——7 调整显示图片大小
前面我们取得了我们需要的源图片,也取得了我们调整的图片大小,接下来我们就将源图片调整到我们需要的大小。
2024-07-15 08:51:18
557
原创 用Racket做一个拼图游戏——6 设置图片尺寸
前面小节我们把图片读入了计算机内存中。但是,我们读取的图片并不一定是我们需要的大小。"set-picture-size!"将源图片调整到给定的大小,这样无论是进行统一规范的处理或者是在屏幕上显示都是定尺寸的、可控的。因此,我们首先要让程序获得图片需要的大小。
2024-07-15 08:48:48
914
原创 用Racket做一个拼图游戏——5 取得源图片
它也不是其它语言里所说的变量,因为Racket的标识只是对值的绑定,并不是随时可变的符号(当然,上边用副作用函数set!如上一节所述,从本节开始,后边写的有关操作图片的函数都属于模型的内容,把它们都写道一个文件里,文件名命名为“puzzle-model.rkt”。计算机中图片是以二进制格式的文件存储的。是标识,从上边的描述可以看出,函数也是采用标识的(非匿名函数),因此函数是可以作为函数的参数进行传递的。首先,我们要拼的图片是保存在计算机的存储介质中的(比如硬盘等),要操作图片,首先得把图片读入内存中。
2024-07-15 08:43:33
949
原创 用Racket做一个拼图游戏——4 实现工具
Racket作为Lisp语言的一个分支,拥有强大的编程逻辑构建能力,其强大的宏构建能力更是让他成为了创建语言的语言。Racket在原Scheme简洁的基础上得到更广泛的发展,在系统编程、图形界面编程、网络编程等均有不俗的表现。经常遇到一些朋友提问说能用Racket做什么?如何用Racket做桌面GUI应用程序?本文通过一个拼图游戏的构建,展示如何从0开始用Racket完成一个桌面GUI游戏程序,其间涵盖了Racket做桌面应用的主要功能,同时也可以作为Racket入门的读物。
2024-07-10 15:20:16
989
原创 OPAMC架构介绍
OPAMC架构使用对象(绘图对象,O)、属性(对象属性,P)、行为(对象行为,A)、管理器(M)、协调器(C)五个概念,将绘图对象的属性采用组合方式进行数据组织,即一切皆属性,实现面向数据编程。而在处理具体的行为、管理、协调时,采用面向对象(OOP)进行封装。
2024-06-07 23:25:33
1031
翻译 Racket编程指南——4 表达式和定义(八)
https://docs.racket-lang.org/guide/scheme-forms.html
2022-11-16 21:37:07
304
翻译 Racket编程指南——4 表达式和定义(七)
本指南适用于新接触Racket的程序员或部分了解Racket的程序员。本指南假定你是有编程经验的。
2022-11-16 21:30:49
168
翻译 Racket编程指南——4 表达式和定义(六)
本指南适用于新接触Racket的程序员或部分了解Racket的程序员。本指南假定你是有编程经验的。
2022-11-16 21:27:42
206
翻译 Racket编程指南——4 表达式和定义(四)
本指南适用于新接触Racket的程序员或部分了解Racket的程序员。本指南假定你是有编程经验的。
2022-11-16 21:23:10
271
翻译 Racket编程指南——4 表达式和定义(三)
本指南适用于新接触Racket的程序员或部分了解Racket的程序员。本指南假定你是有编程经验的。
2022-11-16 21:21:49
330
翻译 Racket编程指南——4 表达式和定义(二)
本指南适用于新接触Racket的程序员或部分了解Racket的程序员。本指南假定你是有编程经验的。
2022-11-16 21:13:17
300
翻译 Racket编程指南——4 表达式和定义(五)
本指南适用于新接触Racket的程序员或部分了解Racket的程序员。本指南假定你是有编程经验的。
2022-11-16 21:00:30
440
原创 用Racket做一个拼图游戏——1 前言、2 设计目标、3 设计思路
经常遇到一些朋友提问说能用Racket做什么?如何用Racket做桌面GUI应用程序?本文通过一个拼图游戏的构建,展示如何从0开始用Racket完成一个桌面GUI游戏程序,其间涵盖了Racket做桌面应用的主要功能,同时也可以作为Racket入门的读物。
2022-10-07 10:18:36
1297
artascope.zip
2020-03-19
real-time-display.zip
2020-03-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人