错觉图片生成实验 - 倾斜的字母

本文介绍了大一学生在C语言课程中进行的一次错觉图片生成实验,他们利用紫粉色背景和黑白小方块的斜线对比,创造出字母看起来倾斜的视觉效果。学生们通过设置背景、绘制字母、添加颜色和斜线,实现了这个效果。实验过程中,团队成员体验到沟通和分工合作的重要性。
摘要由CSDN通过智能技术生成

(图书介绍:童晶:《C和C++游戏趣味编程》新书预告

这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(《C和C++游戏趣味编程》配套教学视频)),布置了一次错觉图片生成实验的PBL,给了大家5天时间分组完成代码、ppt报告。

这次,介绍杨雍斌、景羿霏、王舒杨、孙凤祥同学实现的倾斜的字母。由于同学们学习C语言刚一个月,还没有正式学习数组、函数等语法知识,因此代码可能不够完善。以下提供了分步骤的实现思路、代码,大家可以参考。

首先是同学们调研的目标效果:

v2-9fd77942270ea8df741a7147cfb32467_b.jpg

错觉介绍:利用斜线以及黑白颜色的对比来产生倾斜错觉

原理:黑白线是斜的,黑白对比较强烈

目标效果:使原本横平竖直的字母看上去倾斜


1 设置背景和参数

设置背景为紫粉色

设置小方块宽50,高25

设置o,p,e,n上下左右坐标

v2-14cebc04bdd1e02d0fbc0d5448c90c51_b.jpg

2 绘制字母

每隔一个小方块绘制一个小方块

绘制出字母o,p,e,n

v2-3708eebfb0b8a60bb06d3b94a3d89d14_b.jpg

3 添加颜色

对小方块添加颜色

RGB(0, 0, 0)为黑色

RGB(225, 225, 225)为白色

v2-8cf2f91279565f119ce99f35d680597a_b.jpg

4 添加斜线

在白色方块上添加黑色斜线

在黑色方块上添加白色斜线

并使它们连在一起

v2-210355b26acb347a6cdf196f96ed595f_b.jpg

5 添加按键

设置按下空格键后显示斜线

使效果更加直观明显

v2-6716cdeab78a0659d23a358af16d0d49_b.jpg
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
int main()
{
     
	initgraph(1050, 400);//打开一个窗口
	setbkcolor(HSLtoRGB(300, 0.4, 0.9));//设置背景颜色
	cleardevice();//以背景颜色清空画布

	int width = 50;//矩形宽度
	int height = 25;//矩形高度
	int i;
	int left, top;

	int left_O = 50, top_O = 50, right_O = 200;//字母O的上下左右坐标
	int left_P = 300, top_P = 50, right_P = 450;//字母e的上下左右坐标
	int left_E = 550, top_E = 50, right_E = 700;//字母p的上下左右坐标
	int left_N = 800, top_N = 50, right_N = 1000;//字母n的上下左右坐标

	for (left = left_O; left <= right_O; left = left + 2 * width)//字母O
	{
     
		setfillcolor(RGB(0, 0, 0));//填充黑色
		fillrectangle(left, top_O, left + width, top_O + height);
		fillrectangle(left + width, top_O + height, left + 2 * width, top_O + 2 * height);
		fillrectangle(left + width, top_O + 7 * height, left + 2 * width, top_O + 8 * height);
		fillrectangle(left, top_O + 8 * height, left + width, top_O + 9 * height);
		setfillcolor(RGB(255, 255, 255));//填充白色
		fillrectangle(left + width, top_O, left + 2 * width, top_O + height);
		fillrectangle(left, top_O + height, left + width, top_O + 2 * height);
		fillrectangle(left, top_O + 7 * height, left + width, top_O + 8 * height);
		fillrectangle(left + width, top_O + 8 * height, left + 2 * width, top_O + 9 * height);
	}
	for (top = top_O + 2 * height; top <= top_O + 6 * height; top = top + 2 * height)
	{
     
		setfillcolor(RGB(0, 0, 0));//填充黑色
		fillrectangle(left_O, top, left_O + width, top + height);
		fillrectangle(left_O + 3 * width, top + height, left_O + 4 * width, top + 2 * height);
		setfillcolor(RGB(255, 255, 255));//填充白色
		fillrectangle(left_O, top + height, left_O + width, top + 2 * height);
		fillrectangle(left_O + 3 * width, top, left_O + 4 * width, top + height);
	}
	for (left = left_P; left <= right_P; left = left + 2 * width)//字母P
	{
     
		setfillcolor(RGB(0, 0, 0));//填充黑色
		fillrectangle(left, top_P, left + width, top_P + height);
		fillrectangle(left + width, top_P + height, left + 2 * width, top_P + 2 * height);
		fillrectangle(left, top_P + 6 * height, left + width, top_P + 7 * height);
		fillrectangle(left + width, top_P + 7 * height, left + 2 * width, top_P + 8 * height);
		setfillcolor(RGB(255, 255, 255));//填充白色
		fillrectangle(left 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值