1. 程式人生 > 遊戲 >《看門狗:軍團》聯動《刺客信條》新角色預告

《看門狗:軍團》聯動《刺客信條》新角色預告

start

# 啟動檔案:在這個檔案中右鍵執行程式碼
# import sys
#
# print(sys.path)
from core import src
if __name__ == '__main__':
    src.run()

src

import os
import json

user_data = {
    'username': None,
    'is_login': False
}
# 註冊功能
def register():
    print("註冊功能:")
    if user_data['is_login']:
        print("已經登入
") return while True: username = input('請輸入使用者名稱:>>').strip() # path = os.path.dirname(os.path.dirname(__file__)) path = settings.BASE_DIR # day19/db/egon.json path_file = os.path.join(path, 'db', '%s.json' % username) # 判斷是否存在, 其實就是判斷檔案是否存在
if os.path.exists(path_file): # 即可以判斷檔案也可以判斷資料夾是否存在 # if os.path.isfile(path_file): # 可以判斷檔案 # if os.path.isdir(path_file): # 可以判斷資料夾 dir => directory => 資料夾 print("使用者名稱已經存在") continue pwd = input('請輸入密碼:>>').strip()
# 註冊 user_dic = {'username': username, 'password': pwd, 'account': 10000, 'locked': False, 'flow': []} # 寫檔案 with open(path_file, 'w', encoding='utf-8') as f: json.dump(user_dic, f) # 寫日誌 from lib import common common.write_log("%s註冊成功" % username) print("恭喜哦~註冊成功") break """ user_data = { 'username': egon, 'is_login': True } """ from conf import settings def login(): print("登入功能:") count = 0 if user_data['is_login']: print("已經登入") return while True: username = input('請輸入使用者名稱:>>').strip() path = settings.BASE_DIR path_file = os.path.join(path, 'db', '%s.json' % username) if not os.path.isfile(path_file): print("使用者名稱不存在") continue # 查詢使用者資訊 with open(path_file, 'r', encoding='utf-8') as f: data = json.load(f) # dict if data.get('locked'): print("使用者已經鎖定,請聯絡我哦~") break pwd = input('請輸入密碼:>>').strip() # 判斷密碼是否正確 if pwd == data.get('password'): print("登入成功") user_data['username'] = username user_data['is_login'] = True # 寫日誌 from lib import common common.write_log('%s登入了' % username) break else: print("密碼錯誤") count += 1 if count == 3: data['locked'] = True with open(path_file, 'w', encoding='utf-8') as f: json.dump(data, f) """ user_data = { 'username':None, 'is_login':False } """ from lib import common from conf import settings import time # lib => library # 提現 @common.login_auth def withdraw(): """ 分析提現功能: 1. 輸入提現金額 2. 扣除手續費, 5% 3. 判斷金額是否足夠, 4. 把金額減掉 5. 新增流水 6. 新增日誌 :return: """ print("提現功能:") while True: # 1. 輸入提現金額 money = input('請輸入提現金額:>>').strip() if not money: continue if not money.isdigit(): print("輸入金額不合法") continue money = int(money) # 2. 讀取使用者資訊 # 讀取當前使用者的資訊 path = settings.BASE_DIR path_file = os.path.join(path, 'db', '%s.json' % user_data['username']) with open(path_file, 'r', encoding='utf-8') as f: user_dic = json.load(f) # 判斷金額是否足夠 if user_dic['account'] >= money * 1.05: # 修改金額 user_dic['account'] -= money * 1.05 # 再次寫入檔案 with open(path_file, 'w', encoding='utf-8') as f: json.dump(user_dic, f) print("提現成功,歡迎老闆~") break else: print("窮逼一個") continue # 轉賬 @common.login_auth def transfer(): """ 分析轉賬功能: 1. 輸入轉賬的賬戶,轉賬的賬戶必須存在 2. 輸入轉賬金額 3. 檢測自己的賬戶金額是否足夠 4. 增加對方賬戶的金額,自己賬戶的金額要減掉 5. 寫流水 6. 寫日誌 :return: """ print("轉賬功能:") while True: # 1. 輸入轉賬的賬戶 to_user = input('請輸入轉賬的賬戶使用者名稱:>>').strip() # 2. 驗證賬戶是否存在 path = settings.BASE_DIR to_path_file = os.path.join(path, 'db', '%s.json' % to_user) # 判斷轉賬的使用者是否存在 if not os.path.exists(to_path_file): print("使用者不存在") continue # 3. 輸入轉賬金額 transfer_money = int(input('請輸入轉賬金額:>>').strip()) # 4. 讀取自己的賬戶金額是否足夠 from_path_file = os.path.join(path, 'db', '%s.json' % user_data['username']) with open(from_path_file, 'r', encoding='utf-8') as f: from_user_dic = json.load(f) # 比較金額 if from_user_dic['account'] >= transfer_money: # 對方賬戶增加金額 with open(to_path_file, 'r', encoding='utf-8') as f1: to_user_dic = json.load(f1) to_user_dic['account'] += transfer_money to_user_dic['flow'].append('收到了%s的一筆轉賬%s元' % (from_user_dic['username'], transfer_money)) with open(to_path_file, 'w', encoding='utf-8') as f2: json.dump(to_user_dic, f2, ensure_ascii=False) # 自己的賬戶減掉金額 from_user_dic['account'] -= transfer_money from_user_dic['flow'].append('向%s轉了一筆錢%s元' % (to_user_dic['username'], transfer_money)) with open(from_path_file, 'w', encoding='utf-8') as f3: json.dump(from_user_dic, f3, ensure_ascii=False) print("轉賬成功") break else: print("沒錢啊,別裝了。。。") """ 充值必須要登入,就要有一個驗證登入的裝飾器 """ # 充值 @common.login_auth def pay(): """ 分析充值的需求: 1. 要輸入充值的金額 2. 要充值的賬號必須存在 3. 把賬戶的餘額修改掉 """ print("充值金額:") while True: # 1. 輸入充值金額 money = input('請輸入充值金額:>>').strip() # 驗證輸入的金額是否為數字 if not money.isdigit(): print("輸入金額不是數字") continue money = int(money) """ 1. 拿到你現在的餘額 2. 用你現在的餘額加上money """ # 讀取當前使用者的資訊 path = settings.BASE_DIR path_file = os.path.join(path, 'db', '%s.json' % user_data['username']) # 判斷當前使用者是否存在 if not os.path.exists(path_file): print("使用者不存在") continue # 讀取使用者資訊 with open(path_file, 'r', encoding='utf-8') as f: user_dic = json.load(f) # 獲取當前時間 # ctime = time.time() # 2021- now = time.strftime('%Y-%m-%d %X') # 增加賬號金額 user_dic['account'] += money user_dic['flow'].append('%s在%s充值了%s元' % (user_data['username'], now, money)) # user_dic['flow'].append('%s在%s充值了%s元') # {"username": "ly", "password": "123", "account": 10000, "locked": true} # with open(path_file, 'w', encoding='utf-8') as f: json.dump(user_dic, f, ensure_ascii=False) # 寫入流水 print("充值成功, 趕緊瀟灑哦") break # 檢視餘額 def check_money(): pass # 檢視流水 def check_flow(): pass # 遍歷 # 加入購物車 @common.login_auth def add_cart(): """ 1. 得先有商品 goods = [ ['商品名稱', 100], ['商品名稱', 100], ['商品名稱', 100], ] 2. 讓使用者輸入商品序號 3. 定義一個全域性變數, 判斷字典裡是不是已經有了,沒有的話,'商品名稱':{'price':100,'count': 3} 4. 在使用者資訊中,增加一個key: shopping_cart:{} 5. 日誌 資料儲存格式: {'商品名稱':{'price':100,'count': 2},'商品名稱1':{'price':200,'count': 1}} :return: """ print("加入購物車:") shopping_cart = {} while True: goods = [ ['hulatang', 100], ['tea', 200], ['coffee', 300], ['water', 400], ] """ 0. hulatang 100 1. tea 200 2. coffee 300 3. water 400 """ for k, v in enumerate(goods): print("%s %s %s" % (k, v[0], v[1])) num = input('請輸入商品序號(q to quit):>>').strip() # 0, 1, 2 ,3 if num.isdigit(): num = int(num) # 商品名稱 goods_name = goods[num][0] goods_price = goods[num][1] # 去shopping_cart中判斷是否存在 if goods_name not in shopping_cart: # {'tea':{'price': 100, 'count':1}} shopping_cart[goods_name] = {'price': goods_price, 'count': 1} else: # {'tea':{'price': 100, 'count':2}} shopping_cart[goods_name]['count'] += 1 print("請繼續購物~") elif num == 'q': # 把使用者選擇的商品寫入檔案中 if shopping_cart: # 讀取使用者資訊 # 讀取當前使用者的資訊 path = settings.BASE_DIR path_file = os.path.join(path, 'db', '%s.json' % user_data['username']) with open(path_file, 'r', encoding='utf-8') as f: user_dic = json.load(f) user_dic['shopping_cart'] = shopping_cart with open(path_file, 'w', encoding='utf-8') as f: json.dump(user_dic, f) print("歡迎下次再來") break else: print("輸入序號不合法") # 檢視購物車 def check_shop(): pass func_dic = { '1': register, '2': login, '3': withdraw, '4': transfer, '5': pay, '6': check_money, '7': check_flow, '8': add_cart, '9': check_shop, } def run(): while True: print("""" ############################################ 1. 註冊 2. 登入 3. 提現 4. 轉賬 5. 充值 6. 檢視餘額 7. 檢視流水 8. 加入購物車 9. 檢視購物車 ############################################ """) choice = input('請輸入你的選擇:>>').strip() # if choice == 1: # register() # elif choice == 2: # login() if choice not in func_dic: continue func_dic[choice]()

common

# 驗證登入的裝飾器

from core import src


def login_auth(func):
    # func => pay
    def inner(*args, **kwargs):
        # 驗證是否登入
        if src.user_data['is_login']:
            return func(*args, **kwargs)
        else:
            # 沒有登入
            src.login()

    return inner


import logging
import os
from conf import settings

# 一:日誌配置
logging.basicConfig(
    # 1、日誌輸出位置:1、終端 2、檔案
    # filename='access.log', # 不指定,預設列印到終端
    filename=os.path.join(settings.BASE_DIR, 'log', 'log.log'),  # 不指定,預設列印到終端

    # 2、日誌格式
    format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',

    # 3、時間格式
    datefmt='%Y-%m-%d %H:%M:%S %p',

    # 4、日誌級別
    # critical => 50
    # error => 40
    # warning => 30
    # info => 20
    # debug => 10
    level=10,
)


# 二:輸出日誌
# logging.debug('除錯debug')
# logging.info('訊息info')
# logging.warning('警告warn')
# logging.error('錯誤error')
# logging.critical('嚴重critical')

def write_log(info):
    logging.debug(info)


'''
# 注意下面的root是預設的日誌名字
WARNING:root:警告warn
ERROR:root:錯誤error
CRITICAL:root:嚴重critical
'''

settings

import os

BASE_DIR = os.path.dirname(os.path.dirname(__file__))