拼图游戏
文章平均质量分 83
OnRoadZy
真正的人生在路上。
爱好编程,喜欢Racket!
展开
-
用Racket做一个拼图游戏——33 知识点
拼图游戏知识点。原创 2024-07-16 10:30:06 · 911 阅读 · 0 评论 -
用Racket做一个拼图游戏——32 创建可执行程序
主程序完成,接下来就可以感受游戏带来的乐趣了。原创 2024-07-16 10:28:05 · 539 阅读 · 0 评论 -
用Racket做一个拼图游戏——31 创建主程序
主程序是指一个计算机程序中的核心代码,通常是整个程序的最高层次,换句话说就是主函数或入口函数。进程启动后首先会运行主程序,在主程序中做一些初始化操作等,然后再根据需要调用其它模块、函数或子程序。原创 2024-07-16 10:25:59 · 268 阅读 · 0 评论 -
用Racket做一个拼图游戏——30 拼图画布类
拼图画布类(puzzle-canvas%)在之前做过简单介绍,也创建出基本框架,接下来对其进行扩展。原创 2024-07-16 10:24:08 · 694 阅读 · 0 评论 -
用Racket做一个拼图游戏——29 主框架视图控制器
在这一节里,将进入成果享受型编程模式,一方面是因为主要工作就是为了完善视图(V)部分的相应函数,另一方面是因为基本上都是使用之前模型(M)部分编程的成果来搭建。原创 2024-07-16 10:22:08 · 542 阅读 · 0 评论 -
用Racket做一个拼图游戏——28 创建右侧布局
这里新创建的类puzzle-canvas%的基类为canvas%,在创建类的时候同时用(super-new)初始化基类。这样就创建了一个新的类,其功能现在与canvas%一致,后边可以通过进一步添加类字段或成员函数来对其进行扩展。原创 2024-07-16 10:20:21 · 857 阅读 · 0 评论 -
用Racket做一个拼图游戏——27 创建状态显示区
信息控件message%用来显示基本的状态信息。原创 2024-07-16 10:18:10 · 255 阅读 · 0 评论 -
用Racket做一个拼图游戏——26 创建拼图命令按钮组
这里在定义组框里的构件时,采用了和之前完全不同的方式。原创 2024-07-16 10:16:22 · 534 阅读 · 0 评论 -
用Racket做一个拼图游戏——25 创建行列设置组
这里使用了一种新的面板类——group-box-panel%——组框面板,它将其子窗口排在单列中,并且在面板的顶部绘制一个可选的标签,并在面板内容周围绘制一个边框,这样就创建了一个标题为label的组窗格,将指定的多个构件框起来形成一个明确的分组。与大多数面板类不同,组框面板的水平和垂直边距默认为 2 (像素)。原创 2024-07-16 10:14:24 · 873 阅读 · 0 评论 -
用Racket做一个拼图游戏——24 创建命令功能区
这里同样使用了竖向面板。除了利用两个函数建立两个视图区外,最后还定义了一个按钮类button%对象。原创 2024-07-16 10:12:28 · 896 阅读 · 0 评论 -
用Racket做一个拼图游戏——23 创建左侧布局
由以上代码可以看出,左侧布局创建了一个竖向面板vertical-panel%的实例,并以此为父级创建了三个对象:一个画布实例canvas/target、一个命令区、一个状态显示区,它们三者是并列关系,形成竖向排列。原创 2024-07-16 10:10:19 · 609 阅读 · 0 评论 -
用Racket做一个拼图游戏——22 创建窗口布局
创建窗口布局原创 2024-07-15 10:12:25 · 404 阅读 · 0 评论 -
用Racket做一个拼图游戏——21 创建主窗口
根据上边介绍,把之前定义的main-frame代码进行扩展。原创 2024-07-15 10:10:35 · 249 阅读 · 0 评论 -
用Racket做一个拼图游戏——20 规划布局
在实际应用中,不一定采用上边的方式创建GUI程序。为了方便程序的控制,可能会将创建和定义分开,即将控件的实例值标识在程序模块开始的时候集中进行定义(值暂时设置为void),在后边分别分级创建空间实例并设置给对应值标识。这样就可以只定义需要执行操作的控件标识(如按钮、画布、字段框等),而不进行操作的控件则不用专门定义标识(如窗格、面板、信息框等),程序逻辑性更强,代码更简洁,也方便按控件之间的逻辑关系进行并列、嵌套创建(后边可以看到)。原创 2024-07-15 10:06:50 · 667 阅读 · 0 评论 -
用Racket做一个拼图游戏——19 定义主视图框架
之前基本上完成了拼图的数据准备工作,已经可以通过程序对拼图切块并自由拼合。接下来做一些人机交互的界面,以方便客户使用。Racket提供了专供人机交互编程的racket/gui语言工具箱来完成图形界面程序。原创 2024-07-15 10:03:52 · 474 阅读 · 0 评论 -
用Racket做一个拼图游戏——18 汇总提供标识
有一个问题是,模块外部最好是直接调用所提供标识的模块内的提供值,而不管其实现方式,否则每次就要将模块内代码阅读明白,显然这是不现实的。因此,Racket提供了合约对提供设置进行限制说明。原创 2024-07-15 10:01:40 · 938 阅读 · 0 评论 -
用Racket做一个拼图游戏——15 初始化拼图数据、16 恢复拼图初始状态、17 判断是否成功完成拼图
前面各节将拼图会用到的图形操作的各个方面都设计完了。还需要为用户设置一个默认的初始环境,以避免用户打开软件后面对空白的界面懵圈。原创 2024-07-15 09:57:04 · 657 阅读 · 0 评论 -
用Racket做一个拼图游戏——14 操作id
谈到互动操作,往往都绕不过一个话题,就是对象,而每个对象要进行区分,必然需要一个标识,对于有规律的对象,往往采用编号来做标识,这就是id(identification,身份,身份象征等)。原创 2024-07-15 09:53:42 · 705 阅读 · 0 评论 -
用Racket做一个拼图游戏——12 混合单元格
为了混合单元格,需要能够将表中的任意两个单元格进行调换。原创 2024-07-15 09:01:57 · 918 阅读 · 0 评论 -
用Racket做一个拼图游戏——11 将单元格列表转换为散列表
考虑到后续可能出现单元格混合、内容修改等,为了方便,实际使用的时候采用散列表来存储分割的单元格数据,这样就可以分别修改它的键或值来改变单元格属性(如当前位置)了。原创 2024-07-15 08:59:43 · 420 阅读 · 0 评论 -
用Racket做一个拼图游戏——10 分割图片到单元格列表
一个列表是一个序对的组合,它创建一个链表。更确切地说,一个列表要么是空列表null,要么是个序对。是序对时,其第一个值是一个列表元素,第二个值是一个列表。一个序对是两个任意值的有序组合。原创 2024-07-15 08:57:35 · 700 阅读 · 0 评论 -
用Racket做一个拼图游戏——9 生成单元格数据
现在可以把分割出的图片作为数据进行整理,以便后边使用。考虑到拼图存在混合单元格的操作,需要记录初始时的单元格位置,同时也需要记录混合后的单元格位置,另外还要考虑记录当前操作的单元格位置。原创 2024-07-15 08:55:39 · 641 阅读 · 0 评论 -
用Racket做一个拼图游戏——8 按行列分割图片
这一节,我们把调整好尺寸的图片分割成指定的rows行,columns列,每个行列单元格都存储一张分割后的小图片,需要的时候直接取出来使用即可。原创 2024-07-15 08:53:13 · 706 阅读 · 0 评论 -
用Racket做一个拼图游戏——7 调整显示图片大小
前面我们取得了我们需要的源图片,也取得了我们调整的图片大小,接下来我们就将源图片调整到我们需要的大小。原创 2024-07-15 08:51:18 · 531 阅读 · 0 评论 -
用Racket做一个拼图游戏——6 设置图片尺寸
前面小节我们把图片读入了计算机内存中。但是,我们读取的图片并不一定是我们需要的大小。"set-picture-size!"将源图片调整到给定的大小,这样无论是进行统一规范的处理或者是在屏幕上显示都是定尺寸的、可控的。因此,我们首先要让程序获得图片需要的大小。原创 2024-07-15 08:48:48 · 872 阅读 · 0 评论 -
用Racket做一个拼图游戏——5 取得源图片
它也不是其它语言里所说的变量,因为Racket的标识只是对值的绑定,并不是随时可变的符号(当然,上边用副作用函数set!如上一节所述,从本节开始,后边写的有关操作图片的函数都属于模型的内容,把它们都写道一个文件里,文件名命名为“puzzle-model.rkt”。计算机中图片是以二进制格式的文件存储的。是标识,从上边的描述可以看出,函数也是采用标识的(非匿名函数),因此函数是可以作为函数的参数进行传递的。首先,我们要拼的图片是保存在计算机的存储介质中的(比如硬盘等),要操作图片,首先得把图片读入内存中。原创 2024-07-15 08:43:33 · 922 阅读 · 0 评论 -
用Racket做一个拼图游戏——4 实现工具
Racket作为Lisp语言的一个分支,拥有强大的编程逻辑构建能力,其强大的宏构建能力更是让他成为了创建语言的语言。Racket在原Scheme简洁的基础上得到更广泛的发展,在系统编程、图形界面编程、网络编程等均有不俗的表现。经常遇到一些朋友提问说能用Racket做什么?如何用Racket做桌面GUI应用程序?本文通过一个拼图游戏的构建,展示如何从0开始用Racket完成一个桌面GUI游戏程序,其间涵盖了Racket做桌面应用的主要功能,同时也可以作为Racket入门的读物。原创 2024-07-10 15:20:16 · 932 阅读 · 0 评论 -
用Racket做一个拼图游戏——1 前言、2 设计目标、3 设计思路
经常遇到一些朋友提问说能用Racket做什么?如何用Racket做桌面GUI应用程序?本文通过一个拼图游戏的构建,展示如何从0开始用Racket完成一个桌面GUI游戏程序,其间涵盖了Racket做桌面应用的主要功能,同时也可以作为Racket入门的读物。原创 2022-10-07 10:18:36 · 1231 阅读 · 0 评论