使用程序代码输出常见的字体图标(标志图片)

前言

程序中经常会使用一些常规的标志图片,例如,音量开关、各种方向箭头、扑克牌花色、邮件、电话、磁盘、笑脸/哭脸、五星等等。通常做法是,制作好图片,然后在特定的位置将图片显示出来。本文讲述如何通过输出文字的形式将这些常规的标志图片进行输出。

这种以文字方式表示的表示图片,一般称作:字体图标。

使用方法

简单来说:Windows 内置了许多字体图标的字库,只需要设置为相应字体,然后再输出相应字符即可。不过多讲解,看代码吧,以下代码会画出一个电话机:

#include <graphics.h>
#include <conio.h>

int main()
{
	initgraph(640, 480);

	settextstyle(60, 0, L"Wingdings");
	wchar_t c = 0x28;		// 0x28 是电话机在 Wingdings 字体中的对应编码
	outtextxy
...

编程一对一授课(XiongFJ 版)

我就是百度贴吧的 fammy043,就是写坦克大战和快打旋风的内个~

欢迎亲们阅读 ~ 写在前言:

编程技术现对于我们来说都已经不陌生。

随着社会发展,计算机教育的普及,许多学生都会较早接触到计算机,计算机编程教育也越来越早龄化。

课堂老师所教的主要是基础理论知识,与实际应用还有不小差距。

所以在这里主要教的是动手写程序,在掌握基本语法逻辑结构之后,通过不停的敲打代码,斟酌逻辑,积累自己的编程经验、技巧。

最后尽量能做到:我想即我能做,则算入门了吧。

楼主一些作品:https://www.codebus.cn/xiongfj/

该授课的极限是亲们能独立写出类似上述楼主的作品 ~

...

轻松学编程,快乐做游戏

零基础C语言入门课程

前言

兴趣是学习的动力!

本课程是帮助想系统学习编程的同学,少走弯路快速入门,掌握基础的编程语言-----C语言。

我们所采用的是和学校完全不同是教学模式,一对一的针对性教学。学习时间更自由,时间更长,内容讲解更详细。

俗话说,师傅领进门,修行在个人。好的老师虽然是很重要的,但是更重要的是自己的努力!这里只接受那些真正想学的人,知识是付费的,希望你能感到物有所值!

老师:醋酸基。

课程安排

第一部分 基础知识   C语言零基础入门课程

一课时:

1,  c语言的开发环境。

2,  c语言的特点和基本结构。

3,  一个简单的c语言程序。

二课时:

1.       基础算法和数据结构

...

编程私教:实用派的 C/C++ 语言编程教育(我是慢羊羊)

前言

所谓教育,就是教和育。

众所周知,传统教学,是有教无育。在我这里,我也做不到 24 小时盯着学生,所以我也不可能培育好一个人的品性。我能做到的,仅仅是针对不良习惯的劝诫。如果无效,我会停止对该学生的教学。

我的一些示例作品:https://codebus.cn/yangw

我的一些文章:https://codeabc.cn/yangw

这是时代,由于编程教育的特殊性,导致老师的水平参差不齐,教 Java 的老师都未必能正确念出来 Java 这个单词。希望各位同学能找到自己心仪的老师。

免费辅导内容

我会不定时的在以下几个 QQ 群里游荡:

  • 1059085 (C语言革命0)
  • 8086730 (C语言革命1)
  • 2861971 (C语言革命2)

...

打开帮助文件 EasyX_Help.chm 后,内容为空白的解决办法

有些同学遇到这样的问题,打开 EasyX 的帮助文档 EasyX_Help.chm 之后,发现所有的内容点击后都是空白的,就像下面这样:

这是由于 Windows 的安全机制造成的,当你从网上直接下载一个 chm 文件,或者用 Windows 资源管理器从压缩包里面解压出来 chm 文件,都会被 Windows 认为目标文件不够安全,然后默认被锁定。

所以,只需要简单解锁就可以了。

这样做:右击 EasyX_Help.chm 文件,在属性页中,会看到底部的“安全”一项,“解除锁定”没有勾选,如下图:

只需要简单的勾选“解除锁定”,然后点击确定,就可以正常浏览 chm 文件了。

为什么屏幕分辨率是 640x480?

常见的屏幕分辨率很奇怪,为什么总用一些不零不整的数字?比如以前最常见的分辨率是 640x480,当初为什么这么设计?

因为这个分辨率运算速度比较快,人也相对比较好记。

大家知道,屏幕上的每一个点,都会对应内存中的一个位置。比如 640x480@256色,表示每个点占用一个字节,整个屏幕有 640x480=300k 个点,占用 300KB 内存。屏幕的每一个像素的保存,在内存中是线性存储结构。在屏幕上的坐标 (x, y) 画一个点,就相当于在对应显存偏移 y * 640 + x 的位置赋值。

PS:在这篇文章中有一段代码,可以实践一下通过内存赋值来直接画点:http://www.easyx.cn/skills/View.aspx?id=55

每绘制一个点,都需要执行一次乘法和一次加法运算。所有的绘图操作都需要调用画点函数,因此提高画点的效率,将会提升所有绘图操作的速度。

现在我们将计算内存偏移量的算法修改一下:

d = y * 6
...

在 VC 下清空键盘缓冲区的方法

(以下代码在 VC 下通过)

控制台窗口是有输入缓冲区的,当你按键后程序没有来得及处理,系统会将按键缓存,等到程序获取按键的时候,系统会把缓冲区里面之前的按键返回。

例如这个程序:

#include <graphics.h>
#include <stdio.h>
#include <conio.h>

int main()
{
	printf("延时 5 秒钟。请在 5 秒钟内随便按键。\n");
	Sleep(5000);

	printf("延时结束。刚才您按下的按键是:\n");

	while (_kbhit())
	{
		char c = _getch();
		printf("%c", c);
	};

	return 0;
}

请自己执行一下前面的程序,在 5 秒延时内随便按键,等到延时结束,可以看到程序可以读出刚才的按键。

但是有些时候,

...

使 VC2013 编写的程序运行在其它电脑上

Visual Studio 2013 中带了新版本的 Visual C++,并且微软发不了免费的 Visual C++ 2013 Express,学习编程用很方便。

VC2013 默认编写的 .exe 使用动态链接方式链接的运行时库,所以,编写的程序要在别的电脑上运行,需要在其它电脑安装 VC2013 的运行时库,然后就可以完美运行你的 .exe 程序。当然,如果你觉得安装运行时库很麻烦,你可以用静态链接的形式编译你的 .exe 程序。方法如下(以英文版 Visual Studio 2013 为例):

1. 打开 Visual Studio 2013,创建 Win32 Console Application(或者 Win32 Application)。

2. 编写程序。

3. 项目编译模式默认分为 Debug 和 Release 两种模式。Debug 模式带有各种调试信息,方便排查错误,使用的调试版本库。Release 模式删除了调试信息,使得编译的文件更小,执行速度更快。因此,在调试程序的时候,要用 Debug 模

...

学习保存应用程序的配置信息

应用程序启动后,用户会有各种操作。当用户下一次启动应用程序时,就会希望保持上一次的操作状态。或者游戏结束后,需要将最高分记录等等。因此,我们需要在程序关闭的时候,将一些必要的变量保存下来,并且在下一次程序启动的时候,读取这些变量。

通常,可以把这些变量保存在“配置文件”中。配置文件一般以 .ini 为扩展名。例如在 \windows 文件夹里面可以找到很多 .ini 文件。.ini 文件的内容是纯文本的,可以直接双击打开编辑。举一个实际例子,下面是一个标准的 .ini 配置文件的内容:

; EasyX 范例
[Ball]
x=10
y=37
r=20
[Wall]
width=70
height=60

可以看到,配置文件的格式很简单,包括三种情况:

  1. 注释:写在半角分号后面;
  2. 节:用方括号括起来;
  3. 变量:用“键=值”这种形式记录,
...

用 Visual C++ 编写可以在 Borland C++ 3.1 下编译执行的程序

由于某些学校的硬性规定,课设必须用 Borland C++ 3.1(以下简称 BC) 一类 DOS 下的编程工具完成。

但是,BC 用起来很费劲,毕竟是 dos 时代的工具,无论编辑还是调试,都很吃力。尤其是图形程序,由于涉及到硬件及系统的问题,导致程序不能在 win7 及以上版本的 Windows 中运行,必须借助 dosbox 一类工具或者虚拟机才可以,麻烦多多。

本文通过一些常用的技巧,讲解怎样用 Visual C++(以下简称 VC) 编写可以在 BC 下直接编译运行的程序。

这样做的好处就是,可以节约大量的编码和调试时间。众所周知,当程序规模比较大的时候,调试时间会超过编码时间。而 VC 的强大调试功能,远不是 BC 能比的。同时,windows 下便捷的编辑环境,也比 BC 能节约很多时间。再比如有些人的显示器可以旋转,将 24 寸的显示器旋转 90 度竖着用,一屏可以阅读上百行代码,这种效率,绝对不是 BC 那一屏 20 多行代码可以比的。即便 BC 启用 43 行模式,效果仍然很差。

所以,下面的这个

...