Python實驗:關燈游戲

文章目錄

  • 前言
  • 一、設計表
  • 二、關鍵代碼
  • 三、運行結果
    • 小地圖,容易難度:
    • 中地圖,中等難度:
    • 大地圖,困難難度:
  • 四、完整代碼鏈接
  • 總結


前言

這是一個Python實驗作業,內容如下:

題目要求:請完成《關燈游戲》,并完成以下擴展內容:

擴展內容:

  1. 請設計并實現界面功能,允許玩家選擇初始地圖的大小,分別為:小(5x5),中(8x8),大(12x10),玩家選擇之后立即刷新窗口界面并重設地圖

  2. 請設計并實現界面功能,允許玩家選擇游戲難度,分別為:
    容易:一開始有20%的格子狀態為翻轉狀態
    中等:一開始有40%的格子狀態為翻轉狀態
    困難:一開始有60%的格子狀態為翻轉狀態

  3. 游戲開始之前,提示玩家輸入唯一的用戶名,用于保留該玩家的闖關記錄

  4. 按照玩家選擇的地圖大小和難度開始游戲,游戲過程中記錄玩家闖關的總時間以及翻轉次數(即開關燈的次數)

  5. 玩家通關成功后,保存相關信息到數據庫,表結構可以自定,但應當至少包含以下信息:

  • 玩家選擇的地圖大小
  • 玩家選擇的難度
  • 玩家通關的日期時間
  • 玩家通關所用的總時間
  • 玩家通關所用的總點擊次數

補充說明:
(1) 你可以使用任何python相關技術實現圖形界面,包括但不限于Tkinter, wxPython, pyside6等,但必須界面和功能完整,設計布局合理美觀
(2) 你可以使用任何數據庫進行數據保存,包括任何的關系數據庫或非關系數據庫,但不得直接使用文件或CSV


一、設計表

使用mysql數據庫,設計兩張表,user表用來記錄用戶基本信息,play_info表用來記錄用戶游戲過程信息
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

二、關鍵代碼


# 注冊
def register(action):username = actionwith conn.cursor() as cursor:query = "INSERT INTO user (user_name) VALUES (%s)"cursor.execute(query, username)conn.commit()print("注冊登錄成功!")# 登錄
def login(action):username = actionwith conn.cursor() as cursor:query = "SELECT * FROM user WHERE user_name=%s"cursor.execute(query, username)if cursor.fetchall():print("登錄成功!")else:print("該玩家為第一次登錄,自動為其注冊")register(action)# 選擇地圖
def get_map(prompt):while True:try:user_input = int(input(prompt))if user_input < 1 or user_input > 10:print("輸入無效,請輸入1-3的數字。")else:return user_input except ValueError:print("輸入無效,請輸入一個整數。")# 選擇難度
def get_difficulty(prompt):while True:try:user_input = int(input(prompt))if user_input < 1 or user_input > 10:print("輸入無效,請輸入1-3的數字。")else:return user_input except ValueError:print("輸入無效,請輸入一個整數。")
# 畫表格
def draw_table(row,width,height):for i in range(0 ,row):cv.create_line(10, 10+i*40, width, 10+i*40, arrow='none')cv.create_line(10+i*40, 10, 10+i*40, height, arrow='none')  # 畫燈
def draw_lamp(row,column):for i in range(0,row):for u in range(0,column):if l[i][u] == 'you':# 亮燈cv.create_oval(i*40+10, u*40+10, (i+1)*40+10,(u+1)*40+10, outline='white', fill='yellow', width=2)# 滅燈else:cv.create_oval(i*40+10, u*40+10, (i+1)*40+10,(u+1)*40+10, outline='white', fill='white', width=2)
# 單擊事件函數
def do_event(event):x1 = (event.x - 10) // 40y1 = (event.y - 10) // 40# 翻轉(x1,y1)處燈的狀態reserve(x1, y1)# 翻轉(x1,y1)周圍燈的狀態# 左側燈的狀態反轉if x1 != 0:reserve(x1 - 1, y1)# 右側燈的狀態反轉if x1 != row-1:reserve(x1 + 1, y1)# 上側燈的狀態反轉if y1 != 0:reserve(x1, y1 - 1)# 下側燈的狀態反轉if y1 != column-1:reserve(x1, y1 + 1)draw_lamp(row,column)

三、運行結果

小地圖,容易難度:

在這里插入圖片描述

中地圖,中等難度:

在這里插入圖片描述

大地圖,困難難度:

在這里插入圖片描述

四、完整代碼鏈接

代碼下載鏈接

總結

@作者:加辣椒了嗎?
簡介:憨批大學生一枚,喜歡在博客上記錄自己的學習心得,也希望能夠幫助到你們!
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375806.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375806.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375806.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決Ubuntu14.04在外接顯示器不能指定問題的最佳分辨率

通常這種情況發生。在System Settings -> display 你會發現多出了一個 unknown display。這往往是因為你使用質量低劣的視頻電纜&#xff0c;例如&#xff0c;幾美元VGA線。解決方案有&#xff12;&#xff0c;質量好的一個改變鋼帶&#xff08;有磁場干擾&#xff09;VGA線…

基礎練習 - 數值交換

題目 1 聲明兩個變量&#xff1a;int n1 10,n2 20,要求將兩個變量叫喚&#xff0c;最后輸出n1為20,n2為10. (擴展*: 不使用第三個變量如何交換) 解決方案 基本方法 private static void BasicMethod(){int n1 10;int n2 20;Console.WriteLine("n1…

python計算圓的面積

用Python創建一個腳本&#xff0c;要求&#xff1a; 能計算半徑為2的圓的面積保留10位小數可以直接執行 #!/usr/bin/env python3 import math print("Area is:{:.10f}".format(math.pi*4))計算圓的面積要用到pi&#xff0c;所以我們引用模塊math

Visual Studio 配色方案

字體&#xff1a;Fixedsys Excelsior 字體大小&#xff1a;12 配色方案&#xff1a;http://studiostyles.info 導入步驟&#xff1a; 工具->導入和導出設置->導入選定的環境設置->否&#xff0c;僅導入新設置->“瀏覽”->下載的vssetings文件->完成。 轉載于…

昆明學院計算機專業在哪個校區,昆明學院有幾個校區及校區地址

昆明學院有幾個校區及校區地址2017-06-19 11:15:56文/韓競儀最近有很多考生和家長咨詢小編&#xff0c;昆明學院有幾個校區&#xff0c;今年新生會被分配到哪個校區?哪個校區好?等相關問題&#xff0c;下面小編統一回復一下考生們的問題。昆明學院有3個校區&#xff0c;分別是…

python列表總結

列表方法append()&#xff1a;在列表末尾添加元素列表方法insert()&#xff1a;在列表任意位置插入元素&#xff0c;a.insert(0,1)&#xff0c;在列表的0號位置插入元素1.列表方法count(s)&#xff1a;返回s在列表中出現的次數列表方法remove(s)&#xff1a;移除列表中的第一個…

Swift基本語法

Swift基本語法 原文:Swift基本語法Swift基本語法 簡介 1.什么是Swift Swift是蘋果于2014年WWDC&#xff08;蘋果開發者大會&#xff09;發布的全新編程語言 Swift在天朝譯為“雨燕” 跟Objective-C一樣&#xff0c;可以用于開發iOS、Mac應用程序 蘋果從2010年7月開始設計Swift語…

2018華工計算機應用基礎作業,計算機應用基礎平時作業2019

計算機應用基礎平時作業2019Tag內容描述&#xff1a;1、1.簡述啟動控制面板的常用方法。(至少列出三種) 答&#xff1a;常用打開控制面板的方法&#xff1a;1)點開始&#xff0c;選擇控制面板打開&#xff1b;2)打開我的電腦&#xff0c;選擇控制面板&#xff1b;3)點開始運行&…

計算機系統組織結構,第4章 操作系統計算機組織結構.ppt

第4章 操作系統計算機組織結構第4章 計算機組織結構 前言 操作系統提供了抽象以簡化對硬件的使用&#xff0c;單線程是馮?諾依曼計算機的操作抽象&#xff0c;如果理解了一個馮?諾依曼計算機是如何執行程序的&#xff0c;就能理解進程背后的知識&#xff0c;對操作系統的深入…

Solution 19: Fibonacci數列

問題描述 求Fibonacci數列的第n項。Fibonacci數列為1,1,2,3,5,... 解決思路 (1) 遞歸&#xff0c;指數級時間復雜度&#xff1b; (2) 循環&#xff0c;O(n)時間復雜度&#xff1b; (3) 矩陣乘法&#xff0c;O(logn)時間復雜度&#xff1b; (4) 公式法&#xff0c;O(1)時間復雜度…

boost::unordered_map 和 std::map 的效率 與 內存比較

例子鏈接&#xff1a;http://blog.csdn.net/gamecreating/article/details/7698719 結論: unordered_map 查找效率快五倍&#xff0c;插入更快&#xff0c;節省一定內存。如果沒有必要排序的話&#xff0c;盡量使用 hash_map(unordered_map 就是 boost 里面的 hash_map 實現)。…

軟件可靠性指標mtbf測試評估,軟件可靠性評估.pdf

軟件可靠性評估軟件可靠性工程基礎——軟件可靠性評估北京航空航天大學可靠性與系統工程學院目的? 理解什么是軟件可靠性評估&#xff0c;基本原理? 掌握和應用典型的軟件可靠性模型? 了解比較軟件可靠性模型的主要方法? 理解穩定使用階段的軟件可靠性評估? 理解增長測試中…

模型和控制器-起步階段

MVVM簡介 針對客戶端應用開發AngularJS吸收了傳統的MVC基本原則。MVC(Model-View-Controll)設計模式針對不同的人可能意味不同的東西 ,AngularJS并不執行傳統意義上的MVC&#xff0c;更接近于MVVM。 MVVM模式是Model-View-ViewMode模式的簡稱。由視圖(View)、視圖模型(ViewMode…

Apache開啟Gzip壓縮

1. 編輯Apache的httpd.conf文件 vim /etc/httpd/conf/httpd.conf 2. 開啟mod_deflate.so模塊 LoadModule deflate_module modules/mod_deflate.so 3. 對該模塊進行配置 # ShiftG到最下一行添加如下內容<IfModule mod_deflate.c> # 壓縮等級 9 DeflateCompressionLevel 9 …

計算機的網絡與結構,計算機結構與組成29-網絡.ppt

計算機結構與組成29-網絡CS61C L221 Performance ? UC Regents I/O Review I/O gives computers their 5 senses I/O speed range is 12.5-million to one Differences in processor and I/O speed ? synchronize with I/O devices before use Polling works, but expensive …

Canvas動畫 位圖緩存提高效率和對應的內存問題

對一個矢量圖動畫&#xff0c;開啟位圖緩存能大大提高運行效率。所謂開啟位圖緩存&#xff0c;其實要自己動手&#xff0c;先創建一個臨時canvas&#xff0c;然后把矢量圖繪制到這個canvas上&#xff0c;到了實際繪制時&#xff0c;直接把這個臨時canvas拷貝到真正canvas上。而…

ASP.NET MVC 學習第一天

今天開始第一天學習asp.net mvc&#xff0c;寫的不是很好&#xff0c;高手不要噴&#xff0c;希望大家能一起進步學習。 好了&#xff0c;開始學習 新建項目&#xff0c;選擇mvc 4應用程序 接下來選擇基本&#xff0c;視圖引擎當然要選擇Razor&#xff0c;如果在選擇aspx那我們…

python提取字符串中的數字

字符串存儲在string.txt中&#xff0c;將字符串中的數字提取出來&#xff0c;組成心得字符串&#xff0c;并打印輸出。 #!/usr/bin/env python3 fileopen(/home/user/string.txt) file_contextfile.read() i0 string while i < len(file_context):if file_context[i].isdig…

計算機顯示發送報告,Word文檔打不開提示發送錯誤報告的解決方法

經常使用word文檔的人員都會碰到過這種發送錯誤報告情況&#xff0c;既然有這個問題就要查個究竟什么原因造成&#xff0c;才能完美解決&#xff0c;那么今天小編就在這里講解word文檔發送錯誤報告的方法。根本原因是&#xff1a;打開word出現提示word發送錯誤報告的故障其主要…

asp.net mvc 如何在View中獲取Url參數的值

如果url是 /home/index?id3 直接Request就ok。 但是如果路由設定為&#xff1a;{controller}/{action}/{id} url是 /home/index/3 這時想在頁面View中獲取參數id的值&#xff0c;該怎么獲取&#xff1f; 查了下資料好多人都利用Action獲取到參數值后&#xff0c;用Viewdata…