python tkinter实现俄罗斯方块基础版——一、基础界面

Python实现俄罗斯方块(带完整源码) 1. pygame.init():初始化Pygame库。 2. pygame.display.set_mode():创建游戏窗口。 3. pygame.event.get():获取所有待处理的事件。 4. pygame.event.pump():处理所有待处理的事件。 5. pygame.key.get_pressed():检测按键状态。 6. pygame.draw.rect():绘制矩形。 7. pygame.draw.polygon():绘制多边形。 8. pygame.draw.line() 阅读详情
AI摘要

本教程使用Python和tkinter库逐步实现经典俄罗斯方块游戏,包括基础界面搭建、方块绘制、移动与消除等功能。

本教程为我在b站投稿的视频教程av81480858 对应的文字版,项目最终效果见投稿简介部分,视频部分讲解的比较详细,觉得文字版不够详细的可以去看视频。

本项目最终代码已上传github: https://github.com/BigShuang/Tetris 的1_BASIC文件夹
。其中1234分别对应本项目教程每一部分的最终代码,所以想看完整代码直接看004.py就好。

本项目通过python自带库tkinter实现,无需安装第三方库
本项目基于python3版本开发(如果你的是python2.x,运行可能会有问题)

总目录

一、基础界面

二、界面动起来

三、生成、移动、固定、消除

四、消除与得分

======================= 大爽歌作,made by big shuang =======================

一、基础界面

1、搭建基础窗体

使用tkinter库实现基础窗体,不加入任何功能只需如下三行代码

import tkinter as tk
 
win = tk.Tk()
win.mainloop()

运行代码生成的窗口如下
在这里插入图片描述
接下来我们需要在窗体里面,添加一个画布容器用来“装”俄罗斯方块,就是让这个画布作为面板,俄罗斯方块的移动和绘制均在这个画板上实现。

这里我们设定一些俄罗斯方块游戏参数

  • 行数为R(取20)
  • 列数为C(取12)
  • 俄罗斯方块的边长为cell_size(取30)

通过tkinger的画布类Canvas实现的代码如下

import tkinter as tk
 
cell_size=30
C = 12
R = 20
height = R*cell_size
width = C*cell_size
 
win = tk.Tk()
canvas = tk.Canvas(win, width=width, height=height)
canvas.pack()
 
win.mainloop()

此时界面的长宽就变成我们所需要的了
接下来在画板上绘制俄罗斯方块空白位
首先建立一个函数draw_cell_by_cr,用于在画板上绘制单个俄罗斯方块
然后建立一个函数draw_blank_board,用于在画板上绘制所有空白方块(也就是空白方块板,为了和背景区分,所以设置空白方块为轻灰色)
此时整体代码如下:

import tkinter as tk
 
cell_size = 30
C = 12
R = 20
height = R * cell_size
width = C * cell_size
 
 
def draw_cell_by_cr(canvas, c, r, color="#CCCCCC"):
    """
    :param canvas: 画板,用于绘制一个方块的Canvas对象
    :param c: 方块所在列
    :param r: 方块所在行
    :param color: 方块颜色,默认为#CCCCCC,轻灰色
    :return:
    """
    x0 = c * cell_size
    y0 = r * cell_size
    x1 = c * cell_size + cell_size
    y1 = r * cell_size + cell_size
    canvas.create_rectangle(x0, y0, x1, y1, fill=color, outline="white", width=2)
 
 
# 绘制空白面板
def draw_blank_board(canvas):
    for ri in range(R):
        for ci in range(C):
            draw_cell_by_cr(canvas, ci, ri)
 
 
win = tk.Tk()
canvas = tk.Canvas(win, width=width, height=height, )
canvas.pack()
 
draw_blank_board(canvas)
 
win.mainloop()

此时运行代码生成的窗口如下
在这里插入图片描述

2、绘制o形俄罗斯方块

先从最简单的o型俄罗斯方块(即田字格,如下图)
在这里插入图片描述
我们先要记录每各形状所有格子的坐标
以格子所在行序号为纵坐标,所在列序号为横坐标
以田字格中点为原点,则o型俄罗斯方块的四个格子的坐标如下图所示
在这里插入图片描述

关于上方的坐标,有b站朋友私戳我,表示还是没看懂
所以这里进一步解释下, 以o型俄罗斯方块的右下小格为例,坐标为(0,0)所指的那个方格是第一行,第一列的。
由于python的列表是从0开始计数,所以坐标(0,0)中的第一个0是指c=0,表示在第一列;第二个0是指r=0,表示在第一行
如果还是觉得有点不懂,那就这么理解, 以格子左上角顶点的坐标,为格子坐标

用列表和元组记录为

[
    (-1, -1),
    (0, -1),
    (-1, 0),
    (0, 0)
]

我们将俄罗斯方块形状字符串和坐标列表的映射关系存到字典SHAPES里(映射关系这里可以理解为一一对应的关系)
同时建立一个字典SHAPESCOLOR,来记录俄罗斯方块形状字符串和颜色的一一对应关系。
由于一个形状可以看成多个方格组成的,所以我们可以新建函数draw_cells用来绘制这个形状
最后选择一个地方来绘制这个形状。

# 定义形状
SHAPES = {
    "O": [(-1, -1), (0, -1), (-1, 0), (0, 0)],
}
 
# 定义形状的颜色
SHAPESCOLOR = {
    "O": "blue",
}
 
def draw_cells(canvas, c, r, cell_list, color="#CCCCCC"):
    """
    绘制指定形状指定颜色的俄罗斯方块
    :param canvas: 画板
    :param r: 该形状设定的原点所在的行
    :param c: 该形状设定的原点所在的列
    :param cell_list: 该形状各个方格相对自身所处位置
    :param color: 该形状颜色
    :return:
    """
    for cell in cell_list:
        cell_c, cell_r = cell
        ci = cell_c + c
        ri = cell_r + r
        # 判断该位置方格在画板内部(画板外部的方格不再绘制)
        if 0 <= c < C and 0 <= r < R:
            draw_cell_by_cr(canvas, ci, ri, color)
 
 
# 下面这行代码放在draw_blank_board(canvas) 下面
# 任取一个位置,如(3,3)绘制一个o型俄罗斯方块,用于展示
draw_cells(canvas, 3, 3, SHAPES['O'], SHAPESCOLOR['O'])
# 上面这行代码放在win.mainloop()上面

此时运行代码生成的窗口如下
在这里插入图片描述

3、其他俄罗斯方块

俄罗斯方块主流分七种,除去上面的O型,其他六俄罗斯方块如图所示
在这里插入图片描述
对应的,要在SHAPES和SHAPESCOLOR中添加其他方块的坐标和颜色,添加后如下

SHAPES = {
    "Z": [(-1, -1), (0, -1), (0, 0), (1, 0)],
    "O": [(-1, -1), (0, -1), (-1, 0), (0, 0)],
    "S": [(-1, 0), (0, 0), (0, -1), (1, -1)],
    "T": [(-1, 0), (0, 0), (0, -1), (1, 0)],
    "I": [(0, 1), (0, 0), (0, -1), (0, -2)],
    "L": [(-1, 0), (0, 0), (-1, -1), (-1, -2)],
    "J": [(-1, 0), (0, 0), (0, -1), (0, -2)]
}
 
SHAPESCOLOR = {
    "O": "blue",
    "Z": "Cyan",
    "S": "red",
    "T": "yellow",
    "I": "green",
    "L": "purple",
    "J": "orange",
}

将原来绘制O型俄罗斯方块处的代码改成如下代码,将这七种俄罗斯方块绘制出来

draw_cells(canvas, 3, 3, SHAPES['O'], SHAPESCOLOR['O'])
draw_cells(canvas, 3, 8, SHAPES['S'], SHAPESCOLOR['S'])
draw_cells(canvas, 3, 13, SHAPES['T'], SHAPESCOLOR['T'])
draw_cells(canvas, 8, 3, SHAPES['I'], SHAPESCOLOR['I'])
draw_cells(canvas, 8, 8, SHAPES['L'], SHAPESCOLOR['L'])
draw_cells(canvas, 8, 13, SHAPES['J'], SHAPESCOLOR['J'])
draw_cells(canvas, 5, 18, SHAPES['Z'], SHAPESCOLOR['Z'])

本部分最终代码见https://github.com/BigShuang/Tetris/blob/master/1_BASIC/001.py, 绘制出来的效果如图
在这里插入图片描述

python实现俄罗斯方块【含代码和讲解】 在上述代码中,我们首先定义了一些常量、参数以及 Pygame 相关的初始化,然后定义了方块和方块组类,包括绘制、移动、旋转和检测碰撞等方法。当游戏中没有空间来放置新的方块组时,就创造一个新的方块组。这是一个简单却富有挑战和乐趣的游戏,让玩家必须思考如何将各种形状的积木放入底部的平面上,以便完整地填满一行或多行,每填满一行就会消失并获得分数,而玩家则不断面临更高难度的挑战。通过以上代码实现,您可以快速地理解并创建自己的俄罗斯方块游戏,这是一个简单而有趣的游戏,也是 Python 编程的一个很好的学习项目。 阅读详情

相关推荐

纯Python实现的俄罗斯方块小游戏,带BGM和消除音效,tkinter界面开箱即用

直接运行fk.py就能玩的俄罗斯方块游戏,所有代码用Python原生编写,不依赖Pygame等第三方图形库,仅靠标准库tkinter完成界面渲染与交互。游戏包含完整的 Tetris 核心机制:七种经典方块随机生成、顺逆时针旋转、重力下落、底部及侧边碰撞检测、多行同时消除判定、实时积分与等级提升逻辑。音频方面内置三段资源:bgm.mp3作为循环背景音乐,line_clear.wav在每次成功消行时短促触发,game_over.wav在游戏结束时播放提示音,音效与操作节奏匹配自然。项目结构干净,主程序fk.py

pandas7gardener的博客 251

Python课程设计之俄罗斯方块

Python课程设计之俄罗斯方块 软件需求:Python环境 压缩包内含:源代码、打包好的可执行文件、文档报告

满天星的博客 1万+

大模型训练显存瘦身全记录:从ZeRO-3参数分区到CPU Offload的硬件协奏曲

本文详细解析了如何通过ZeRO-3参数分区与CPU/NVMe卸载技术优化大模型训练的显存使用。结合bf16混合精度与梯度累积等策略,实现在消费级GPU上高效训练百亿参数模型,显著提升硬件利用率与训练效率。

weixin_29051245的博客 435

python制作俄罗斯方块

python制作俄罗斯方块

jakelihua 1万+

2024“华为杯”中国研究生数学建模竞赛(A题)深度剖析_数学建模完整过程+详细思路+代码全解析

目标是优化风力涡轮机的功率调度,使其在给定的实时风速数据下,最小化涡轮机关键组件(如塔架和主轴)的疲劳损伤。问题的挑战在于,考虑通信延迟和测量噪声的同时,要确保功率输出与风速变化的响应快速且准确。

2401_82549447的博客 6628

ST7102驱动移植与调试实战

本文详细介绍了在君正T40平台上移植和调试ST7102 LCD驱动芯片的实战经验。内容涵盖硬件接口配置、时序参数调整、寄存器初始化序列编写及常见问题解决,重点解析了ST7102单芯片集成显示与触控功能的特性,为嵌入式设备显示驱动开发提供实用指南。

k6l7m8n9的博客 1413

Python实现俄罗斯方块

本游戏是一个基于 Pygame 库的俄罗斯方块游戏,玩家需要控制下落的方块,使其拼接成完整的一行或多行并消除,以获得得分。

qq_29785223的博客 4673

Gemma 4 12B QAT+MTP小显存部署实战指南

大语言模型本地部署的核心瓶颈在于显存与推理效率的平衡。量化感知训练(QAT)通过在训练阶段模拟低精度计算,显著提升模型对INT4量化的鲁棒性;多令牌预测(MTP)则通过并行解码优化KV Cache复用,降低GPU kernel调用频次。二者协同可在8GB显存设备上稳定运行12B级模型,兼顾精度、速度与上下文长度。该方案适用于开发者本地AI助手、技术文档生成、SQL翻译等轻量但高交互需求场景,是当前Windows环境中小显存高效落地Gemma系列模型的工程最优解。

weixin_30934229的博客 377

python小游戏——俄罗斯方块

python小游戏,pygame库俄罗斯方块完整代码及详细介绍。

m0_50162049的博客 1万+

以 DeleteRestrictions 与 inlineDelete 为核心的 Fiori Elements 表格删除机制全解

SAP Fiori elements 中删除操作的设计与实现涉及多维度考量。框架默认依据 OData 元数据判断删除能力,通过 DeleteRestrictions 注解实现行级条件控制(deletable-path)。表格支持两种删除模式:工具栏集中删除与响应式表格行内删除,但二者不建议混用。关键约束包括:行内删除仅适用于 Responsive Table,且与多选功能互斥。配置需遵循三层架构:后端能力注解、前端表格形态和运行时交互。设计上强调禁用优于隐藏的可用性原则,并需保持列表页与对象页的删除体验一致

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 153

Python:爬取数据出现response.status_code为403解决方法

目录前言1. 原理2. 代码 前言 出现403的返回结果 主要是有些服务器为了防止访问量过大,承受服务器的压力,或者是拒绝你的访问。服务器接收到这个信息,理应返回了这个403的信息 在前一块的代码中解决了 Python:爬取数据出现response.status_code为418解决方法 如果还出现了403的访问错误 可以通过如下解决 1. 原理 服务器拒绝访问,可以通过给服务器登录,获取当前的cookie来得到网址的信任。得以爬取该网址的信息 在head头中加入cookie的信息 具体怎么查找该cooki

码农研究僧的博客 1万+

python tkinter实现俄罗斯方块基础版——二、界面动起来

总目录 一、基础界面 二、界面动起来 三、生成、移动、固定、消除 四、消除与得分 ======================= 大爽歌作,made by big shuang ======================= 0、思路 要让游戏界面动起来,需要实现两点 1-定时刷新页面 2-移动页面内部的俄罗斯方块 这块说一下,光实现一的话理论上页面也算动起来了,但是如果界面内容不变,每次新的...

大爽老师的博客 4885

雷达参数的设置

采样率又可以叫做采样速率或者,顾名思义就是每秒采集的次数。该值越高,单位时间内对信号的采集越多,采样率的单位可以用Hz或者sps表示(sps是采样率,是每秒采样点的数量,sp表示采样点数),一般1sps=1Hz。采样时间是采样点数和采样周期的乘积得到的结果。假设实际采样率为4560ksps,采样点数为256,那么采样周期为1/4560(ms),那么ADC的采样时间就为256*(1/4560)(ms)=0.056ms=56微秒。

qq_50974341的博客 1912

python tkinter模块的俄罗斯方块实训目标_Python Tkinter实现了俄罗斯方块的基本版本,pythontkinter,基础,版二,界面,动,起来...

总目录======================= 大爽歌作,made by big shuang =======================0、思路要让游戏界面动起来,需要实现两点1-定时刷新页面2-移动页面内部的俄罗斯方块这块说一下,光实现一的话理论上页面也算动起来了,但是如果界面内容不变,每次新的页面和旧的界面看起来是一样的,给人的观看感觉跟没有动没有区别所以必须要实现2,来更改界面内...

weixin_36423062的博客 182

OpenCV 实战篇——如何测算出任一副图片中的物体的实际尺寸?传感器尺寸与像元尺寸的关系?

本文介绍了通过相机图像测算物体实际尺寸的方法,重点分析了传感器参数与成像质量的关系。文章首先给出了物体实际尺寸的计算公式,涉及像素尺寸、距离、分辨率等参数。然后详细解析了传感器尺寸与像元尺寸的关系,指出相同分辨率下更大的传感器能获得更好的成像质量。此外还介绍了光学尺寸、像素尺寸对成像的影响,以及帧率的概念。最后提及了相机标定的重要性,并概述了从像素坐标系转换到世界坐标系的基本思路。这些知识为通过相机图像进行精确测量提供了理论基础。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1336

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python tkinter模块的俄罗斯方块实训目标_1.1.1python tkinter实现俄罗斯方块基础版-基础界面...

本教程为我在b站投稿的视频教程av81480858 对应的文字版,项目最终效果见投稿简介部分,视频部分讲解的比较详细,觉得文字版不够详细的可以去看视频。本项目最终代码已上传github: https://github.com/BigShuang/Tetris 的1_BASIC文件夹。其中1234分别对应本项目教程每一部分的最终代码,所以想看完整代码直接看004.py就好。本项目通过python自带...

weixin_39704374的博客 191

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python tkinter实现俄罗斯方块基础版——四、消除与得分

1、消除与得分 最后,要实现俄罗斯方块的消除,就是当一行满了的时候,需要消除这行,同时在通过窗口标题展示得分情况 这里需要添加check_row_completed方法判断指定行是否可以消除 同时添加check_and_clear方法检查所有行并消除 而消除之后,我们需要在画板上重新绘制一遍消除后剩余的俄罗斯方块 这里最好将之前的draw_blank_board方法修改为,可以绘制面板上残留的俄罗...

大爽老师的博客 4675

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

python俄罗斯方块思路_1.1.2python tkinter实现俄罗斯方块基础版-界面动起来

0、思路要让游戏界面动起来,需要实现两点1-定时刷新页面2-移动页面内部的俄罗斯方块这块说一下,光实现一的话理论上页面也算动起来了,但是如果界面内容不变,每次新的页面和旧的界面看起来是一样的,给人的观看感觉跟没有动没有区别所以必须要实现2,来更改界面内容,给人“动”起来的感觉1、定时刷新页面实现定时刷新页面,很简单写一个方法用于循环刷新,再定时调用此部分代码写在原来代码最后的win.mainloo...

weixin_39876450的博客 321

python tkinter模块的俄罗斯方块实训目标_1.1.2python tkinter实现俄罗斯方块基础版-界面动起来...

0、思路要让游戏界面动起来,需要实现两点1-定时刷新页面2-移动页面内部的俄罗斯方块这块说一下,光实现一的话理论上页面也算动起来了,但是如果界面内容不变,每次新的页面和旧的界面看起来是一样的,给人的观看感觉跟没有动没有区别所以必须要实现2,来更改界面内容,给人“动”起来的感觉1、定时刷新页面实现定时刷新页面,很简单写一个方法用于循环刷新,再定时调用此部分代码写在原来代码最后的win.mainloo...

weixin_39578457的博客 141

Python游戏开发-俄罗斯方块游戏-手把手教学,100行代码轻松搞定!

和_draw_block_move(canvas, a_block)_这2行代码(这两行代码俄罗斯方块是在固定位置,按照指定形状生成的,需要删掉这部分代码),这块说一下,光实现一的话理论上页面也算动起来了,但是如果界面内容不变,每次新的页面和旧的界面看起来是一样的,给人的观看感觉跟没有动没有区别。这里的判断机制是,新生成的俄罗斯方块已经无法在出生点放置了,也就是出生点都已经被之前的固定的方块占用了,就算游戏结束。其实移动也比较简单,就是清掉旧位置已经绘制的俄罗斯方块,再在新位置绘制新的俄罗斯方块就好。

m0_65482549的博客 2325

【python+情人节】玩个俄罗斯方块都是爱你的形状——二、手动拼图(通过gui辅助实现)

本项目效果如图 动画过程已投稿b站:https://www.bilibili.com/video/av88671119 目录 一、思路分析 二、手动拼图 三、自动拼图 四、动画展示 ======================= 大爽歌作,made by big shuang ======================= 二、手动拼图 1、介绍 手动拼图这里通过一个gui来辅助实现 这个g...

大爽老师的博客 1399

python俄罗斯方块教程-100行代码

使用tkinter库实现基础窗体,不加入任何功能只需如下三行代码运行代码生成的窗口如下接下来我们需要在窗体里面,添加一个画布容器用来“装”俄罗斯方块,就是让这个画布作为面板,俄罗斯方块的移动和绘制均在这个画板上实现。这里我们设定一些俄罗斯方块游戏参数行数为R(取20)列数为C(取12)俄罗斯方块的边长为cell_size(取30)通过tkinger的画布类Canvas实现的代码如下运行代码生成的窗口如下,此时界面的长宽就变成我们所需要的了接下来在画板上绘制俄罗斯方块空白位。

Trb201012的博客 3277

python俄罗斯方块编码简单_python俄罗斯方块教程-100行代码

本项目通过python自带库tkinter实现,无需安装第三方库本项目基于python3版本开发(如果你的是python2.x,运行可能会有问题)一、基础界面1、搭建基础窗体使用tkinter库实现基础窗体,不加入任何功能只需如下三行代码importtkinterastkwin=tk.Tk()win.mainloop()运行代码生成的窗口如下 接下来我们需要在窗体里面,添加一个画布容...

weixin_42494742的博客 5840

用100行Python代码,制作游戏《俄罗斯方块》!

用100行Python代码,制作游戏《俄罗斯方块》!

m0_75067840的博客 1868

python 实现俄罗斯方块(一)

IT Xiao Ang Zai 8月7号 现在,让我们进行继续今天的python学习: 版本:python3.64 编程软件:pycharm,sublime   先给大家上代码,之后会为大家讲解其中的知识点和如何实现。 #coding=utf-8 from tkinter import * from random import * import threading from ...

ITxiaoangzai的博客 1万+

用100行python代码制作俄罗斯方块游戏,俄罗斯方块游戏教程-附完整代码

本项目通过python自带库tkinter实现,无需安装第三方库本项目基于python3版本开发(如果你的是python2.x,运行可能会有问题)

2401_85737382的博客 1641
上一篇: 【教程】python递归三部曲(基于turtle实现可视化)-三、迷宫探索
下一篇: python tkinter实现俄罗斯方块基础版——三、生成、移动、固定、消除
大爽歌
博客等级 码龄9年 422粉丝 92原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值