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

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)的處理。

主站蜘蛛池模板: 镇原县| 洪雅县| 咸宁市| 怀宁县| 无极县| 五莲县| 常山县| 蓬溪县| 西丰县| 怀集县| 贵定县| 介休市| 滁州市| 长葛市| 嘉鱼县| 芒康县| 兴业县| 和林格尔县| 鲁甸县| 虞城县| 建昌县| 楚雄市| 莱芜市| 浏阳市| 杭锦旗| 富宁县| 临澧县| 昭通市| 北辰区| 增城市| 肥乡县| 美姑县| 河曲县| 吉安市| 茂名市| 西和县| 平利县| 山阳县| 西平县| 芦溪县| 阿拉善左旗|