import tkinter
from tkinter import *
import tkinter.messagebox
from CircleSingleLinkedList import CircleSingleLinkedList
from JosephRing2 import 输入处理
# speaker = Dispatch("SAPI.SpVoice")
# speaker.Speak("你好,世界!")
# 主界面
class ZhuJieMian:
def __init__(self, window):
self.window = window
self.window.title("约瑟夫生者死者游戏")
self.window.config(background="GhostWhite")
# 设置窗口大小不可变
self.window.resizable(False, False)
self.window.geometry("1000x600+220+100")
# 设置背景图片
self.backGroundImage = PhotoImage(file="background.jpg")
Label(self.window, image=self.backGroundImage, width=996.7).place(x=0, y=0, anchor='nw')
# 设置三个按钮
# 初始化
bt1 = tkinter.Button(self.window,
text='开始游戏',
font=("微软雅黑", 17),
fg="black",
bg="palegreen",
command=self.kaishiyouxi,
width=10,
height=2,
relief=tkinter.RIDGE,
borderwidth=2)
bt2 = tkinter.Button(self.window,
text='游戏介绍',
font=("微软雅黑", 17),
fg="black",
bg="FloralWhite",
command=self.jieshaojiemian,
width=10,
height=2,
relief=tkinter.RIDGE,
borderwidth=2)
bt3 = tkinter.Button(self.window,
text='退出游戏',
font=("微软雅黑", 17),
fg="black",
bg="salmon",
command=self.jieshu,
width=10,
height=2,
relief=tkinter.RIDGE,
borderwidth=2)
# 放置
bt1.place(x=420, y=300, anchor='nw')
bt2.place(x=420, y=400, anchor='nw')
bt3.place(x=420, y=500, anchor='nw')
def jieshaojiemian(self):
self.window.destroy()
tiaozhuanjieshao()
def kaishiyouxi(self):
self.window.destroy()
tiaozhuanshuru()
def jieshu(self):
self.window.destroy()
# 介绍界面
class JieShao:
def __init__(self, window):
# 初始化界面
self.window = window
self.window.title("游戏介绍")
self.window.config(background="GhostWhite")
self.window.geometry("1000x600+220+100")
# 设置窗口大小不可变
self.window.resizable(False, False)
# 设置文本标题
js_title = tkinter.Label(self.window,
fg="black",
bg="GhostWhite",
text="游戏介绍",
font=("楷体", 35),
height=1)
# 设置文本内容
js_text = tkinter.Label(self.window,
fg="black",
bg="#EAFFF4",
text=" 约瑟夫生者死者游戏的大意是:"
"30个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;"
"因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免遇难。"
"无奈,大家只得同意这种办法,"
"并议定30个人围成一圈,由第一个人开始,依次报数,数到第9人,便把他投入大海中,"
"然后从他的下一个人数起,数到第9人,再将他投入大海,如此循环,直到剩下15个乘客为止"
"。问哪些位置是将被扔下大海的位置。",
font=("楷体", 25),
height=12,
wraplength=800,
anchor='w')
# 放置
js_title.pack()
js_text.pack()
# 返回按钮初始化
backbt = tkinter.Button(self.window,
text='返回主界面',
font=("黑体", 20),
fg="black",
bg="#F2F6CC",
command=self.back,
width=10,
height=2,
anchor='w')
backbt.place(x=430, y=500, anchor='nw')
# 介绍界面返回主界面的函数
def back(self):
self.window.destroy()
jsjmtz()
# 输入界面
class ShuRu:
startNo = -1
countNo = -1
nums = -1
endnums = -1
entry1 = None
entry2 = None
entry3 = None
entry4 = None
def __init__(self, window):
# 窗口大小
self.window = window
self.window.geometry('1000x600+220+100')
self.window.wm_title('约瑟夫生者死者游戏')
# 设置背景图片
self.inputImg = PhotoImage(file="input.jpg")
Label(self.window, image=self.inputImg, width=996.7).place(x=0, y=0)
# 设置窗口大小不可变
self.window.resizable(False, False)
Label(self.window, text='总人数:',
width=10,
font=("楷体", 20),
borderwidth=2,
justify='center').place(x=20, y=100)
ShuRu.entry1 = Entry(self.window, font=("微软雅黑", 15), width=30, borderwidth=3, relief=tkinter.RIDGE)
ShuRu.entry1.place(x=165, y=100)
Label(self.window, text='开始序号:',
width=10,
font=("楷体", 20),
borderwidth=2,
justify='center').place(x=20, y=200)
ShuRu.entry2 = Entry(self.window, font=("微软雅黑", 15), width=30, borderwidth=3, relief=tkinter.RIDGE)
ShuRu.entry2.place(x=165, y=200)
Label(self.window, text='间隔数:',
width=10,
font=("楷体", 20),
borderwidth=2,
justify='center').place(x=20, y=300)
ShuRu.entry3 = Entry(self.window, font=("微软雅黑", 15), width=30, borderwidth=3, relief=tkinter.RIDGE)
ShuRu.entry3.place(x=165, y=300)
Label(self.window, text='存活人数:',
width=10,
font=("楷体", 20),
borderwidth=2,
justify='center').place(x=20, y=400)
ShuRu.entry4 = Entry(self.window, font=("微软雅黑", 15), width=30, borderwidth=3, relief=tkinter.RIDGE)
ShuRu.entry4.place(x=165, y=400)
bt1 = Button(self.window,
text='进入游戏',
font=("宋体", 20),
fg="black",
bg="palegreen",
command=self.jinruyouxi,
width=10,
height=2,
relief=tkinter.RIDGE,
borderwidth=2)
bt1.place(x=600, y=130)
bt2 = tkinter.Button(self.window,
text='返回主界面',
font=("宋体", 20),
fg="black",
bg="sandybrown",
command=self.back,
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
约瑟夫生者死者问题是数据结构与算法中的经典问题,本项目基于单向循环链表这一数据结构实现,并使用 tkinter技术 实现约瑟夫问题的可视化。项目使用了图形用户界面GUI技术,使用的开发工具为PyCharm 2021.3。实现了约瑟夫游戏的可视化模拟,并对用户输入汉字的情况进行处理,例如用户在输入框中输入总人数为三十三,算法则会将三十三处理为33接收,并进行计算。是学习完Python与数据结构与算法后练手的好项目,也可以用于课程设计的学习参考。算法部分有详细注释,并且该资源已经更新了博客教程,文中对算法进行了图解并对项目结果进行了展示,欢迎下载学习!
资源详情
资源评论
资源推荐
收起资源包目录
JosephRing.rar (9个子文件)
JosephRing
background.jpg 1009KB
Person.py 610B
__pycache__
Person.cpython-39.pyc 1KB
CircleSingleLinkedList.cpython-39.pyc 3KB
输入处理.cpython-39.pyc 1KB
JosephRingEnter.py 13KB
CircleSingleLinkedList.py 5KB
输入处理.py 2KB
input.jpg 371KB
共 9 条
- 1
兴趣使然黄小黄
- 粉丝: 5364
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5