Linux 中的文件操作-文件io-系统io操作:让一个圆在屏幕上移动。

/*
*功能:让一个圆在屏幕上移动
*/

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
	int fb_fd;
	int x, y;
	unsigned int color[480][800];

	fb_fd = open("/dev/fb0", O_RDWR);//读写的方式打开显存文件
	if(fb_fd == -1)
	{
		perror("打开显存文件失败");
		return -1;
	}
	
	int cc_x=400,cc_y=240;//圆心坐标 
	int speed_x=2, speed_y=2;//圆的速度

	while(1)
	{

		if(cc_x+50>=800 || cc_x-50<0)//边界检测
			speed_x = -speed_x;//反方向移动

		if(cc_y+50>=480 || cc_y-50<0)//边界检测
			speed_y = -speed_y;//反方向移动

		cc_x += speed_x;//圆的移动
		cc_y += speed_y;//圆的移动

		for(y=0; y<480; y++)
		{
			for(x=0; x<800; x++)
			{
				if((x-cc_x)*(x-cc_x)+(y-cc_y)*(y-cc_y) <= 50*50)//判断是否在圆内
					color[y][x] = 0x0000ff00;//在圆内的颜色为绿色
				else
					color[y][x] = 0x00ffffff;//在圆外的颜色为白色
			}
		}
	
		write(fb_fd, color, 4*800*480);//将颜色数据写入显存文件
		lseek(fb_fd, 0, SEEK_SET);//刷新显存文件
	}
	close(fb_fd);//关闭显存文件
	
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值