乐趣区

关于python:为了上班摸鱼我用Python制作了俄罗斯方块

很多人问我我是零根底开始的小白,能学会 Python 嘛?

首先零根底是能学 python 的,很多编程大神入门之前都抉择先学习 Python,所以想学就大胆去学吧,没学之前谁不是零根底,就算是当初才下定决心学也不怕,学习 Python 什么时候都不算晚。

我本人学 python 之前,就是一个编程小白,没有任何根底,大学业余反正八竿子打不着,然而我当初作为一个 python 程序员,有着还不错的支出。我想你当初的状态和我刚开始是差不多,但你要置信本人的抉择,动摇本人的抉择。

这是为了下班摸鱼我用 Python 做的俄罗斯方块小游戏

​源码分享

import os
import sys
import random
from modules import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *


'''定义俄罗斯方块游戏类'''
class TetrisGame(QMainWindow):
    def __init__(self, parent=None):
        super(TetrisGame, self).__init__(parent)
        # 是否暂停 ing
        self.is_paused = False
        # 是否开始 ing
        self.is_started = False
        self.initUI()
    '''界面初始化'''
    def initUI(self):
        # icon
        self.setWindowIcon(QIcon(os.path.join(os.getcwd(), 'resources/icon.jpg')))
        # 块大小
        self.grid_size = 22
        # 游戏帧率
        self.fps = 200
        self.timer = QBasicTimer()
        # 焦点
        self.setFocusPolicy(Qt.StrongFocus)
        # 程度布局
        layout_horizontal = QHBoxLayout()
        self.inner_board = InnerBoard()
        self.external_board = ExternalBoard(self, self.grid_size, self.inner_board)
        layout_horizontal.addWidget(self.external_board)
        self.side_panel = SidePanel(self, self.grid_size, self.inner_board)
        layout_horizontal.addWidget(self.side_panel)
        self.status_bar = self.statusBar()
        self.external_board.score_signal[str].connect(self.status_bar.showMessage)
        self.start()
        self.center()
        self.setWindowTitle('Tetris —— 九歌')
        self.show()
        self.setFixedSize(self.external_board.width() + self.side_panel.width(), self.side_panel.height() + self.status_bar.height())
    '''游戏界面挪动到屏幕两头'''
    def center(self):
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2)
    '''更新界面'''
    def updateWindow(self):
        self.external_board.updateData()
        self.side_panel.updateData()
        self.update()
    '''开始'''
    def start(self):
        if self.is_started:
            return
        self.is_started = True
        self.inner_board.createNewTetris()
        self.timer.start(self.fps, self)
    '''暂停 / 不暂停'''
    def pause(self):
        if not self.is_started:
            return
        self.is_paused = not self.is_paused
        if self.is_paused:
            self.timer.stop()
            self.external_board.score_signal.emit('Paused')
        else:
            self.timer.start(self.fps, self)
        self.updateWindow()
    '''计时器事件'''
    def timerEvent(self, event):
        if event.timerId() == self.timer.timerId():
            removed_lines = self.inner_board.moveDown()
            self.external_board.score += removed_lines
            self.updateWindow()
        else:
            super(TetrisGame, self).timerEvent(event)
    '''按键事件'''
    def keyPressEvent(self, event):
        if not self.is_started or self.inner_board.current_tetris == tetrisShape().shape_empty:
            super(TetrisGame, self).keyPressEvent(event)
            return
        key = event.key()
        # P 键暂停
        if key == Qt.Key_P:
            self.pause()
            return
        if self.is_paused:
            return
        # 向左
        elif key == Qt.Key_Left:
            self.inner_board.moveLeft()
        # 向右
        elif key == Qt.Key_Right:
            self.inner_board.moveRight()
        # 旋转
        elif key == Qt.Key_Up:
            self.inner_board.rotateAnticlockwise()
        # 疾速坠落
        elif key == Qt.Key_Space:
            self.external_board.score += self.inner_board.dropDown()
        else:
            super(TetrisGame, self).keyPressEvent(event)
        self.updateWindow()


'''run'''
if __name__ == '__main__':
    app = QApplication([])
    tetris = TetrisGame()
    sys.exit(app.exec_())

也算是一个过来人了吧,当初看来当初我学 python 也是走了许多弯路,给大家分享一下我的教训吧。

肯定要多练!肯定要多练!肯定要多练!任何编程语言的学习都是建设在实际下面的,不练习,就像是花了半天工夫去学习开枪的实践,后果基本没有机会摸枪,你感觉你打得准吗?想要学好 Python 肯定要多去练习,没有熟练度的加成,你学的再多也只是夸夸其谈,一旦面对了真正的问题,你就会无从下手。

通过材料学习

Python 学习路线

Python 易学难精,不是久而久之就能深刻把握。我收藏的「学 Python 常识框架图」,系统地梳理了入门 Python 的必备知识点,倡议保留。

👉Python 所有方向的学习路线👈

Python 所有方向的技术点做的整顿,造成各个领域的知识点汇总,它的用途就在于,你能够依照下面的知识点去找对应的学习资源,保障本人学得较为全面。

👉Python 必备开发工具👈

工欲善其事必先利其器。学习 Python 罕用的开发软件都在这里了,给大家节俭了很多工夫。

👉Python 精品 PDF 电子书👈

浏览一些前辈整顿的书籍或者手写的笔记材料,这些笔记具体记录了他们对一些技术点的了解,这些了解是比拟独到,能够学到不一样的思路。

👉Python 学习视频👈

观看零根底学习视频,看视频学习是最快捷也是最有成果的形式,跟着视频中老师的思路,从根底到深刻,还是很容易入门的。

👉实战案例👈

光学实践是没用的,要学会跟着一起敲,要入手实操,能力将本人的所学使用到理论当中去,这时候能够搞点实战案例来学习。

👉Python 练习题👈

查看学习后果。

👉面试材料👈

咱们学习 Python 必然是为了找到高薪的工作,上面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试材料,并且有阿里大佬给出了权威的解答,刷完这一套面试材料置信大家都能找到称心的工作。

总结
材料我都为大家筹备好了,须要的搭档请扫下方 csdn 官网二维码收费支付

心愿我的学习教训能够帮忙到你,多结交一个圈子内的人,不便当前守业,毕竟一辈子给人打工是没有止境的。

退出移动版