<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>