官术网_书友最值得收藏!

3.3 選擇語句

在游戲中,對(duì)于基本的方向控制,一般需要處理四個(gè)方向的操作,在類似這種情況下,即一個(gè)條件、多種可能時(shí),可以使用switch語句結(jié)構(gòu),其應(yīng)用格式如下。

    switch(<表達(dá)式>)
    {
    case <值1>:
        {
            <語句塊1>
        }break;
    case <值2>:
        {
            <語句塊2>
        }break;
    case <值n>:
        {
            <語句塊n>
        }break;
    default:
        {
            <語句塊n+1>
        }break;
    }

在switch語句結(jié)構(gòu)中,我們可以看到,只有一個(gè)確定執(zhí)行條件的<表達(dá)式>,而每一個(gè)case語句對(duì)應(yīng)一個(gè)<表達(dá)式>的值。在這里,應(yīng)注意每一個(gè)case所對(duì)應(yīng)的語句塊結(jié)束時(shí),都應(yīng)該有一個(gè)break語句,其原因是,case語句具有向下貫穿的特性,如果沒有break語句中斷當(dāng)前case語句塊,則會(huì)一直向下執(zhí)行,直到遇到中斷語句(如break、return等語句)或者是switch語句結(jié)構(gòu)全部執(zhí)行完成。

此外,每個(gè)case語句或default語句后的代碼也可以不使用花括號(hào),這主要取決于編程習(xí)慣,而break語句也可以放在每個(gè)case后{}的內(nèi)部或在}后面,這也只是一個(gè)編程習(xí)慣問題。

下面的代碼,我們就來模擬駕駛指令。

    typedef enum EDirection {
    Unknow, Up, Right, Down, Left
    } Direction;
    //
    Direction d = Up;
    //
    switch (d) {
    case Up:
        NSLog(@"前進(jìn)");
        break;
    case Right:
        NSLog(@"右轉(zhuǎn)");
        break;
    case Down:
        NSLog(@"倒車");
        break;
    case Left:
        NSLog(@"左轉(zhuǎn)");
        break;
    default:
        NSLog(@"停止");
        break;
    }

我們首先定義了一個(gè)方向枚舉類型,然后通過switch語句結(jié)構(gòu)判斷操作方向,分別顯示操作指令。大家可以修改變量d的值,并觀察代碼執(zhí)行的結(jié)果。

下面的代碼繼續(xù)演示一個(gè)日期相關(guān)的處理,我們利用case的貫穿特性來返回某年某月中的天數(shù)。

    int year = 2006;
    int month = 2;
    int days = 0;
    switch(month)
    {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            days = 31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            days = 30;
            break;
        case 2:
            days = ((year%100! =0 && year%4==0) || year%400==0) ? 29 : 28;
            break;
        default:
            days = 0;
            break;
    }
    NSLog(@"%i年%i月有%i天", year, month, days);

請(qǐng)注意,在switch語句結(jié)構(gòu)中總是使用default語句塊,可以保證<表達(dá)式>的結(jié)果在任何數(shù)據(jù)時(shí)都會(huì)有相應(yīng)的處理。

主站蜘蛛池模板: 西乡县| 上林县| 津南区| 天祝| 镇平县| 临夏县| 永福县| 黔东| 徐闻县| 屏边| 衡阳市| 沧州市| 龙泉市| 平阳县| 都兰县| 涞水县| 如东县| 上虞市| 毕节市| 临海市| 天全县| 盈江县| 巴里| 东港市| 舟山市| 藁城市| 红桥区| 芮城县| 淮滨县| 虹口区| 庄河市| 威宁| 古丈县| 安福县| 内江市| 龙海市| 沁水县| 贡嘎县| 永嘉县| 台东市| 成都市|