第十周课程设计报告

10周

程序名功能序号
1hj_main.py主函数
2hj_people.py由于确定游戏人数,进入下一界面
3hj_game.py显示主界面,游戏主程序
4xls.py用于导出游戏数据

hj_people.py

from tkinter import *
import tkinter.messagebox
from hj_game import *

class MyError1(Exception):
  pass

class MyError2(Exception):
  pass

class MyError3(Exception):
  pass

class MyError4(Exception):
  pass
class LoginPage(object):
    def __init__(self, master=None):
        self.root = master  # 定义内部变量root
        self.root.geometry('%dx%d' % (400, 200))  # 设置窗口大小
        self.root.title("游戏人数")
        self.player_num = StringVar()
        self.createPage()

    def createPage(self):
        self.page = Frame(self.root)  # 创建Frame
        self.page.pack()

        # photo = PhotoImage(file='welcome.gif')
        # print(photo)
        # Label(self.page, image=photo).grid(row=0)
        l = Label(self.page, text="欢迎来到黄金点游戏!", bg="pink", font=("微软雅黑", 15),
                  width=24, height=1)

        l.grid(row=0)
        l1 = Label(self.page, text="请输入游戏人数:", bg="pink", font=("微软雅黑", 12),
                   width=15, height=1)
        l1.grid(row=1)
        Entry(self.page, textvariable=self.player_num).grid(row=2)
        Button(self.page, text='开始', command=self.loginCheck).grid(row=3,sticky=W)
        Button(self.page, text='退出', command=self.page.quit).grid(row=3,column=1,sticky=W)

    def loginCheck(self):
        try:
            # 判断输入类型
            num=int(self.player_num.get())
            if num==1:
                raise MyError1()
            elif num <= 0:
                raise MyError3()
            elif num > 20:
                raise MyError2()
            tkinter.messagebox.showinfo(title='欢迎', message='游戏人数为'+str(num))
            self.page.destroy()
            hj_game(self.root,num)
        except MyError1:
            tkinter.messagebox.showinfo(title='错误', message='一个人怎么玩!')
        except MyError2:
            tkinter.messagebox.showinfo(title='错误', message='这么多人怎么玩!')
        except MyError3:
            tkinter.messagebox.showinfo(title='错误', message='真就不当人了呗!')
        except MyError4:
            tkinter.messagebox.showinfo(title='错误', message='输入错误!')

hj_game.py

from tkinter import *
import tkinter.messagebox
import hj_people
import xls

class hj_game(object):
    def __init__(self,master=None,num=0):
        # 窗口设置
        self.root = master  # 定义内部变量root
        self.root.title(str(num)+"人运动")
        self.root.geometry('%dx%d' % (600,400))  # 设置窗口大小

        # 用于游戏的数据
        self.player_num = num   # 游戏人数
        self.value_list = []    # 数值列表
        self.player_value = StringVar()     # 单人的值
        self.player_No = 0                  # 次序
        self.average_value = 0
        self.score_list = [0 for i in range(self.player_num)]

        # 游戏局数
        self.gameloop = 1

        # 创建游戏界面
        self.createPage()

    def createPage(self):
        # 创建Frame
        self.page = Frame(self.root)
        self.page.pack()
        # 窗口上的部件
        tip = Label(self.page, text="黄金点", bg="pink", font=("微软雅黑", 15),
                  width=24, height=1)
        tip.grid(row=0, column=0)
        self.label1 = Label(self.page,text="第1位玩家:")
        self.label1.grid(row=1,column=0)

        self.value_Entry = Entry(self.page, textvariable=self.player_value, show=None)
        self.value_Entry.grid(row=2, column=0)
        Button(self.page, text="提交", command=self.Botton_clicked).grid(row=3, column=0, stick=E)
        self.botton_text = Text(self.page, height=15,width=30,)
        self.botton_text.grid(row=4)
        Button(self.page, text='退出', command=self.page.quit).grid(row=5, column=0)
        Button(self.page, text='导出', command=self.show).grid(row=5, column=1)

    def Botton_clicked(self):
        # 配置
        try:
            judge(float(self.player_value.get()))
            if self.player_No == 0:
                self.value_list.clear()
                self.botton_text.insert('end',"第"+str(self.gameloop)+"局游戏")
                self.botton_text.insert('end', "\n")
                self.gameloop += 1

            if self.player_No < self.player_num:
                sentence1 = '第' + str(self.player_No+1)+"位玩家:"
                self.label1.config(text=sentence1, bg="white")
                self.botton_text.insert('end', sentence1+self.player_value.get())
                self.botton_text.insert('end', "\n")
                self.player_No+=1
                self.value_list.append(float(self.player_value.get()))

            if self.player_No ==self.player_num:
                print(self.value_list)
                self.average_value = sum(self.value_list) / self.player_num * 0.618

                after_num_list = [abs(i - self.average_value) for i in self.value_list]
                self.player_No = 0
                score(after_num_list,self.score_list,self.player_num)
                self.botton_text.insert('end', "本局的黄金点:" + str(self.average_value))
                self.botton_text.insert('end', "\n")
                self.botton_text.insert('end', "当前各玩家的值:"+str(self.value_list))
                self.botton_text.insert('end', "\n")
                self.botton_text.insert('end', "各个分数"+str(self.score_list))
                self.botton_text.insert('end', "\n")
                self.botton_text.insert('end', "继续输入即可进入下一盘游戏")
                self.botton_text.insert('end', "\n")
                # xls.a(self.player_num,self.value_list,self.score_list,self.gameloop)
                self.label1.config(text="第1位玩家:", bg="white")
                self.player_value.set("")


        except (hj_people.MyError1, ValueError):
            tkinter.messagebox.showinfo(title='错误', message='输入错误!')


    def show(self):
        try:
            xls.a(self.player_num,self.value_list,self.score_list,self.gameloop)
            tkinter.messagebox.showinfo(title='提示', message='导出成功!')
        except IndexError:
            tkinter.messagebox.showinfo(title='提示', message='本局游戏还未结束!')

# 返回最高,最低
def score(after_num_list, score_list, n):
    active = after_num_list.index(max(after_num_list))
    negative = after_num_list.index(min(after_num_list))
    score_list[active] -= 2
    score_list[negative] += n
    return active,negative


def judge(num):
    if num > 0 and num < 100:
        return True
    else:
        raise hj_people.MyError1

if __name__ == "__main__":
    root = Tk()
    hj_game(root,3)
    root.mainloop()
    ```
    
    ```python
    import xlsxwriter


def a(player_num,score_list,value_list,gameloop):
    workbook = xlsxwriter.Workbook('H:\\图像化界面学习\\xls.xlsx')  # 创建一个Excel文件
    worksheet = workbook.add_worksheet()  # 创建一个sheet
    worksheet.write_row('A1', ["第"+str(gameloop-1)+"次游戏"])
    title = ['玩家','数值', '得分']  # 表格title
    worksheet.write_row('A2', title)  # title 写入Excel

    for i in range(player_num):
        row = 'A' + str(i+3)
        data = ['玩家' + str(i+1),score_list[i],value_list[i]]
        worksheet.write_row(row, data)
        i += 1

    workbook.close()

if __name__== "__main__":
    num =5
    s= [1,2,3,4,2]
    value= [12,23,3,6,7]
    a(num,s,value,1)


hj_main.py

from hj_people import *

root = Tk()
LoginPage(root)
root.mainloop()

xls.py

import xlsxwriter

def a(player_num,score_list,value_list,gameloop):
    workbook = xlsxwriter.Workbook('H:\\图像化界面学习\\xls.xlsx')  # 创建一个Excel文件
    worksheet = workbook.add_worksheet()  # 创建一个sheet
    worksheet.write_row('A1', ["第"+str(gameloop-1)+"次游戏"])
    title = ['玩家','数值', '得分']  # 表格title
    worksheet.write_row('A2', title)  # title 写入Excel

    for i in range(player_num):
        row = 'A' + str(i+3)
        data = ['玩家' + str(i+1),score_list[i],value_list[i]]
        worksheet.write_row(row, data)
        i += 1

    workbook.close()

if __name__== "__main__":
    num =5
    s= [1,2,3,4,2]
    value= [12,23,3,6,7]
    a(num,s,value,1)

游戏界面:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值