需求:狙擊手***使用xx槍,射擊敵人***,敵人生命值歸0,應聲倒下
分析設計類:
封裝狙擊手類 屬性: 名字 行為:撿槍 裝彈 射擊
封裝槍類 屬性: 型號 行為:射擊
封裝彈夾類 屬性:彈夾容量 儲存子彈的列表
封裝子彈類 屬性:傷害值 移動速度 行為:移動
封裝敵人類 屬性:名稱 生命值
#狙擊手類
class sniper:
def __init__(self,name):
self.name = name
# self.gun = none
#撿槍def pickupgun(self):
gun = gun('awm')
#給物件新增乙個gun的屬性
self.gun = gun
#裝彈def loading(self):
#建立乙個彈容量為10的彈夾
clip = clip(10)
for i in range(clip.capacity):
bullet = bullet()
#迴圈裝子彈
#給你擁有的槍新增乙個屬性
self.gun.clip = clip
#射擊敵人
def shoot(self,enemy):
print('{}瞄準{}進行射擊'.format(self.name,enemy.name))
self.gun.shoot(enemy)
#槍類class gun:
def __init__(self,type):
self.type = type
#槍的射擊功能
def shoot(self,enemy):
while enemy.hp > 0:
# 將子彈從彈夾中移除
bullet = self.clip.bullet_list.pop()
enemy.hp -= bullet.damage
if enemy.hp <= 0:
bullet.move()
print('敵人{}應聲倒下'.format(enemy.name))
#彈夾類
class clip:
def __init__(self,capacity):
#彈夾容量
self.capacity = capacity
#用來儲存子彈的列表
self.bullet_list =
#子彈類
class bullet:
def __init__(self):
self.damage = 100
self.speed = 1000
def move(self):
print('子彈以{}m/s向敵人'.format(self.speed))
#敵人類
class enemy:
def __init__(self,name,hp):
self.name = name
self.hp = hp
#建立狙擊手物件
sniper = sniper('海豹突擊1號')
#狙擊手撿槍
sniper.pickupgun()
# print(dir(sniper))
# print(dir(sniper.gun))
#裝彈sniper.loading()
# print(dir(sniper.gun))
# #列印狙擊手的槍的彈夾的子彈列表中的子彈
# print(sniper.gun.clip.bullet_list)
# #建立敵人物件
enemy = enemy('小日本1',100)
#射擊sniper.shoot(enemy)
print('槍中剩餘子彈{}發'.format(len(sniper.gun.clip.bullet_list)))
物件導向思想,匿名物件,封裝
概念 基於面向過程,將過程進行物件的封裝。特點 物件導向是一種更符合思考習慣的思想 從過程的執行者,轉換成物件的指揮者 將複雜問題簡單化 類 用於描述事物 物件 類中事物具體的個體 概念 沒有名字的物件,是物件的簡化定義方式 匿名物件可以作為實際引數進行傳遞 如果物件對方法只進行一次呼叫,可以簡化為...
物件導向封裝外掛程式思想 jquery
寫了很多年的js 對於封裝成乙個通用的外掛程式 用過很多種方法 現在來一一來記錄下 所謂積累便是進步 每天一點點 每天就是一大步 廢話不多說我來看下 1.常用的jq 申明表示式 進行封裝的物件 看起來是不是很清晰 又不汙染變數 var a function var pml extend true,l...
go物件導向思想 封裝 繼承 多型
go 如何實現的封裝 繼承 和多型 封裝 go中是通過結構體的方法去模擬類 package objects 通過結構體的方式去模擬類 type user struct 根據方法的首字母的大小寫去判斷是否外部訪問 func user user getbike string 繼承 我們編寫乙個使用者資訊...