練習(xí)2:寵物管理系統(tǒng)

<script>

? ? ? ? // 定義一個(gè)寵物類

? ? ? ? class Pet{

? ? ? ? ? ? constructor(name, type, gender, health, love, master = null){

? ? ? ? ? ? ? ? // 昵稱

? ? ? ? ? ? ? ? this.name = name

? ? ? ? ? ? ? ? // 種類

? ? ? ? ? ? ? ? this.type = type

? ? ? ? ? ? ? ? // 性別

? ? ? ? ? ? ? ? this.gender = gender

? ? ? ? ? ? ? ? // 健康值

? ? ? ? ? ? ? ? this.health = health

? ? ? ? ? ? ? ? // 親密度

? ? ? ? ? ? ? ? this.love = love

? ? ? ? ? ? ? ? // 主人(對(duì)象)

? ? ? ? ? ? ? ? this.master = master

? ? ? ? ? ? }

? ? ? ? ? ? // 介紹寵物方法

? ? ? ? ? ? sayHi(){

? ? ? ? ? ? ? ? console.log(`我是一只${this.type},我叫${this.name},我是${this.gender === 1? '男生':'女生'},我的主人是${this.master.username}。

健康值:${this.health} ?親密度:${this.love}`);

? ? ? ? ? ? }

? ? ? ? ? ? // 寵物吃方法

? ? ? ? ? ? eat(){

? ? ? ? ? ? ? ? if(this.health < 100){

? ? ? ? ? ? ? ? ? ? console.log(`我正在吃東西~~`);

? ? ? ? ? ? ? ? ? ? console.log(`健康值:${this.health} => ${this.health += 5}`);

? ? ? ? ? ? ? ? ? ? console.log(`真不錯(cuò),好好吃呀~~`);

? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? console.log(`蕪湖,我已經(jīng)吃飽了,主人,我們?nèi)ネ姘蓗~`);

? ? ? ? ? ? ? ? ? ? console.log(`健康值:${this.health}`);

? ? ? ? ? ? ? ? ? ? console.log(`親密度:${this.love}`)

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? // 寵物玩方法

? ? ? ? ? ? play(){

? ? ? ? ? ? ? ? if(this.health > 30){

? ? ? ? ? ? ? ? ? ? console.log(`我正在做游戲,做呀做游戲~~鬼刀一開看不見,走位走位~~`);

? ? ? ? ? ? ? ? ? ? console.log(`親密度:${this.love} => ${this.love += 3}`);

? ? ? ? ? ? ? ? ? ? console.log(`健康值:${this.health} => ${this.health -= 5}`);

? ? ? ? ? ? ? ? ? ? console.log(`真不錯(cuò),我好開心啊~~`);

? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? console.log(`好累呀,我餓了,我要吃好吃的~~`);

? ? ? ? ? ? ? ? ? ? console.log(`健康值:${this.health}`);

? ? ? ? ? ? ? ? ? ? console.log(`親密度:${this.love}`)

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? // 定義一個(gè)用戶類

? ? ? ? class User{

? ? ? ? ? ? constructor(username, loginid, password, pet=null){

? ? ? ? ? ? ? ? // 昵稱

? ? ? ? ? ? ? ? this.username = username

? ? ? ? ? ? ? ? // 登錄id

? ? ? ? ? ? ? ? this.loginid = loginid

? ? ? ? ? ? ? ? // 密碼

? ? ? ? ? ? ? ? this.password = password

? ? ? ? ? ? ? ? // 寵物

? ? ? ? ? ? ? ? this.pet = pet

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? // 定義一個(gè)寵物管理對(duì)象

? ? ? ? let petManager = {

? ? ? ? ? ? // 創(chuàng)建一個(gè)寵物信息數(shù)組

? ? ? ? ? ? pets: [

? ? ? ? ? ? ? ? new Pet('油條', '英短', 0, 100, 100),

? ? ? ? ? ? ? ? new Pet('豆?jié){', '邊牧', 1, 100, 100),

? ? ? ? ? ? ? ? new Pet('摩登', '拉布拉多犬', 1, 100, 100),

? ? ? ? ? ? ? ? new Pet('黑珍珠', '藏獒', 1, 100, 100),

? ? ? ? ? ? ? ? new Pet('佩奇', '寵物豬', 0, 100, 100)

? ? ? ? ? ? ],

? ? ? ? ? ? // 創(chuàng)建一個(gè)用戶信息數(shù)組

? ? ? ? ? ? users: [

? ? ? ? ? ? ? ? new User('玥歆','153124','123456'),

? ? ? ? ? ? ? ? new User('陽仔','107625','123456'),

? ? ? ? ? ? ? ? new User('張三','112233','123456'),

? ? ? ? ? ? ? ? new User('李四','223344','123456')

? ? ? ? ? ? ],

? ? ? ? ? ? // 當(dāng)前登錄用戶屬性

? ? ? ? ? ? currentUser: null,

? ? ? ? ? ? // 查看寵物方法

? ? ? ? ? ? showPet(){

? ? ? ? ? ? ? ? console.log('*****************查看寵物*****************');

? ? ? ? ? ? ? ? console.log('昵稱\t類型\t性別\t健康值\t親密度\t主人');

? ? ? ? ? ? ? ? this.pets.forEach((p, index) => console.log(`${p.name}\t${p.type}\t${p.gender === 1 ? '男生' : '女生'}\t${p.health}\t ? ?${p.love}\t ? ?${p.master === null? '暫無' : p.master.username}`))

? ? ? ? ? ? },

? ? ? ? ? ? // 領(lǐng)養(yǎng)寵物方法

? ? ? ? ? ? adoptPet(){

? ? ? ? ? ? ? ? console.log(`*****************領(lǐng)養(yǎng)寵物*****************`);

? ? ? ? ? ? ? ? // 定義一個(gè)待領(lǐng)養(yǎng)的寵物對(duì)象

? ? ? ? ? ? ? ? let pet = null

? ? ? ? ? ? ? ? // some()方法,用于表示數(shù)組中是否有滿足指定規(guī)則的元素,有返回true,一個(gè)都沒有返回false

? ? ? ? ? ? ? ? // 先判斷當(dāng)前登錄用戶是否已經(jīng)領(lǐng)養(yǎng)過寵物

? ? ? ? ? ? ? ? if(this.pets.some(p => p.master === this.currentUser)){

? ? ? ? ? ? ? ? ? ? // 獲取當(dāng)前用戶領(lǐng)養(yǎng)的那只寵物

? ? ? ? ? ? ? ? ? ? pet = this.pets.find(p => p.master === this.currentUser)

? ? ? ? ? ? ? ? ? ? alert(`您已經(jīng)領(lǐng)養(yǎng)了${pet.name}!不可一心二用哦~~`)

? ? ? ? ? ? ? ? ? ? console.log(`您已經(jīng)領(lǐng)養(yǎng)了${pet.name}!`)

? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? while(true){

? ? ? ? ? ? ? ? ? ? ? ? let petName = prompt('請(qǐng)輸入需要領(lǐng)養(yǎng)的寵物昵稱:')

? ? ? ? ? ? ? ? ? ? ? ? // 根據(jù)昵稱找到該寵物對(duì)象

? ? ? ? ? ? ? ? ? ? ? ? pet = this.pets.find(p => p.name === petName)

? ? ? ? ? ? ? ? ? ? ? ? if(!pet){

? ? ? ? ? ? ? ? ? ? ? ? ? ? alert(`${petName}不存在!請(qǐng)重新輸入`)

? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log(`${petName}不存在!`)

? ? ? ? ? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? ? ? ? ? //

? ? ? ? ? ? ? ? ? ? ? ? ? ? if(pet.master === null){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 設(shè)置該寵物的主人是當(dāng)前登錄用戶

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pet.master = this.currentUser

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? this.currentUser.pet = pet

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert(`您已成功領(lǐng)養(yǎng)了${petName},寵物是人類的朋友,請(qǐng)君善待它!`)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log(`您已成功領(lǐng)養(yǎng)了${petName}`)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break

? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert(`${petName}已經(jīng)有主人了,請(qǐng)君切勿奪人所愛!`)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log(`${petName}已經(jīng)有主人了`)

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? console.log(pet.name);

? ? ? ? ? ? ? ? // 調(diào)用寵物菜單方法,注意:該方法需要傳一個(gè)寵物對(duì)象作為參數(shù)。

? ? ? ? ? ? ? ? this.petMenu()

? ? ? ? ? ? },

? ? ? ? ? ? // 寵物的菜單方法

? ? ? ? ? ? petMenu(pet=this.currentUser.pet){

? ? ? ? ? ? ? ? while(true){

? ? ? ? ? ? ? ? ? ? console.log('*****************寵物菜單*****************');

? ? ? ? ? ? ? ? ? ? let no = parseInt(prompt(`寵物技能:\n1.打個(gè)招呼 ?2.喂食 ?3.溜一圈 ?4.退出`))

? ? ? ? ? ? ? ? ? ? switch (no) {

? ? ? ? ? ? ? ? ? ? ? ? case 1:

? ? ? ? ? ? ? ? ? ? ? ? ? ? pet.sayHi()

? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? case 2:

? ? ? ? ? ? ? ? ? ? ? ? ? ? pet.eat()

? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? case 3:

? ? ? ? ? ? ? ? ? ? ? ? ? ? pet.play()

? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? default:

? ? ? ? ? ? ? ? ? ? ? ? ? ? alert(`期待下次您與寵物的快樂時(shí)光~~`)

? ? ? ? ? ? ? ? ? ? ? ? ? ? return

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? },

? ? ? ? ? ? // 業(yè)務(wù)菜單

? ? ? ? ? ? menu(){

? ? ? ? ? ? ? ? console.log(`*****************歡迎使用寵物管理系統(tǒng)*****************`);

? ? ? ? ? ? ? ? let no = parseInt(prompt('1.查看寵物 ?2.領(lǐng)養(yǎng)寵物 ?3.培養(yǎng)寵物 ?4.退出系統(tǒng)'))

? ? ? ? ? ? ? ? switch (no) {

? ? ? ? ? ? ? ? ? ? case 1:

? ? ? ? ? ? ? ? ? ? ? ? this.showPet()

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case 2:

? ? ? ? ? ? ? ? ? ? ? ? this.adoptPet()

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case 3:

? ? ? ? ? ? ? ? ? ? ? ? this.petMenu()

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? default:

? ? ? ? ? ? ? ? ? ? ? ? alert(`您已成功退出!`)

? ? ? ? ? ? ? ? ? ? ? ? return

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? arguments.callee.call(this)

? ? ? ? ? ? },

? ? ? ? ? ? // 注冊(cè)方法

? ? ? ? ? ? register(){

? ? ? ? ? ? ? ? console.log(`*****************用戶注冊(cè)*****************`);

? ? ? ? ? ? ? ? while(true){

? ? ? ? ? ? ? ? ? ? let username = prompt('請(qǐng)輸入您的昵稱:')

? ? ? ? ? ? ? ? ? ? if(!username){

? ? ? ? ? ? ? ? ? ? ? ? alert('昵稱不能為空!')

? ? ? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? ? ? let loginid = prompt('請(qǐng)輸入登錄ID:')

? ? ? ? ? ? ? ? ? ? ? ? if(!loginid){

? ? ? ? ? ? ? ? ? ? ? ? ? ? alert('登錄ID不能為空!')

? ? ? ? ? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? ? ? ? ? if(this.users.find(u => u.loginid === loginid)){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert('登錄ID重復(fù)!請(qǐng)重新輸入!')

? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? let password = prompt('請(qǐng)輸入密碼:')

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 創(chuàng)建一個(gè)新的用戶對(duì)象

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(password.length < 5){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert('密碼長度不得小于5位!')

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? let user = new User(username, loginid, password)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? this.users.push(user)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert('恭喜您已注冊(cè)成功!')

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log(`${loginid}注冊(cè)成功!`)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? arguments.callee.call(this)

? ? ? ? ? ? },

? ? ? ? ? ? // 登錄方法

? ? ? ? ? ? login(){

? ? ? ? ? ? ? ? console.log('*****************用戶登錄*****************');

? ? ? ? ? ? ? ? while(true){

? ? ? ? ? ? ? ? ? ? let loginid = prompt('請(qǐng)輸入登錄ID:')

? ? ? ? ? ? ? ? ? ? let password = prompt('請(qǐng)輸入密碼:')

? ? ? ? ? ? ? ? ? ? // 根據(jù)登錄名和密碼,查詢一個(gè)用戶對(duì)象

? ? ? ? ? ? ? ? ? ? let user = this.users.find(u => u.loginid === loginid && u.password === password)

? ? ? ? ? ? ? ? ? ? // 判斷是否登錄成功

? ? ? ? ? ? ? ? ? ? if(user){

? ? ? ? ? ? ? ? ? ? ? ? // 當(dāng)前用戶的屬性值變?yōu)閡ser

? ? ? ? ? ? ? ? ? ? ? ? this.currentUser = user

? ? ? ? ? ? ? ? ? ? ? ? alert(`用戶${user.username},登錄成功!`)

? ? ? ? ? ? ? ? ? ? ? ? if(user.pet !== null){

? ? ? ? ? ? ? ? ? ? ? ? ? ? alert(`您家的${user.pet.name}表示強(qiáng)烈的歡迎`)

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? console.log(`當(dāng)前用戶:${this.currentUser.username}--${this.currentUser.loginid},寵物:${this.currentUser.pet === null? '暫無': this.currentUser.pet.name}`);

? ? ? ? ? ? ? ? ? ? ? ? // 打開業(yè)務(wù)菜單

? ? ? ? ? ? ? ? ? ? ? ? this.menu()

? ? ? ? ? ? ? ? ? ? ? ? return

? ? ? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? ? ? alert('登錄失?。〉卿汭D或者密碼錯(cuò)誤!')

? ? ? ? ? ? ? ? ? ? ? ? console.log(`${loginid}登錄失敗!登錄ID或者密碼錯(cuò)誤!`)

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? arguments.callee.call(this)

? ? ? ? ? ? },

? ? ? ? ? ? // 主菜單方法

? ? ? ? ? ? sysMenu(){

? ? ? ? ? ? ? ? let no = parseInt(prompt(`************************歡迎使用寵物管理系統(tǒng)************************

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.登錄 ?2.注冊(cè) ?3.退出`))

? ? ? ? ? ? ? ? switch (no) {

? ? ? ? ? ? ? ? ? ? case 1:

? ? ? ? ? ? ? ? ? ? ? ? this.login()

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case 2:

? ? ? ? ? ? ? ? ? ? ? ? this.register()

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? default:

? ? ? ? ? ? ? ? ? ? ? ? alert(`您已成功退出,歡迎下次使用!`)

? ? ? ? ? ? ? ? ? ? ? ? return

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? arguments.callee.call(this)

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? // 調(diào)用系統(tǒng)菜單方法

? ? ? ? petManager.sysMenu()

</script>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容