三九宝宝网宝宝教育教学论文

c语言编程实现键盘画图

02月10日 编辑 39baobao.com

[C语言编程纠错。]稍微做了点修改. 你看看加粗的那几句代码. #include<stdio.h> main() { void maxstr(char s1[]); char s[100]; printf("输入一行字符串:\n"); gets(s); maxstr(s); } void maxst...+阅读

先从main函数读起;INIT是初始化为图形模式,而不是普通的文字模式;MAIN_PART是代码主要部分,包含一个无限循环,不断读取键盘输入进行各种绘图,直到按ESC键退出。读懂MAIN_PART基本就懂了。drawcross是用白色画一个十字架,位置是初始位置,define为屏幕中心(640*480的中心);设置背景色为4(红色);然后不断循环,用bios.h中的bioskey函数不断读取键盘码,对键码进行移位判断,switch中作相应的操作,具体的各种操作你自己可以试验得知,小键盘的方向键是按方向划线,ctrl右边的方向键则仅仅是移动十字架。加减是缩放画圆圈,代码里r表示画圆半径,START_X,START_Y表示当前坐标,putpixel函数的作用是输出一个像素,circle画圈,其他代码好读懂的。

复杂的算法没找出来,简单的算法而言,像素叠加擦除应该也算一个吧,有两个地方用到像素叠加擦除,体现在circle画圈,当缩放圆圈时,用黑色用上次的半径画上次的圆圈,再用新的颜色新的半径画新的圆圈;还有一个地方时移动十字架时,先用黑色叠加在原来的白色十字架上,相当于擦除了旧的十字架,然后再移到新位置,用白色画出新的十字架,等待下次移动被黑色十字架擦除!

技术难点在两个地方:

1.键盘码的位移运算,因为涉及到位运算,对新手来说比较难理解和掌握;解决方案:查键盘码表

2.移动十字架的覆盖擦除,处理不好会出现很多个十字架残影;解决方案:记住上次的十字架位置,用黑色+白色像素叠加精确擦除。

以下为关联文档:

C语言编程题纠错#include "stdio.h" void main() { int num,i; printf("请输入一个数"); scanf("%d",&num); for(i=2;i<num;i++) { if(num%i==0) { printf("num不是素数"); break; } else printf("num是...

c语言编程求纠错while(scanf("%d",&n)!=EOF) { if(n==0)break; a=sg(n); if(a>=10) a=sg(a); printf("%d\n",a); } 这个循环出错了,如果按你这个代码来执行的话,每次读入一个n的值,循环里都是只计...

用C语言编程实现以下功能:用C++帮你做了一个,觉得还可以的话就采纳吧。#include#includetypedef struct { int *elem; int length; int listsize; }SqList; int InitList_sq(SqList *L,int n) { int i...

关于易语言编程C++是在C语言基础上进行扩展而来的一门面向对象的程序设计语言。相比其他语言,它具有很多优点和特点的,比如:在性能方面,C++代码被最终编译成本地机器码,可直接由CPU执行,相比Java...

c语言编程题目void main() { int a[5],b[5]; int cnt=0,i,j,t; for(i=0;i<=4;i++) scanf("%d",&a[i]); for(i=0;i<=4;i++) if( (a[i]%10)%2==0 && (a[i]/10%10)%2==0 && (a[i]/100%10)%2==0...

c语言编程题目。哈哈,纯暴力 结果为1098 #include <stdio.h> int main() { int a , b , c , d ; for( a = 1 ; a < 10 ; a++) for(b = 0 ; b < 10 ; b++) for( c = 0 ; c < 10 ; c++) for(d...

计算机c语言编程我编了这个程序,不涉及小时分钟的加减在十进制里这么转换。 小时就是(time2-time1)/100; 分钟就是后2位的相减,如果为负的话,向高位借位加60就行了 #include<stdio.h> main() {in...

LCD1602用C语言编程如何显示字符void delay(uint z);//延时,1微妙时间有点短你看看下面我做的程序,在2051+12M晶振通过你可以套用这个程序,不行的话就改长延时/******************AT89S51使用12M晶振**********...

使用C语言编程实现排序算法#include<stdio.h> main() { struct { char mz[5]; int sd; char sbing[5]; int xs; }a[100],k; int i,b,j; printf("请输入球员数量\n"); scanf("%d",&b); for(i=0;i<b;i++) {pri...

推荐阅读
图文推荐