自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

在路上的博客

真正的人生在路上!爱好编程。

  • 博客(96)
  • 资源 (3)
  • 收藏
  • 关注

原创 用Racket做一个拼图游戏——33 知识点

拼图游戏知识点。

2024-07-16 10:30:06 957

原创 用Racket做一个拼图游戏——32 创建可执行程序

主程序完成,接下来就可以感受游戏带来的乐趣了。

2024-07-16 10:28:05 584

原创 用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做一个拼图游戏——27 创建状态显示区

信息控件message%用来显示基本的状态信息。

2024-07-16 10:18:10 270

原创 用Racket做一个拼图游戏——26 创建拼图命令按钮组

这里在定义组框里的构件时,采用了和之前完全不同的方式。

2024-07-16 10:16:22 562

原创 用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做一个拼图游戏——22 创建窗口布局

创建窗口布局

2024-07-15 10:12:25 423

原创 用Racket做一个拼图游戏——21 创建主窗口

根据上边介绍,把之前定义的main-frame代码进行扩展。

2024-07-15 10:10:35 267

原创 用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做一个拼图游戏——12 混合单元格

为了混合单元格,需要能够将表中的任意两个单元格进行调换。

2024-07-15 09:01:57 935

原创 用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

原创 通用树查找算法

一个通用的树遍历搜索算法怎么做?

2024-06-07 13:22:34 602

原创 如何用TeX排版施工方案

这篇文章是对用TaX做施工方案(施工组织设计)的一个总结,文章内容也适用于其它相应类型的排版。

2023-07-25 21:55:08 570

原创 用Racket语言生成全球唯一标志(GUID)

用Racket语言来实现GUID的程序。

2023-04-12 23:56:11 561

翻译 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指南

本指南适用于新接触Racket的程序员或部分了解Racket的程序员。本指南假定你是有编程经验的。

2022-11-15 20:30:53 538

原创 用Racket做一个拼图游戏——1 前言、2 设计目标、3 设计思路

经常遇到一些朋友提问说能用Racket做什么?如何用Racket做桌面GUI应用程序?本文通过一个拼图游戏的构建,展示如何从0开始用Racket完成一个桌面GUI游戏程序,其间涵盖了Racket做桌面应用的主要功能,同时也可以作为Racket入门的读物。

2022-10-07 10:18:36 1297

artascope.zip

这是用Racket编写的一个万花板程序源代码,用它可以用修改参数的方式绘制出各种神奇而漂亮的图形。通过这个程序,可以参考学习Racket的GUI程序编写方式。

2020-03-19

real-time-display.zip

用Racket实现GUI程序及绘图操作非常方便而且可以高效完成编程。这个例子代码实现了GUI编程并实现了适应机器性能的实时交互操作示例。

2020-03-19

Common Lisp 初学者快速入门指导

本文的目标是希望能为 Common Lisp 初学者提供一份简单易懂、容易上手、学习结合(学为学,习为实践)的初学者教程。

2015-08-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除