// main.m// HelloWorld// Created by jimmy.yang on 11-1-24.// Copyright 2011 __MyCompanyName__. All rights reserved.#import <Foundation/Foundation.h>//定義“幾何形狀類型”枚舉typedef enum{kCircle,kRectangle,kOblatesShperoid} ShapeType;//定義“幾何形狀顏色”枚舉typedef enum{kRedColor,kGreenColor,kBlueColor} ShapeColor;//定義“幾何形狀矩形地區”結構typedef struct{int x,y,width,height;} ShapeRect;//定義“幾何形狀”結構typedef struct{ShapeType type;ShapeColor fillColor;ShapeRect bounds;}Shape;//返回“枚舉顏色”的名稱NSString *colorName(ShapeColor colorName){switch (colorName) {case kRedColor:return @"red";break;case kGreenColor:return @"green";break;case kBlueColor:return @"blue";break;default:return @"no clue";break;}}//colorName//畫圓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));}//drawCircle//畫矩形void drawRectangle(ShapeRect bounds,ShapeColor fillColor){NSLog(@"drawing a rectangle at (%d,%d,%d,%d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));}//drawRectangle//畫橢圓形void drawEgg(ShapeRect bounds,ShapeColor fillColor){NSLog(@"drawing an egg at (%d,%d,%d,%d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));}//drawEgg//畫幾何形狀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 kOblatesShperoid:drawEgg(shapes[i].bounds,shapes[i].fillColor);break;default:break;}}}//drawShapes//主程式入口int main(int argc, 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,39};shapes[2].type = kOblatesShperoid;shapes[2].fillColor = kBlueColor;shapes[2].bounds = rect2;drawShapes(shapes, 3);return (0);}
Console視窗的運行結果:
2011-01-25 13:49:05.978 HelloWorld[734:a0f] drawing a circle at (0,0,10,30) in red
2011-01-25 13:49:06.016 HelloWorld[734:a0f] drawing a rectangle at (30,40,50,60) in green
2011-01-25 13:49:06.018 HelloWorld[734:a0f] drawing an egg at (15,18,37,39) in blue