鱼C论坛

 找回密码
 立即注册
查看: 1100|回复: 1

[已解决]为啥这个运行不起来(我是个新手,网上找的代码)

[复制链接]
发表于 2024-6-26 20:55:09 | 显示全部楼层    本楼为最佳答案   
哈哈,这段代码看起来像是网上找来的俄罗斯方块代码,但有些地方可能是复制粘贴的时候出了一些问题。别担心,咱们一起来修一修!

首先,咱们来看看你代码里的几个明显问题:

1. **未定义的块形状(S、T、I、Z、O、L、J)**:这些块的定义有些地方是空的,应该包含具体的方块形状。
2. **缺少某些必要的符号(比如列表的方括号等)**。
3. **一些变量未初始化或未定义(比如`blist`,`zhuangtailist`等)**。

咱们一步步来修:

  1. import pygame, sys, random, time

  2. pygame.init()

  3. kuai = 40
  4. hang = 12
  5. lie = 20

  6. width, height = kuai * hang + 2 + 200, kuai * lie + 2

  7. window = pygame.display.set_mode((width, height))
  8. windowrect = window.get_rect()
  9. pygame.display.set_caption("俄罗斯方块")

  10. # 定义方块形状
  11. S = [
  12.     ['0000',
  13.      '0110',
  14.      '1100',
  15.      '0000'],

  16.     ['0100',
  17.      '0110',
  18.      '0010',
  19.      '0000']
  20. ]

  21. T = [
  22.     ['0000',
  23.      '1110',
  24.      '0100',
  25.      '0000'],

  26.     ['0100',
  27.      '0110',
  28.      '0100',
  29.      '0000'],

  30.     ['0000',
  31.      '0100',
  32.      '1110',
  33.      '0000'],

  34.     ['0100',
  35.      '1100',
  36.      '0100',
  37.      '0000']
  38. ]

  39. I = [
  40.     ['0010',
  41.      '0010',
  42.      '0010',
  43.      '0010'],

  44.     ['0000',
  45.      '1111',
  46.      '0000',
  47.      '0000']
  48. ]

  49. Z = [
  50.     ['0000',
  51.      '1100',
  52.      '0110',
  53.      '0000'],

  54.     ['0100',
  55.      '1100',
  56.      '1000',
  57.      '0000']
  58. ]

  59. O = [
  60.     ['0000',
  61.      '0110',
  62.      '0110',
  63.      '0000']
  64. ]

  65. L = [
  66.     ['0000',
  67.      '1110',
  68.      '1000',
  69.      '0000'],

  70.     ['1100',
  71.      '0100',
  72.      '0100',
  73.      '0000'],

  74.     ['0000',
  75.      '0010',
  76.      '1110',
  77.      '0000'],

  78.     ['0100',
  79.      '0100',
  80.      '0110',
  81.      '0000']
  82. ]

  83. J = [
  84.     ['0000',
  85.      '1110',
  86.      '0010',
  87.      '0000'],

  88.     ['0100',
  89.      '0100',
  90.      '1100',
  91.      '0000'],

  92.     ['0000',
  93.      '1000',
  94.      '1110',
  95.      '0000'],

  96.     ['1100',
  97.      '0100',
  98.      '0100',
  99.      '0000']
  100. ]

  101. # 初始化其他变量
  102. blist = []
  103. zhuangtailist = [[0 for _ in range(hang)] for _ in range(lie)]
  104. fenshu = 0
  105. font = pygame.font.Font("font/1.ttf", 50)

  106. def drawkuai(x, y):
  107.     pygame.draw.rect(window, (255, 80, 80), (x * kuai, y * kuai, kuai, kuai))

  108. def wangge():
  109.     x, y = 0, 0
  110.     for i in range(lie + 1):
  111.         pygame.draw.line(window, (200, 200, 200), (x, y), (kuai * hang, y), 2)
  112.         y += kuai
  113.     x, y = 0, 0
  114.     for i in range(hang + 1):
  115.         pygame.draw.line(window, (200, 200, 200), (x, y), (x, height), 2)
  116.         x += kuai

  117. def drawb(kuai):
  118.     for i in range(4):
  119.         for j in range(4):
  120.             if kuai.zaoxing[i][j] == '1':
  121.                 drawkuai(kuai.x + i, kuai.y + j)

  122. def drawzhuangtai():
  123.     for i in range(lie):
  124.         for j in range(hang):
  125.             if zhuangtailist[i][j] == 1:
  126.                 drawkuai(j, i)

  127. class kuailei:
  128.     def __init__(self, x, y, fangkuai, zaoxing):
  129.         self.x = x
  130.         self.y = y
  131.         self.fangkuai = fangkuai
  132.         self.zaoxing = zaoxing

  133. def shifouTrue():
  134.     for i in range(4):
  135.         for j in range(4):
  136.             if k.zaoxing[i][j] == '1':
  137.                 myx, myy = k.x + i, k.y + j
  138.                 if not (0 <= myx < hang and 0 <= myy < lie and zhuangtailist[myy][myx] == 0):
  139.                     return False
  140.     return True

  141. # 主循环(这只是个基本框架,具体实现还需要补充)
  142. running = True
  143. k = kuailei(0, 0, S, S[0])
  144. while running:
  145.     for event in pygame.event.get():
  146.         if event.type == pygame.QUIT:
  147.             running = False

  148.     window.fill((0, 0, 0))
  149.     wangge()
  150.     drawzhuangtai()
  151.     drawb(k)
  152.     pygame.display.flip()

  153.     time.sleep(0.5)

  154. pygame.quit()
  155. sys.exit()
复制代码


这是修正后的代码,添加了方块形状的定义和一些必要的初始化。你可以在此基础上继续完善,比如实现方块移动、碰撞检测、得分系统等。加油!玩代码就像拼乐高,一步步来,你会发现编程的乐趣。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-25 03:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表