GO ---多型インターフェイス05オブジェクト指向言語

主パッケージ

のインポート"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 
死体が散らばっ鉄ヒール転がり、

防衛射手
メイジ防衛

  

おすすめ

転載: www.cnblogs.com/yunweiqiang/p/11925141.html