主パッケージ のインポート"FMT" 型インターフェース{戦闘 攻撃()(INT bloodloss) 守る() } / *騎馬* / タイプstruct {}ライダー FUNC(R&LT *ライダー)攻撃()(bloodloss INT){ fmt.Println( "鉄ヒール圧延は、虐殺\ N- ') 100を返す } FUNC(R&ライダーLT *)(防御){ fmt.Println( "騎兵防御") } / *アーチャー* / タイプstruct {}アーチャー FUNC(アーチャー* A)アタック()(bloodloss INT){ fmt.Println( "千本の矢ショット!\ N-") の復帰50 } FUNC(A *アーチャー))(防衛{ fmt.Printlnを( "アーチャー防衛") } / *マスター* / タイプstruct {}マスター FUNC(A *マスター)攻撃()(bloodloss INT){ fmt.Println(「アブラカダブラ雲が万人の兵士を飛ぶ!\ n」は) 復帰50 } FUNC(A *マスター)守る(){ fmt.Println( "メイジディフェンス") } FUNCメイン(){ //軍作成 戦闘機を:=メイク([]ファイター、0) //より多くの兵士を追加アスペクト実現 ファイター=アペンド(戦闘機、&ライダー{}) 戦闘機=アペンド(戦闘機、&アーチャー{}) 戦闘機=アペンド(戦闘機、&マスター{}) / *は 、ユーザーが作るために送信することができます 第1の代表騎士第二代表射手を例えば、マスター、9 =犯罪、防衛= 0、第三代表: 999 =すべての攻撃 、防御000 =全て 090 =射手の攻撃、軍事防衛の他の支店 * / 文字列cmdをVAR {のために fmt.Println(「一般的な、してくださいヘラルド:「) fmt.Scan(&CMD) スイッチCMD { fighter.Attack() } ケース"終了": ゲームオーバーGOTO ケース「すべての攻撃」: //すべての攻撃 _、ファイター用:=レンジファイターズ{ ケース"すべて防御": //すべての防衛 _、ファイター用:=レンジファイターズ{ fighter.Defend() } デフォルト: / *異なるコマンドの異なるアームを実行* / //アサーション: / * _、Fのために:=戦闘機{範囲 //スケジューリング騎兵 _ IF、OK:F =(*ライダー); {OK。 IF [0] == cmdを{」9' f.Attack() } {他 f.Defend() } } //スケジューリングアーチャー IF _、OK:F =(*アーチャー); {OK。 IFに、cmd == {[1]」9' f.Attack() } {他 f.Defend() } } //スケジューリングマスタ 「9' IF [2] == cmdを{ 。_、OKであれば:= F(*マスター); OK { } f.Attack() }他{ f.Defend() } } } * / //断言方法二: _、戦闘機用:= {範囲戦闘機 。スイッチ戦闘機(タイプ){ ケース*ライダー: もしCMD [0] = = '9' { fighter.Attack() }他{ fighter.Defend() } ケース*アーチャー: もしCMD [1] == '9' { fighter.Attack() }他{ fighter.Defend() } ケース*マスタ: もしCMD [2] == '9' { fighter.Attack() }他{ fighter.Defend() } } } } ゲームオーバー: fmt.Println( "ゲームオーバー!") }
出力:
一般的な、してくださいメッセンジャー: 000 騎兵防衛 アーチャー防衛 マスター守備の 将軍、してくださいメッセンジャー: 999 鉄のかかとの転がり、死体が散らばっ 千の矢印ショットが! アブラカダブラクラウドは、万人の兵士を飛びます! 一般的な、してくださいメッセンジャー: 090 騎兵防衛 千の矢印ショット! マスターの防御 将軍は、メッセンジャーしてください: すべての攻撃 の死体が散らばって残酷な波打ち、 千の矢印ショットを! アブラカダブラクラウドは、万人の兵士を飛びます! 一般的な、してくださいメッセンジャー: 全体の防衛 騎兵防衛 防衛射手 マスター守備の 将軍、してくださいメッセンジャー: 909 死体が散らばっ鉄ヒール転がり、 防衛射手 万人の兵士を飛んアブラカダブラクラウド! 一般的な、してくださいメッセンジャー: 900 死体が散らばっ鉄ヒール転がり、 防衛射手 メイジ防衛