过程式编程-绘图程序
来源:互联网 发布:nginx rtmp 直播配置 编辑:程序博客网 时间:2024/04/25 06:28
#import <Foundation/Foundation.h>/*------------------------ ------------------------*///创建一个枚举ShapeType,形状typedef enum { kCircle ,kRectangle ,kOblateSpheroid }ShapeType;//创建一个枚举ShapeColor,颜色typedef enum { kRedcolor ,kGreencolor ,kBluecolor }ShapeColor;//创建一个结构体,大小typedef struct { int x,y,width,height;}ShapeRect;//创建一个结构体,形状主体,包含形状,颜色,大小typedef struct { ShapeType type; // 形状创建一个实例type ShapeColor fillcolor; // 颜色创建一个实例 fillcolor ShapeRect bounds; // 形状大小创建一个实例 bounds}Shape;//函数声明void drawShapes(Shape shapes[],int count);void drawCircle(ShapeRect bounds,ShapeColor fillcolor);void drawRectangle(ShapeRect bounds,ShapeColor fillcolor);void drawOblateSpheroid(ShapeRect bounds,ShapeColor fillcolor);NSString *colorName (ShapeColor colorName);NSString *colorName (ShapeColor colorName);//主函数int main (int argc, const char * argv[]){ Shape shapes[3]; ShapeRect rect0 = {0,0,10,30}; shapes[0].type = kCircle; shapes[0].fillcolor = kRedcolor; shapes[0].bounds = rect0; ShapeRect rect1 = {30,40,50,60}; shapes[1].type = kRectangle; shapes[1].fillcolor = kGreencolor; shapes[1].bounds = rect1; ShapeRect rect2 = {15,18,37,29}; shapes[2].type = kOblateSpheroid; shapes[2].fillcolor = kBluecolor; shapes[2].bounds = rect2; drawShapes (shapes,3); return 0;}void drawShapes(Shape shapes[],int count){ int i; for (i=0; i<count; i++) { switch (shapes[i].type) { case kCircle: drawCircle(shapes[i].bounds ,shapes[i].fillcolor); break; case kRectangle: drawRectangle(shapes[i].bounds ,shapes[i].fillcolor); break; case kOblateSpheroid: drawOblateSpheroid(shapes[i].bounds ,shapes[i].fillcolor); break; } }}void drawCircle(ShapeRect bounds,ShapeColor fillcolor){ NSLog(@"drawing a circle at (%d %d %d %d) in %@" ,bounds.x ,bounds.y ,bounds.width ,bounds.height,colorName(fillcolor));}//drawCiclevoid drawRectangle(ShapeRect bounds,ShapeColor fillcolor){ NSLog(@"drawing a drawRectangle at (%d %d %d %d) in %@" ,bounds.x ,bounds.y ,bounds.width ,bounds.height,colorName(fillcolor));}//drawRectanglevoid drawOblateSpheroid(ShapeRect bounds,ShapeColor fillcolor){ NSLog(@"drawing a drawOblateSpheroid at (%d %d %d %d) in %@" ,bounds.x ,bounds.y ,bounds.width ,bounds.height,colorName(fillcolor));}//drawOblateSpheroidNSString *colorName (ShapeColor colorName){ switch (colorName) { case kRedcolor: return @"red"; break; case kGreencolor: return @"green"; break; case kBluecolor: return @"blue"; break; } return @"no clue";}//colorName