一个画图的程序,
"F"代表画一条一个单位长的线,
"f"表示向前走一个格,但是不画线
"+"表示顺时针转动一定的角度
"-"表示逆时针转动一定的角度
"["表示储存现时的角度和位置
"]"表示返回最后一次储存的
例如想要画:
[[FF[F][+F]-F]-F-f--F--F]+F+f++F[++F
怎样在程序里面显示起点和终点的X和Y的坐标呢? 怎样让画出的线有颜色,如果 (1,0,0)是红色,(1,1,1)是白色,(0,0,0)是黑色.下面是我写的程序,不工作,而且我也不知道怎么去写X和Y坐标.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX_LINE 128
#define MAX_TEXT 4096
TDnode *get_node( void );
char *get_task( void );
int get_rule( void );{
TDnode * get_node( void )
{
TDnode * new_node;
new_node = (TDnode *)malloc( sizeof( TDnode ));
if( new_node == NULL ) {
printf("Error: could not allocate memory./n");
exit( 1 );
}
printf("/n");
new_node->task = get_task();
new_node->rule = get_rule();
return( new_node );
}
char * get_task( void )
{
char buffer[MAX_TEXT];
char *task;
int length;
int ch;
int i;
printf( "Please enter character:" );
if(( ch = getchar()) == '/n' ) {
ch = getchar();
}
i=0;
while((i < MAX_TEXT)&&(ch != '/n')&&(ch != EOF)) {
buffer[i++] = ch;
ch = getchar();
}
length = i;
task = (char *)malloc((length+1)*sizeof(char));
if( task == NULL ) {
printf("Error: could not allocate memory./n");
exit( 1 );
}
for( i=0; i<length; i++ ) {
task[i] = buffer[i];
}
task[i] = '/0';
return( task );
}
int get_rule( void )
{
char s[MAX_LINE];
int rule = 0;
int i;
printf("Please enter rule number: ");
fgets( s, MAX_LINE, stdin );
while( rule == 0 ) {
for( i=0;( i<MAX_LINE )&&( isspace(s[i])); i++ )
;
switch( s[i] ) {
case 'F':
rule = 1;
break;
case 'f':
class = 2;
break;
case '+F':
rule = 3;
break;
case '-f':
rule = 4;
break;
case 'FF':
rule = 5;
break;
case 'F+F':
rule = 6;
break;
case '*f':
rule = 7;
break;
case '+F+':
rule = 8;
break;
case '=f':
rule = 9;
break;
case '-F':
rule = 10;
break;
case '+f':
rule = 11;
break;
case 'ff':
rule = 12;
break;
case 'f+f':
rule = 13;
break;
case '*F':
rule = 14;
break;
case '+f+':
rule = 15;
break;
}
if( rule == 0 ) {
printf("Enter number: ");
fgets( s, MAX_LINE, stdin );
}
}
return( rule );
}
return 0;
}