错觉图片生成实验 - 正方形错觉

在C语言课程中,学生们通过分组完成了一个错觉图片生成实验,特别是正方形错觉。实验分为五个步骤,包括画线、创建大背景、挖空中间部分、绘制中间图形以及组合所有元素。同学们在没有接触数组和函数等高级概念的情况下,使用基本的编程技巧实现了这一视觉效果。实验强调了分步解决问题、查找资料、应用数学思维和团队协作的重要性。
摘要由CSDN通过智能技术生成

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

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

这次,介绍王翌骏、陈凯、马学强同学实现的正方形错觉。由于同学们学习C语言刚一个月,还没有正式学习数组、函数等语法知识,因此代码可能不够完善。以下提供了分步骤的实现思路、代码,大家可以参考。

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

v2-e543ef40a99c130f672d3bb86ca1beac_b.jpg

斜向方块的边看起来是弧线,实际上是直线,受黑白条纹影响产生是弧线边的错觉。

STEP 1:划出线

●利用函数在不同两点间划出直线

●代码行数(不算变量的定义)10

●难度:较简单

●PS:其实这线画出来对于最后的效果没有影响,但可以用来作为判断第二步骤的标准

v2-6a3ee07ed8005fcf351023006b107755_b.jpg

STEP 2:画出大背景

●利用solidrectangle以及判断和循环来做出

●代码行数:约70行

●难度:一般,但是繁琐,需要大量的循环判断。

v2-55a1f84db06b99ed8338d69afad535c6_b.jpg

STEP 3:挖空中间部分

●利用clearpolygon函数进行清除

●代码行数:约十行

●难度:简单(简单的循环,但是所用到新的函数以及数据类型POINT,通过easy_x查询)

v2-e21f120b49c2f520d9d2f49327c1dc94_b.jpg

STEP 4:画出中间部分

●利用坐标,想逃循环判断画出中间部分的

●代码行数:约45行

●难度:困难(尝试多次未果,因为直接用函数确定范围会十分复杂,但我在easyx上看到了setorigin函数用来定义原点,这样在菱形中的函数是一样的,省去了很多麻烦 )

v2-0f9bd17e435824eacec22fffd8f5f795_b.jpg

STEP5:结合

将第四步和第三步结合,便得到了错觉图形

v2-0ccc735b02cdd5751540e3de9fa67e42_b.jpg
#include<stdio.h>
#include<graphics.h>
#include<conio.h>

int main()
{
       
	int site_x, site_y;
	int screen_x, screen_y;
	int length = 160;
	int width = 8;
	int left,top;
	int count1, count2;
	int x = 1, y = 1, t = 1,k;
	screen_x = 640, screen_y = 640;
	initgraph(screen_x, screen_y);
	cleardevice();
	for (t;t < 8;t++)//输出直线
	{
     
		if (t <= 4)
		{
     
			line(0, 160 * t - 80, 160 * t - 80, 0);
			line(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值