c语言画图


前言

虽然已经学习了一个学期的c语言,但这也是我第一次写博客,之前一直没时间或者是觉得自己那个实在没什么好写的,最近我突然性情大发,生了想要好好写一篇博客的心思,也算是记录一下自己的进步。
今天要讲的是我最近写的一个我还算满意的小程序,因为放了寒假,闲在家里,就生了写小程序的心思,正好我女朋友还没放假,趁现在我写了个代码给我女朋友。就是这个c语言写的方格绘图(随便取的名字)小程序


一、程序介绍

方格绘图小程序是只有黑白方框,像一个个小像素点一般的,远远看上去像一副图片,通过wasd来操控上下左右,c键来画,x键来清除错误的白格子。
成品图
一开始
一开始时
然后开始绘画,如果不小心画错了也无妨
按c键变为白格,按x键变回框框
最后成果,女朋友很满意
漂亮

二、使用步骤

1.引入库

代码如下:

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

2.定义静态变量,地图大小

代码如下:

int static o = 0, p = 0,med=0,fad=0;
int map[50][50] = {
	{3},
};//地图大小的划定

3.画出图像(地图)

代码如下:

void drawmap()//绘图
{
	int i, j;
	for (i = 0; i < 50; i++)
	{
		for (j = 0; j < 50; j++)
		{
			switch (map[i][j])
			{
			case 0:printf("□"); break;
			case 1:printf("■"); break;
			case 3:printf("  "); break;
			default:break;
			}
		}printf("\n");
	}
}

4.控制移动的子函数

代码如下:

void  move(int n,int m)//移动方格的函数
{
	if (o < 50 && p < 50)
	{
		map[o][p] = med;
		fad = map[o + n][p + m];
		map[o + n][p + m] = 3;
		med = fad;
		o = o + n;
		p = p + m;
	}
	else
	{
		printf("超出边界,重新选择移动路径:\n");//修复可能存在的bug
	}
}

5.以及最后的主函数

代码如下:

int main() 
{
	
	char c;
	
	for (;;)
	{
		system("cls");
		drawmap();
		c = _getch();
		switch (c)//改进了其操作方式使其操作更简单一点
		{
		case 'a':move(0, -1); break;
		case 'w':move(-1, 0); break;
		case 's':move(1, 0); break;
		case 'd':move(0, 1); break;
		case 'c':map[o][p] = 1;med= map[o][p]; break;//变为白方格
		case 'x':map[o][p] = 0;med = map[o][p]; break;//变为黑方框
		default:break;
		}
	}
}

总结

最后的全部代码,放在这里,想要的自取。博主用的是visual studio 2019

//小王同学花了一下午写的画图小程序
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int static o = 0, p = 0,med=0,fad=0;
int map[50][50] = {
	{3},
};//地图大小的划定
void drawmap()//绘图
{
	int i, j;
	for (i = 0; i < 50; i++)
	{
		for (j = 0; j < 50; j++)
		{
			switch (map[i][j])
			{
			case 0:printf("□"); break;
			case 1:printf("■"); break;
			case 3:printf("  "); break;
			default:break;
			}
		}printf("\n");
	}
}
void  move(int n,int m)//移动方格的函数
{
	if (o < 50 && p < 50)
	{
		map[o][p] = med;
		fad = map[o + n][p + m];
		map[o + n][p + m] = 3;
		med = fad;
		o = o + n;
		p = p + m;
	}
	else
	{
		printf("超出边界,重新选择移动路径:\n");//修复可能存在的bug
	}
}
int main() 
{
	
	char c;
	
	for (;;)
	{
		system("cls");
		drawmap();
		c = _getch();
		switch (c)//改进了其操作方式使其操作更简单一点
		{
		case 'a':move(0, -1); break;
		case 'w':move(-1, 0); break;
		case 's':move(1, 0); break;
		case 'd':move(0, 1); break;
		case 'c':map[o][p] = 1;med= map[o][p]; break;//变为白方格
		case 'x':map[o][p] = 0;med = map[o][p]; break;//变为黑方框
		default:break;
		}
	}
}

差不多,我的第一个博客就写到这了,以后有情况多多补充!冲冲冲!加油!

  • 23
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值