/* * * KidsPlay! Version 2.0 * by David Barberi 01/03/92 * * Syracuse University Virtual Reality Lab * * An educational game for children that uses * the PowerGlove for input. * * Written on a Personal Iris 4D/25 * * Questions/comments: dbarberi@sugrfx.acs.syr.edu * * History * 11/04/91 Added graphic subwindows * */ char Copyright_Notice1[]=" (C) COPYRIGHT 1992 by David Barberi "; char Copyright_Notice2[]=" All Rights Reserved "; char Copyright_Notice3[]=" This is unpublished source code "; #include "/ip/vr/stream/powerglove.h" #include "colors.h" #include #include #include #define CLICK 10 /* One click unit */ #define SQUARE 0 #define CIRCLE 1 #define TRIANGLE 2 #define TWO_LINES 3 #define _RED 0 #define _GREEN 1 #define _BLUE 2 #define _BLACK 3 #define _WHITE 4 #define BOX_TOP 955 #define BOX_BOTTOM 300 #define LEFT_BOX_LEFT 50 #define LEFT_BOX_RIGHT 560 #define RIGHT_BOX_LEFT 640 #define RIGHT_BOX_RIGHT 1200 /* for sub windows */ #define OBJ_TOP 900 #define OBJ_BOTTOM 300 #define LEFT_OBJ_LEFT 60 #define LEFT_OBJ_RIGHT 600 #define RIGHT_OBJ_LEFT 680 #define RIGHT_OBJ_RIGHT 1220 typedef struct { /* structure for multiple windows, */ int gid; } wrecord; wrecord wins[5]; /* leave 0th spot empty */ int BigWindow; /* names of windows */ int number_of_colors = 5; int triangle_1[2]= { -CLICK, -CLICK}; int triangle_2[2]= { CLICK, -CLICK}; int triangle_3[2]= { 0, CLICK }; /* main box corners */ int left_box_1[2] = {LEFT_BOX_LEFT, BOX_TOP}; int left_box_2[2] = {LEFT_BOX_RIGHT, BOX_TOP}; int left_box_3[2] = {LEFT_BOX_RIGHT, BOX_BOTTOM}; int left_box_4[2] = {LEFT_BOX_LEFT, BOX_BOTTOM}; int right_box_1[2] = {RIGHT_BOX_LEFT, BOX_TOP}; int right_box_2[2] = {RIGHT_BOX_RIGHT, BOX_TOP}; int right_box_3[2] = {RIGHT_BOX_RIGHT, BOX_BOTTOM}; int right_box_4[2] = {RIGHT_BOX_LEFT, BOX_BOTTOM}; /* object box corners */ int left_object_box_1[2] = {LEFT_OBJ_LEFT, OBJ_TOP}; int left_object_box_2[2] = {LEFT_OBJ_RIGHT, OBJ_TOP}; int left_object_box_3[2] = {LEFT_OBJ_RIGHT, OBJ_BOTTOM}; int left_object_box_4[2] = {LEFT_OBJ_LEFT, OBJ_BOTTOM}; int right_object_box_1[2] = {RIGHT_OBJ_LEFT, OBJ_TOP}; int right_object_box_2[2] = {RIGHT_OBJ_RIGHT, OBJ_TOP}; int right_object_box_3[2] = {RIGHT_OBJ_RIGHT, OBJ_BOTTOM}; int right_object_box_4[2] = {RIGHT_OBJ_LEFT, OBJ_BOTTOM}; /* define x,y space for objects */ float object_one_center[2] = {290.0, 670.0}; float object_two_center[2] = {900.0, 670.0}; /* float object_three_center[2] = {900.0, 600.0}; */ int object_count, new_round; int current_objects[3], chosen_object; int current_color[3]; int correct_x, correct_y; int in_left_box, in_right_box; int in_left_object_box, in_right_object_box; char left[20]; char right[20]; /****************************************************************/ main() { init(); /* Initialize Glove, Graphics */ while(!getbutton(ESCKEY)) { c3i(background); clear(); /* set background color */ check(); /* see if in box */ draw_back_boxes(); /* draw background boxes */ draw_objects(); /* draw the 2 objects */ get_glove_data(); /* get and interpret glove */ draw_hand(); /* draw the x,y screen location */ write_message(); /* tell kids what to pick */ swapbuffers(); } printf("Thanks for playing!\n\n\n\n\n"); } /*********************************************************************************/ init() { printf("\n\n\n\n\n\n Welcome to KidsPlay! \n\n"); file_id = init_glove(); /* open the serial port */ /* graphics */ prefposition(10, 1270, 10, 993); wins[1].gid = winopen("For Kids!"); BigWindow = wins[1].gid; RGBmode(); doublebuffer(); gconfig(); winset(BigWindow); c3i(background); clear(); swapbuffers(); clear(); swapbuffers(); do_intro_screen(); c3i(blue); clear(); swapbuffers(); clear(); swapbuffers(); c3i(red); clear(); swapbuffers(); clear(); swapbuffers(); object_count = 4; /* 0 = SQUARE */ /* 1 = CIRCLE */ /* 2 = TRIANGLE */ /* 3 = TWO_LINES */ number_of_colors = 5; /* 0 = _RED 1 = _GREEN 2 = _BLUE 3 = _BLACK 4 = _WHITE */ new_round = TRUE; /* pick_new_objects(); */ } /********************************************************************************/ check() { in_left_box = in_right_box = FALSE; in_left_object_box = in_right_object_box = FALSE; /* check left boxes */ if( ( correct_x > LEFT_BOX_LEFT ) && ( correct_x < LEFT_BOX_RIGHT ) && ( correct_y < BOX_TOP ) && ( correct_y > BOX_BOTTOM ) ) in_left_box = TRUE; if( ( correct_x > LEFT_OBJ_LEFT ) && ( correct_x < LEFT_OBJ_RIGHT ) && ( correct_y < OBJ_TOP ) && ( correct_y > OBJ_BOTTOM ) ) in_left_object_box = TRUE; /* check right box */ if( ( correct_x > RIGHT_BOX_LEFT ) && ( correct_x < RIGHT_BOX_RIGHT ) && ( correct_y < BOX_TOP ) && ( correct_y > BOX_BOTTOM ) ) in_right_box = TRUE; if( ( correct_x > RIGHT_OBJ_LEFT ) && ( correct_x < RIGHT_OBJ_RIGHT ) && ( correct_y < OBJ_TOP ) && ( correct_y > OBJ_BOTTOM ) ) in_right_object_box = TRUE; } /********************************************************************************/ write_message() { linewidth(4); c3i(text); ezfont(80.0, 100.0, 49.0, "Where is the Triangle?"); } /********************************************************************************/ draw_back_boxes() { /* draw big boxes */ pushmatrix(); c3i(back_box); translate( 9.0, -9.0, 0.0); draw_two_boxes(); popmatrix(); c3i(box); draw_two_boxes(); /* draw object boxes */ pushmatrix(); c3i(back_box); translate( 9.0, -9./0, 0.0); draw_two_object_boxes(); popmatrix(); c3i(object_box); draw_two_object_boxes(); if(in_left_box) { linewidth(3); c3i(white); bgnclosedline(); v2i(left_box_1); v2i(left_box_2); v2i(left_box_3); v2i(left_box_4); endclosedline(); } if(in_right_box) { linewidth(3); c3i(white); bgnclosedline(); v2i(right_box_1); v2i(right_box_2); v2i(right_box_3); v2i(right_box_4); endclosedline(); } if(in_left_object_box) { linewidth(3); c3i(white); bgnclosedline(); v2i(left_object_box_1); v2i(left_object_box_2); v2i(left_object_box_3); v2i(left_object_box_4); endclosedline(); } if(in_right_object_box) { linewidth(3); c3i(white); bgnclosedline(); v2i(right_object_box_1); v2i(right_object_box_2); v2i(right_object_box_3); v2i(right_object_box_4); endclosedline(); } } /********************************************************************************/ draw_two_boxes() { bgnpolygon(); v2i(left_object_box_1); v2i(left_object_box_2); v2i(left_object_box_3); v2i(left_object_box_4); endpolygon(); bgnpolygon(); v2i(right_object_box_1); v2i(right_object_box_2); v2i(right_object_box_3); v2i(right_object_box_4); endpolygon(); } /********************************************************************************/ draw_two_object_boxes() { bgnpolygon(); v2i(left_box_1); v2i(left_box_2); v2i(left_box_3); v2i(left_box_4); endpolygon(); bgnpolygon(); v2i(right_box_1); v2i(right_box_2); v2i(right_box_3); v2i(right_box_4); endpolygon(); } /********************************************************************************/ get_glove_data() { query_glove(file_id, &pglove); correct_x = ((pglove.x+127) * 5.1); /* not exact.. ~5.1? */ correct_y = ((pglove.y+127) * 4); } /********************** draw_hand() ********************/ draw_hand() { linewidth(2); c3i(black); circi(correct_x, correct_y, 40); circi(correct_x, correct_y, 20); RGBcolor(255,255,0); circi(correct_x, correct_y, 7); c3i(red); move2((correct_x - 5), correct_y); draw2((correct_x - 50), correct_y); move2((correct_x + 5), correct_y); draw2((correct_x + 50), correct_y); move2(correct_x, (correct_y - 5)); draw2(correct_x, (correct_y - 50)); move2(correct_x, (correct_y + 5)); draw2(correct_x, (correct_y +50)); } /********************************************************************/ do_wow() { c3i(red); clear(); swapbuffers(); c3i(green); clear(); swapbuffers(); c3i(blue); clear(); swapbuffers(); c3i(white); clear(); swapbuffers(); c3i(background); clear(); swapbuffers(); c3i(background); clear(); swapbuffers(); } /********************************************************************/ do_intro_screen() { do_wow(); while(!getbutton(SPACEKEY)) { pushmatrix(); c3i(background); clear(); linewidth(8); c3i(back_text); ezfont(50.0, 750.0, 60.0, "Welcome to KidsPlay!!"); ezfont(90.0, 400.0, 30.0, "Press the Space Bar to Start"); linewidth(4); ezfont(200.0, 200.0, 25.0, "@ 1991 by David Barberi"); linewidth(2); c3i(text); ezfont(50.0, 750.0, 60.0, "Welcome to KidsPlay!"); ezfont(90.0, 400.0, 30.0, "Press the Space Bar to Start"); linewidth(1); ezfont(200.0, 200.0, 25.0, "@ 1991 by David Barberi"); popmatrix(); swapbuffers(); } do_wow(); } /********************************************************************/ draw_objects() { pushmatrix(); translate(9.0, -9.0, 0.0); draw_triangle( object_one_center, black); draw_circle( object_two_center, black); popmatrix(); draw_triangle( object_one_center, green); draw_circle( object_two_center, blue); } /********************************************************************/ draw_square( location, color ) float location[2]; int color[3]; { pushmatrix(); translate(location[0], location[1]); c3i(color); rectfi( -CLICK, CLICK, -CLICK, CLICK ); popmatrix(); printf(" done square\n"); } /********************************************************************/ draw_circle( location, color) float location[2]; int color[3]; { pushmatrix(); translate(location[0], location[1]); c3i(color); scale(15.0, 15.0, 0.0); circfi(0,0, CLICK ); popmatrix(); } /********************************************************************/ draw_triangle( location, color) float location[2]; int color[3]; { pushmatrix(); translate(location[0], location[1]); c3i(color); scale(15.0, 15.0, 0.0); bgnpolygon(); v2i(triangle_1); v2i(triangle_2); v2i(triangle_3); endpolygon(); popmatrix(); } /********************************************************************/ draw_two_lines( location, color ) float location[2]; int color[3]; { pushmatrix(); translate(location[0], location[1]); c3i(color); linewidth(10); scale(15.0, 5.0, 0.0); move2i( -CLICK, -CLICK ); draw2i( CLICK, -CLICK ); move2i( -CLICK, CLICK ); draw2i( CLICK, CLICK ); popmatrix(); } /******************************************************************* int pick_random_color() { int return_val[3]; switch( ( rand()%number_of_colors )) { case _RED: { return_val = red; break; } case _GREEN: { return_val = green; break; } case _BLUE: { return_val = blue; break; } case _BLACK: { return_val = black; break; } case _WHITE: { return_val = white; break; } default: { return_val = white; break; } } return(return_val); } */ /*******************************************************************/ pick_new_objects() { current_objects[0] = ( rand()%object_count ); do { current_objects[1] = (rand()%object_count); } while( !(current_objects[1] == current_objects[0]) ); do { current_objects[2] = (rand()%object_count); } while( !(current_objects[2] == current_objects[0]) && !(current_objects[2] == current_objects[1]) ); chosen_object = current_objects[ ( rand()%3 ) ]; } /***********************************************************************/ /* Easy Font | Original by Jeff Ventre | C version by David Barberi */ /***********************************************************************/ ezfont(x, y, size, it) float x,y,size; char it[]; { float x_scale = 0.7; float y_scale = 1.3; int i; pushmatrix(); translate(x, y, 0); scale(size, size, 0.0); for(i=0; i< strlen(it); i++) { pushmatrix(); scale(x_scale, y_scale, 1); switch(it[i]) { case 'A': move2(0.0, 0.0); draw2(0.5, 1.0); draw2(1.0, 0.0); move2(0.167, 0.333); draw2(0.833, 0.333); break; case 'a': move2(0.0, 0.25); draw2(0.25, 0.0); draw2(0.75, 0.0); draw2(1.0, 0.25); draw2(0.75, 0.5); draw2(0.25, 0.5); draw2(0, 0.25); move2(0.1, 0.7); draw2(0.25, 0.75); draw2(0.75, 0.75); draw2(1.0, 0.5); draw2(1.0, 0.0); break; case 'B': move2(0, 0); draw2(0, 1); draw2(0.75, 1); draw2(1, 0.75); draw2(0.75, 0.5); draw2(0, 0.5); move2(0.75, 0.5); draw2(1, 0.25); draw2(0.75, 0); draw2(0, 0); break; case 'b': move2(0, 0.25); draw2(0, 0.5); draw2(0.25, 0.75); draw2(0.75, 0.75); draw2(1, 0.5); draw2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); move2(0, 1); draw2(0, 0); break; case 'C': move2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); draw2(0, 0.75); draw2(0.25, 1); draw2(0.75, 1); draw2(1, 0.75); break; case 'c': move2(1, 0.5); draw2(0.75, 0.75); draw2(0.25, 0.75); draw2(0, 0.5); draw2(0, 0.25); draw2(0.25, 0); draw2(0.75, 0); draw2(1, 0.18); break; case 'D': move2(0, 0); draw2(0, 1); draw2(0.75, 1); draw2(1, 0.75); draw2(1, 0.25); draw2(0.75, 0); draw2(0, 0); break; case 'd': move2(0, 0.25); draw2(0, 0.5); draw2(0.25, 0.75); draw2(0.75, 0.75); draw2(1, 0.5); draw2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); move2(1, 0); draw2(1, 1.2); break; case 'E': move2(1, 1); draw2(0, 1); draw2(0, 0); draw2(1, 0); move2(0, 0.5); draw2(0.5, 0.5); break; case 'e': move2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); draw2(0, 0.5); draw2(0.25, 0.75); draw2(0.75, 0.75); draw2(1, 0.5); draw2(0, 0.5); break; case 'F': move2(1, 1); draw2(0, 1); draw2(0, 0); move2(0, 0.5); draw2(0.5, 0.5); break; case 'f': move2(0.25, 0); draw2(0.25, 0.75); draw2(0.5, 1); draw2(0.75, 1); draw2(1, 0.75); move2(0, 0.5); draw2(0.6, 0.5); break; case 'G': move2(0.5, 0.5); draw2(1, 0.5); draw2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); draw2(0, 0.75); draw2(0.25, 1); draw2(1, 1); break; case 'g': move2(0, 0.25); draw2(0, 0.5); draw2(0.25, 0.75); draw2(0.75, 0.75); draw2(1, 0.5); draw2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); move2(1, 0.75); draw2(1, -0.25); draw2(0.75, -0.5); draw2(0.25, -0.5); draw2(0, -0.25); break; case 'H': move2(0, 0); draw2(0, 1); move2(1, 0); draw2(1, 1); move2(0, 0.4); draw2(1, 0.4); break; case 'h': move2(0, 0); draw2(0, 1.2); move2(0, 0.5); draw2(0.25, 0.75); draw2(0.75, 0.75); draw2(1, 0.5); draw2(1, 0); break; case 'I': move2(0.25, 0); draw2(0.75, 0); move2(0.5, 0); draw2(0.5, 1); move2(0.25, 1); draw2(0.75, 1); break; case 'i': move2(0.5, 0); draw2(0.5, 0.6); move2(0.5, 0.9); draw2(0.5, 1); break; case 'J': move2(0, 0.5); draw2(0, 0.25); draw2(0.25, 0); draw2(0.75, 0); draw2(1, 0.25); draw2(1, 1); break; case 'j': move2(0.5, 0.9); draw2(0.5, 1); move2(0.5, 0.75); draw2(0.5, 0); draw2(0.25, -0.25); break; case 'K': move2(0, 0); draw2(0, 1); move2(0, 0.333); draw2(1, 1); move2(0.5, 0.667); draw2(1, 0); break; case 'k': move2(0.25, 0); draw2(0.25, 1); move2(0.25, 0.25); draw2(1, 0.75); move2(0.5, 0.45); draw2(1, 0); break; case 'L': move2(1, 0); draw2(0, 0); draw2(0, 1); break; case 'l': move2(0.5, 1); draw2(0.5, 0); draw2(0.75, 0); break; case 'M': move2(0, 0); draw2(0, 1); draw2(0.5, 0.5); draw2(1, 1); draw2(1, 0); break; case 'm': move2(0, 0); draw2(0, 0.75); move2(0, 0.5); draw2(0.25, 0.75); draw2(0.5, 0.25); draw2(0.75, 0.75); draw2(1, 0.5); draw2(1, 0); break; case 'N': move2(0, 0); draw2(0, 1); draw2(1, 0); draw2(1, 1); break; case 'n': move2(0.25, 0); draw2(0.25, 0.75); move2(0.25, 0.5); draw2(0.5, 0.75); draw2(0.75, 0.75); draw2(1, 0.6); draw2(1, 0); break; case 'O': move2(0.25, 0); draw2(0.75, 0); draw2(1, 0.25); draw2(1, 0.75); draw2(0.75, 1); draw2(0.25, 1); draw2(0, 0.75); draw2(0, 0.25); draw2(0.25, 0); break; case 'o': move2(0, 0.25); draw2(0, 0.5); draw2(0.25, 0.75); draw2(0.75, 0.75); draw2(1, 0.5); draw2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); break; case 'P': move2(0, 0); draw2(0, 1); draw2(0.75, 1); draw2(1, 0.75); draw2(0.75, 0.5); draw2(0, 0.5); break; case 'p': move2(0, 0.25); draw2(0, 0.5); draw2(0.25, 0.75); draw2(0.75, 0.75); draw2(1, 0.5); draw2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); move2(0, 0.75); draw2(0, -0.5); break; case 'Q': move2(0.25, 0); draw2(0.75, 0); draw2(1, 0.25); draw2(1, 0.75); draw2(0.75, 1); draw2(0.25, 1); draw2(0, 0.75); draw2(0, 0.25); draw2(0.25, 0); move2(0.7, 0.30); draw2(1, 0); break; case 'q': move2(0, 0.25); draw2(0, 0.5); draw2(0.25, 0.75); draw2(0.75, 0.75); draw2(1, 0.5); draw2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); move2(1, 0.75); draw2(1, -0.5); break; case 'R': move2(0, 0); draw2(0, 1); draw2(0.75, 1); draw2(1, 0.75); draw2(0.75, 0.5); draw2(0, 0.5); move2(0.5, 0.5); draw2(1, 0); break; case 'r': move2(0.25, 0); draw2(0.25, 0.75); draw2(0.25, 0.5); draw2(0.5, 0.75); draw2(0.75, 0.75); draw2(1, 0.6); break; case 'S': move2(0, 0.25); draw2(0.25, 0); draw2(0.75, 0); draw2(1, 0.25); draw2(0.75, 0.5); draw2(0.25, 0.5); draw2(0, 0.75); draw2(0.25, 1); draw2(0.75, 1); draw2(1, 0.75); break; case 's': move2(0, 0.25); draw2(0.25, 0); draw2(0.75, 0); draw2(1, 0.25); draw2(0.75, 0.45); draw2(0.25, 0.45); draw2(0, 0.625); draw2(0.25, 0.75); draw2(0.75, 0.75); draw2(1, 0.625); break; case 'T': move2(0, 1); draw2(1, 1); move2(0.5, 1); draw2(0.5, 0); break; case 't': move2(0.5, 1); draw2(0.5, 0); draw2(0.75, 0); move2(0.2, 0.667); draw2(0.8, 0.667); break; case 'U': move2(0, 1); draw2(0, 0.25); draw2(0.25, 0); draw2(0.75, 0); draw2(1, 0.25); draw2(1, 1); break; case 'u': move2(0, 0.75); draw2(0, 0.25); draw2(0.25, 0); draw2(0.75, 0); draw2(1, 0.25); draw2(1, 0.75); break; case 'V': move2(0, 1); draw2(0.5, 0); draw2(1, 1); break; case 'v': move2(0, 0.75); draw2(0.5, 0); draw2(1, 0.75); break; case 'W': move2(0.0, 1.0); draw2(0.2, 0.0); draw2(0.5, 0.4); draw2(0.80, 0.0); draw2(1.0, 1.0); break; case 'w': move2(0, 0.75); draw2(0.25, 0); draw2(0.5, 0.5); draw2(0.75, 0); draw2(1, 0.75); break; case 'X': move2(0, 1); draw2(1, 0); move2(0, 0); draw2(1, 1); break; case 'x': move2(0, 0.75); draw2(1, 0); move2(0, 0); draw2(1, 0.75); break; case 'Y': move2(0, 1); draw2(0.5, 0.5); draw2(1, 1); move2(0.5, 0.5); draw2(0.5, 0); break; case 'y': move2(0, 0.75); draw2(0.5, 0.1); move2(1, 0.75); draw2(0, -0.5); break; case 'Z': move2(0, 1); draw2(1, 1); draw2(0, 0); draw2(1, 0); break; case 'z': move2(0, 0.75); draw2(1, 0.75); draw2(0, 0); draw2(1, 0); break; case '0': move2(0.25, 0); draw2(0.75, 0); draw2(1, 0.25); draw2(1, 0.75); draw2(0.75, 1); draw2(0.25, 1); draw2(0, 0.75); draw2(0, 0.25); draw2(0.25, 0); break; case '1': move2(0.5, 0); draw2(0.5, 1); draw2(0.3, 0.75); move2(0.25, 0); draw2(0.75, 0); break; case '2': move2(0, 0.75); draw2(0.25, 1); draw2(0.75, 1); draw2(1, 0.75); draw2(0.75, 0.5); draw2(0, 0.25); draw2(0, 0); draw2(1, 0); case '3': move2(0, 1); draw2(1, 1); draw2(1, 0.8); draw2(0.5, 0.6); draw2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); break; case '4': move2(1, 0); draw2(1, 1); draw2(0, 0.4); draw2(1, 0.4); break; case '5': move2(1, 1); draw2(0, 1); draw2(0, 0.6); draw2(0.75, 0.6); draw2(1, 0.3); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); break; case '6': move2(1, 0.75); draw2(0.75, 1); draw2(0.25, 1); draw2(0, 0.75); draw2(0, 0.25); draw2(0.25, 0); draw2(0.75, 0); draw2(1, 0.2); draw2(1, 0.4); draw2(0.75, 0.6); draw2(0.25, 0.6); draw2(0, 0.2); break; case '7': move2(0, 1); draw2(1, 1); draw2(0.25, 0.25); draw2(0.25, 0); break; case '8': move2(0.25, 0); draw2(0, 0.25); draw2(0.25, 0.5); draw2(0.1, 0.75); draw2(0.25, 1); draw2(0.75, 1); draw2(0.9, 0.75); draw2(0.75, 0.5); draw2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); move2(0.25, 0.5); draw2(0.75, 0.5); break; case '9': move2(1, 0.5); draw2(0.25, 0.5); draw2(0, 0.75); draw2(0.25, 1); draw2(0.75, 1); draw2(1, 0.75); draw2(1, 0.5); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); break; case '.': move2(0.5, 0); draw2(0.6, 0); break; case ',': move2(0.5, 0); draw2(0.6, 0); draw2(0.4, -0.2); break; case '(': move2(0.9, -0.2); draw2(0.75, 0); draw2(0.5, 0.25); draw2(0.5, 0.75); draw2(0.75, 1); draw2(0.9, 1.2); break; case ')': move2(0.1, -0.2); draw2(0.25, 0); draw2(0.5, 0.25); draw2(0.5, 0.75); draw2(0.25, 1); draw2(0.1, 1.2); break; case '-': move2(0.25, 0.5); draw2(0.75, 0.5); break; case '+': move2(0.15, 0.5); draw2(0.85, 0.5); move2(0.5, 0.16); draw2(0.5, 0.84); break; case '=': move2(0.15, 0.25); draw2(0.85, 0.25); move2(0.15, 0.75); draw2(0.85, 0.75); break; case ':': move2(0.5, 0); draw2(0.6, 0); draw2(0.6, 0.2); draw2(0.5, 0.2); draw2(0.5, 0); move2(0.5, 0.5); draw2(0.6, 0.5); draw2(0.6, 0.7); draw2(0.5, 0.7); draw2(0.5, 0.5); break; /**************************************/ /* "@" is used to represent the */ /* copyright symbol */ /**************************************/ case '@': move2(0, 0.25); draw2(0, 0.75); draw2(0.25, 1); draw2(0.75, 1); draw2(1, 0.75); draw2(1, 0.25); draw2(0.75, 0); draw2(0.25, 0); draw2(0, 0.25); move2(0.75, 0.75); draw2(0.5, 0.75); draw2(0.25, 0.5); draw2(0.5, 0.25); draw2(0.75, 0.25); break; case '?' : move2(0.2, 0.7); draw2(0.3, 1.0); draw2(0.9, 1.0); draw2(1.0, 0.7); draw2(1.0, 0.6); draw2(0.7, 0.5); draw2(0.5, 0.5); draw2(0.5, 0.2); move2(0.5, 0.1); draw2(0.5, 0.0); break; } /* end case */ popmatrix(); translate(1.0, 0.0, 0.0); } /* end i loop */ popmatrix(); } /* end easy font procedure */