我刚刚完成了一个应该(希望)播放GUI 俄罗斯方块程序的程序.我已经清理了所有的语法错误,但现在当我双击,或者经过命令提示符下运行DOS窗口弹出不到一秒钟,而没有运行的程序消失的程序.
这是怎么回事?
下面是codepad.org上代码的链接
哇,你的代码中确实存在大量错误.我开始在它下面运行它pdb,逐个识别和修复它们,但是在20左右之后我就放弃了.到目前为止我修正了(在diff输出中,行开头<意味着它们在你的版本中,或者>意味着它们在我的部分修复版本中).注意品种:你经常写产品嫁接,而不是虚假,用错的资本,使用-替代(减)=(等于),拼错变量(例如Boardd代替Board,even代替event),rnage而不是range,等等,等等.
37c37
< self.isStarted = Flase
---
> self.isStarted = False
63c63
< self.isWaitingAfterLine - Flase
---
> self.isWaitingAfterLine = False
87c87
< for i in range(Board.BoardHeight * Board.Boardwidth):
---
> for i in range(Board.BoardHeight * Board.BoardWidth):
135c135
< if even.GetId() == Boardd.ID_TIMER:
---
> if event.GetId() == Board.ID_TIMER:
205c205
< self.curY = Board.Height - 1 + self.curPiece.minY()
---
> self.curY = Board.BoardHeight - 1 + self.curPiece.minY()
214c214
< for i in rnage(4):
---
> for i in range(4):
217c217
< if x < 0 or x >= Board.BoardWidth or y < 0 or y >= Board.Boardheight:
---
> if x < 0 or x >= Board.BoardWidth or y < 0 or y >= Board.BoardHeight:
278c278
< self.coords = [[0, 0] for i in rnage(4)]
---
> self.coords = [[0, 0] for i in range(4)]
356c356,357
< Tetris(None, -1, 'Tetris')
---
> tetris = Tetris(None, -1, 'Tetris')
> app.SetTopWindow(tetris)
Run Code Online (Sandbox Code Playgroud)
经过所有这些修复,我已经停止发现另一个错字(def sqaureHeight当你明确表示时squareHeight) - 我不知道有多少拼写错误和其他错误仍然隐藏在这360行代码中...密度更高这样错误超过1/10的线路对我来说足够高.
我衷心地建议你开始与多不那么雄心勃勃的项目,并教自己精心"copyedit"你的代码,你显得那么容易出现这些拼写错误:它可能是诵读困难,并在同一时间一个优秀的程序员,但它确实需要您的额外努力和勤奋.pylint尽管它们确实有限制,但这些工具也可能有所帮助.
编辑:事实证明,固定一对夫妇的出现次数后sqaure进入square,程序没有运行-并立即显示一个空的窗口说:"游戏结束",并得到了raw_input你作为你的最后一行提示.因此,除了许多拼写错误之外,还必须存在一个或多个令人讨厌的逻辑级错误.我反复恳求开始的东西太多,很多在你第一次突袭成更简单的编程.
运行脚本实际上会产生回溯:
Traceback (most recent call last):
File "tetris.py", line 356, in <module>
Tetris(None, -1, 'Tetris')
File "tetris.py", line 10, in __init__
self.statusbar - self.CreateStatusBar()
AttributeError: 'Tetris' object has no attribute 'statusbar'
Run Code Online (Sandbox Code Playgroud)
您的脚本在第10行有错误:
self.statusbar - self.CreateStatusBar()
Run Code Online (Sandbox Code Playgroud)
你的意思是在那里分配,而不是从尚不存在的属性中减去.