鱼C论坛

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

[已解决]关于小甲鱼飞机大战代码的问题

[复制链接]
发表于 2018-12-14 21:08:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zhoujiachen1101 于 2018-12-14 21:09 编辑

小甲鱼飞机大战的代码中,第524行和529行的again_image和gameover_image都没有用load载入,为什么可以直接绘制呢?
  1. # main.py
  2. import pygame
  3. import sys
  4. import traceback
  5. import myplane
  6. import enemy
  7. import bullet
  8. import supply

  9. from pygame.locals import *
  10. from random import *

  11. pygame.init()
  12. pygame.mixer.init()

  13. bg_size = width, height = 480, 700
  14. screen = pygame.display.set_mode(bg_size)
  15. pygame.display.set_caption("飞机大战 -- FishC Demo")

  16. background = pygame.image.load("images/background.png").convert()

  17. BLACK = (0, 0, 0)
  18. WHITE = (255, 255, 255)
  19. GREEN = (0, 255, 0)
  20. RED = (255, 0, 0)

  21. # 载入游戏音乐
  22. pygame.mixer.music.load("sound/game_music.ogg")
  23. pygame.mixer.music.set_volume(0.2)
  24. bullet_sound = pygame.mixer.Sound("sound/bullet.wav")
  25. bullet_sound.set_volume(0.2)
  26. bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
  27. bomb_sound.set_volume(0.2)
  28. supply_sound = pygame.mixer.Sound("sound/supply.wav")
  29. supply_sound.set_volume(0.2)
  30. get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
  31. get_bomb_sound.set_volume(0.2)
  32. get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
  33. get_bullet_sound.set_volume(0.2)
  34. upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
  35. upgrade_sound.set_volume(0.2)
  36. enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
  37. enemy3_fly_sound.set_volume(0.2)
  38. enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
  39. enemy1_down_sound.set_volume(0.2)
  40. enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
  41. enemy2_down_sound.set_volume(0.2)
  42. enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
  43. enemy3_down_sound.set_volume(0.5)
  44. me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
  45. me_down_sound.set_volume(0.2)


  46. def add_small_enemies(group1, group2, num):
  47.     for i in range(num):
  48.         e1 = enemy.SmallEnemy(bg_size)
  49.         group1.add(e1)
  50.         group2.add(e1)

  51. def add_mid_enemies(group1, group2, num):
  52.     for i in range(num):
  53.         e2 = enemy.MidEnemy(bg_size)
  54.         group1.add(e2)
  55.         group2.add(e2)

  56. def add_big_enemies(group1, group2, num):
  57.     for i in range(num):
  58.         e3 = enemy.BigEnemy(bg_size)
  59.         group1.add(e3)
  60.         group2.add(e3)

  61. def inc_speed(target, inc):
  62.     for each in target:
  63.         each.speed += inc

  64. def main():
  65.     pygame.mixer.music.play(-1)

  66.     # 生成我方飞机
  67.     me = myplane.MyPlane(bg_size)

  68.     enemies = pygame.sprite.Group()

  69.     # 生成敌方小型飞机
  70.     small_enemies = pygame.sprite.Group()
  71.     add_small_enemies(small_enemies, enemies, 15)

  72.     # 生成敌方中型飞机
  73.     mid_enemies = pygame.sprite.Group()
  74.     add_mid_enemies(mid_enemies, enemies, 4)

  75.     # 生成敌方大型飞机
  76.     big_enemies = pygame.sprite.Group()
  77.     add_big_enemies(big_enemies, enemies, 2)

  78.     # 生成普通子弹
  79.     bullet1 = []
  80.     bullet1_index = 0
  81.     BULLET1_NUM = 4
  82.     for i in range(BULLET1_NUM):
  83.         bullet1.append(bullet.Bullet1(me.rect.midtop))

  84.     # 生成超级子弹
  85.     bullet2 = []
  86.     bullet2_index = 0
  87.     BULLET2_NUM = 8
  88.     for i in range(BULLET2_NUM//2):
  89.         bullet2.append(bullet.Bullet2((me.rect.centerx-33, me.rect.centery)))
  90.         bullet2.append(bullet.Bullet2((me.rect.centerx+30, me.rect.centery)))

  91.     clock = pygame.time.Clock()

  92.     # 中弹图片索引
  93.     e1_destroy_index = 0
  94.     e2_destroy_index = 0
  95.     e3_destroy_index = 0
  96.     me_destroy_index = 0

  97.     # 统计得分
  98.     score = 0
  99.     score_font = pygame.font.Font("font/font.ttf", 36)

  100.     # 标志是否暂停游戏
  101.     paused = False
  102.     pause_nor_image = pygame.image.load("images/pause_nor.png").convert_alpha()
  103.     pause_pressed_image = pygame.image.load("images/pause_pressed.png").convert_alpha()
  104.     resume_nor_image = pygame.image.load("images/resume_nor.png").convert_alpha()
  105.     resume_pressed_image = pygame.image.load("images/resume_pressed.png").convert_alpha()
  106.     paused_rect = pause_nor_image.get_rect()
  107.     paused_rect.left, paused_rect.top = width - paused_rect.width - 10, 10
  108.     paused_image = pause_nor_image

  109.     # 设置难度级别
  110.     level = 1

  111.     # 全屏炸弹
  112.     bomb_image = pygame.image.load("images/bomb.png").convert_alpha()
  113.     bomb_rect = bomb_image.get_rect()
  114.     bomb_font = pygame.font.Font("font/font.ttf", 48)
  115.     bomb_num = 3

  116.     # 每30秒发放一个补给包
  117.     bullet_supply = supply.Bullet_Supply(bg_size)
  118.     bomb_supply = supply.Bomb_Supply(bg_size)
  119.     SUPPLY_TIME = USEREVENT
  120.     pygame.time.set_timer(SUPPLY_TIME, 30 * 1000)

  121.     # 超级子弹定时器
  122.     DOUBLE_BULLET_TIME = USEREVENT + 1

  123.     # 标志是否使用超级子弹
  124.     is_double_bullet = False

  125.     # 解除我方无敌状态定时器
  126.     INVINCIBLE_TIME = USEREVENT + 2

  127.     # 生命数量
  128.     life_image = pygame.image.load("images/life.png").convert_alpha()
  129.     life_rect = life_image.get_rect()
  130.     life_num = 3

  131.     # 用于阻止重复打开记录文件
  132.     recorded = False

  133.     # 游戏结束画面
  134.     gameover_font = pygame.font.Font("font/font.TTF", 48)
  135.     again_image = pygame.image.load("images/again.png").convert_alpha()
  136.     again_rect = again_image.get_rect()
  137.     gameover_image = pygame.image.load("images/gameover.png").convert_alpha()
  138.     gameover_rect = gameover_image.get_rect()

  139.     # 用于切换图片
  140.     switch_image = True

  141.     # 用于延迟
  142.     delay = 100

  143.     running = True

  144.     while running:
  145.         for event in pygame.event.get():
  146.             if event.type == QUIT:
  147.                 pygame.quit()
  148.                 sys.exit()

  149.             elif event.type == MOUSEBUTTONDOWN:
  150.                 if event.button == 1 and paused_rect.collidepoint(event.pos):
  151.                     paused = not paused
  152.                     if paused:
  153.                         pygame.time.set_timer(SUPPLY_TIME, 0)
  154.                         pygame.mixer.music.pause()
  155.                         pygame.mixer.pause()
  156.                     else:
  157.                         pygame.time.set_timer(SUPPLY_TIME, 30 * 1000)
  158.                         pygame.mixer.music.unpause()
  159.                         pygame.mixer.unpause()

  160.             elif event.type == MOUSEMOTION:
  161.                 if paused_rect.collidepoint(event.pos):
  162.                     if paused:
  163.                         paused_image = resume_pressed_image
  164.                     else:
  165.                         paused_image = pause_pressed_image
  166.                 else:
  167.                     if paused:
  168.                         paused_image = resume_nor_image
  169.                     else:
  170.                        paused_image = pause_nor_image

  171.             elif event.type == KEYDOWN:
  172.                 if event.key == K_SPACE:
  173.                     if bomb_num:
  174.                         bomb_num -= 1
  175.                         bomb_sound.play()
  176.                         for each in enemies:
  177.                             if each.rect.bottom > 0:
  178.                                 each.active = False

  179.             elif event.type == SUPPLY_TIME:
  180.                 supply_sound.play()
  181.                 if choice([True, False]):
  182.                     bomb_supply.reset()
  183.                 else:
  184.                     bullet_supply.reset()

  185.             elif event.type == DOUBLE_BULLET_TIME:
  186.                 is_double_bullet = False
  187.                 pygame.time.set_timer(DOUBLE_BULLET_TIME, 0)

  188.             elif event.type == INVINCIBLE_TIME:
  189.                 me.invincible = False
  190.                 pygame.time.set_timer(INVINCIBLE_TIME, 0)
  191.                         

  192.         # 根据用户的得分增加难度
  193.         if level == 1 and score > 50000:
  194.             level = 2
  195.             upgrade_sound.play()
  196.             # 增加3架小型敌机、2架中型敌机和1架大型敌机
  197.             add_small_enemies(small_enemies, enemies, 3)
  198.             add_mid_enemies(mid_enemies, enemies, 2)
  199.             add_big_enemies(big_enemies, enemies, 1)
  200.             # 提升小型敌机的速度
  201.             inc_speed(small_enemies, 1)
  202.         elif level == 2 and score > 300000:
  203.             level = 3
  204.             upgrade_sound.play()
  205.             # 增加5架小型敌机、3架中型敌机和2架大型敌机
  206.             add_small_enemies(small_enemies, enemies, 5)
  207.             add_mid_enemies(mid_enemies, enemies, 3)
  208.             add_big_enemies(big_enemies, enemies, 2)
  209.             # 提升小型敌机的速度
  210.             inc_speed(small_enemies, 1)
  211.             inc_speed(mid_enemies, 1)
  212.         elif level == 3 and score > 600000:
  213.             level = 4
  214.             upgrade_sound.play()
  215.             # 增加5架小型敌机、3架中型敌机和2架大型敌机
  216.             add_small_enemies(small_enemies, enemies, 5)
  217.             add_mid_enemies(mid_enemies, enemies, 3)
  218.             add_big_enemies(big_enemies, enemies, 2)
  219.             # 提升小型敌机的速度
  220.             inc_speed(small_enemies, 1)
  221.             inc_speed(mid_enemies, 1)
  222.         elif level == 4 and score > 1000000:
  223.             level = 5
  224.             upgrade_sound.play()
  225.             # 增加5架小型敌机、3架中型敌机和2架大型敌机
  226.             add_small_enemies(small_enemies, enemies, 5)
  227.             add_mid_enemies(mid_enemies, enemies, 3)
  228.             add_big_enemies(big_enemies, enemies, 2)
  229.             # 提升小型敌机的速度
  230.             inc_speed(small_enemies, 1)
  231.             inc_speed(mid_enemies, 1)
  232.             

  233.         screen.blit(background, (0, 0))
  234.                
  235.         if life_num and not paused:
  236.             # 检测用户的键盘操作
  237.             key_pressed = pygame.key.get_pressed()

  238.             if key_pressed[K_w] or key_pressed[K_UP]:
  239.                 me.moveUp()
  240.             if key_pressed[K_s] or key_pressed[K_DOWN]:
  241.                 me.moveDown()
  242.             if key_pressed[K_a] or key_pressed[K_LEFT]:
  243.                 me.moveLeft()
  244.             if key_pressed[K_d] or key_pressed[K_RIGHT]:
  245.                 me.moveRight()

  246.             # 绘制全屏炸弹补给并检测是否获得
  247.             if bomb_supply.active:
  248.                 bomb_supply.move()
  249.                 screen.blit(bomb_supply.image, bomb_supply.rect)
  250.                 if pygame.sprite.collide_mask(bomb_supply, me):
  251.                     get_bomb_sound.play()
  252.                     if bomb_num < 3:
  253.                         bomb_num += 1
  254.                     bomb_supply.active = False

  255.             # 绘制超级子弹补给并检测是否获得
  256.             if bullet_supply.active:
  257.                 bullet_supply.move()
  258.                 screen.blit(bullet_supply.image, bullet_supply.rect)
  259.                 if pygame.sprite.collide_mask(bullet_supply, me):
  260.                     get_bullet_sound.play()
  261.                     is_double_bullet = True
  262.                     pygame.time.set_timer(DOUBLE_BULLET_TIME, 18 * 1000)
  263.                     bullet_supply.active = False

  264.             # 发射子弹
  265.             if not(delay % 10):
  266.                 bullet_sound.play()
  267.                 if is_double_bullet:
  268.                     bullets = bullet2
  269.                     bullets[bullet2_index].reset((me.rect.centerx-33, me.rect.centery))
  270.                     bullets[bullet2_index+1].reset((me.rect.centerx+30, me.rect.centery))
  271.                     bullet2_index = (bullet2_index + 2) % BULLET2_NUM
  272.                 else:
  273.                     bullets = bullet1
  274.                     bullets[bullet1_index].reset(me.rect.midtop)
  275.                     bullet1_index = (bullet1_index + 1) % BULLET1_NUM

  276.                
  277.             # 检测子弹是否击中敌机
  278.             for b in bullets:
  279.                 if b.active:
  280.                     b.move()
  281.                     screen.blit(b.image, b.rect)
  282.                     enemy_hit = pygame.sprite.spritecollide(b, enemies, False, pygame.sprite.collide_mask)
  283.                     if enemy_hit:
  284.                         b.active = False
  285.                         for e in enemy_hit:
  286.                             if e in mid_enemies or e in big_enemies:
  287.                                 e.hit = True
  288.                                 e.energy -= 1
  289.                                 if e.energy == 0:
  290.                                     e.active = False
  291.                             else:
  292.                                 e.active = False
  293.             
  294.             # 绘制大型敌机
  295.             for each in big_enemies:
  296.                 if each.active:
  297.                     each.move()
  298.                     if each.hit:
  299.                         screen.blit(each.image_hit, each.rect)
  300.                         each.hit = False
  301.                     else:
  302.                         if switch_image:
  303.                             screen.blit(each.image1, each.rect)
  304.                         else:
  305.                             screen.blit(each.image2, each.rect)

  306.                     # 绘制血槽
  307.                     pygame.draw.line(screen, BLACK, \
  308.                                      (each.rect.left, each.rect.top - 5), \
  309.                                      (each.rect.right, each.rect.top - 5), \
  310.                                      2)
  311.                     # 当生命大于20%显示绿色,否则显示红色
  312.                     energy_remain = each.energy / enemy.BigEnemy.energy
  313.                     if energy_remain > 0.2:
  314.                         energy_color = GREEN
  315.                     else:
  316.                         energy_color = RED
  317.                     pygame.draw.line(screen, energy_color, \
  318.                                      (each.rect.left, each.rect.top - 5), \
  319.                                      (each.rect.left + each.rect.width * energy_remain, \
  320.                                       each.rect.top - 5), 2)
  321.                         
  322.                     # 即将出现在画面中,播放音效
  323.                     if each.rect.bottom == -50:
  324.                         enemy3_fly_sound.play(-1)
  325.                 else:
  326.                     # 毁灭
  327.                     if not(delay % 3):
  328.                         if e3_destroy_index == 0:
  329.                             enemy3_down_sound.play()
  330.                         screen.blit(each.destroy_images[e3_destroy_index], each.rect)
  331.                         e3_destroy_index = (e3_destroy_index + 1) % 6
  332.                         if e3_destroy_index == 0:
  333.                             enemy3_fly_sound.stop()
  334.                             score += 10000
  335.                             each.reset()

  336.             # 绘制中型敌机:
  337.             for each in mid_enemies:
  338.                 if each.active:
  339.                     each.move()

  340.                     if each.hit:
  341.                         screen.blit(each.image_hit, each.rect)
  342.                         each.hit = False
  343.                     else:
  344.                         screen.blit(each.image, each.rect)

  345.                     # 绘制血槽
  346.                     pygame.draw.line(screen, BLACK, \
  347.                                      (each.rect.left, each.rect.top - 5), \
  348.                                      (each.rect.right, each.rect.top - 5), \
  349.                                      2)
  350.                     # 当生命大于20%显示绿色,否则显示红色
  351.                     energy_remain = each.energy / enemy.MidEnemy.energy
  352.                     if energy_remain > 0.2:
  353.                         energy_color = GREEN
  354.                     else:
  355.                         energy_color = RED
  356.                     pygame.draw.line(screen, energy_color, \
  357.                                      (each.rect.left, each.rect.top - 5), \
  358.                                      (each.rect.left + each.rect.width * energy_remain, \
  359.                                       each.rect.top - 5), 2)
  360.                 else:
  361.                     # 毁灭
  362.                     if not(delay % 3):
  363.                         if e2_destroy_index == 0:
  364.                             enemy2_down_sound.play()
  365.                         screen.blit(each.destroy_images[e2_destroy_index], each.rect)
  366.                         e2_destroy_index = (e2_destroy_index + 1) % 4
  367.                         if e2_destroy_index == 0:
  368.                             score += 6000
  369.                             each.reset()

  370.             # 绘制小型敌机:
  371.             for each in small_enemies:
  372.                 if each.active:
  373.                     each.move()
  374.                     screen.blit(each.image, each.rect)
  375.                 else:
  376.                     # 毁灭
  377.                     if not(delay % 3):
  378.                         if e1_destroy_index == 0:
  379.                             enemy1_down_sound.play()
  380.                         screen.blit(each.destroy_images[e1_destroy_index], each.rect)
  381.                         e1_destroy_index = (e1_destroy_index + 1) % 4
  382.                         if e1_destroy_index == 0:
  383.                             score += 1000
  384.                             each.reset()

  385.             # 检测我方飞机是否被撞
  386.             enemies_down = pygame.sprite.spritecollide(me, enemies, False, pygame.sprite.collide_mask)
  387.             if enemies_down and not me.invincible:
  388.                 me.active = False
  389.                 for e in enemies_down:
  390.                     e.active = False
  391.             
  392.             # 绘制我方飞机
  393.             if me.active:
  394.                 if switch_image:
  395.                     screen.blit(me.image1, me.rect)
  396.                 else:
  397.                     screen.blit(me.image2, me.rect)
  398.             else:
  399.                 # 毁灭
  400.                 if not(delay % 3):
  401.                     if me_destroy_index == 0:
  402.                         me_down_sound.play()
  403.                     screen.blit(me.destroy_images[me_destroy_index], me.rect)
  404.                     me_destroy_index = (me_destroy_index + 1) % 4
  405.                     if me_destroy_index == 0:
  406.                         life_num -= 1
  407.                         me.reset()
  408.                         pygame.time.set_timer(INVINCIBLE_TIME, 3 * 1000)

  409.             # 绘制全屏炸弹数量
  410.             bomb_text = bomb_font.render("× %d" % bomb_num, True, WHITE)
  411.             text_rect = bomb_text.get_rect()
  412.             screen.blit(bomb_image, (10, height - 10 - bomb_rect.height))
  413.             screen.blit(bomb_text, (20 + bomb_rect.width, height - 5 - text_rect.height))

  414.             # 绘制剩余生命数量
  415.             if life_num:
  416.                 for i in range(life_num):
  417.                     screen.blit(life_image, \
  418.                                 (width-10-(i+1)*life_rect.width, \
  419.                                  height-10-life_rect.height))

  420.             # 绘制得分
  421.             score_text = score_font.render("Score : %s" % str(score), True, WHITE)
  422.             screen.blit(score_text, (10, 5))

  423.         # 绘制游戏结束画面
  424.         elif life_num == 0:
  425.             # 背景音乐停止
  426.             pygame.mixer.music.stop()

  427.             # 停止全部音效
  428.             pygame.mixer.stop()

  429.             # 停止发放补给
  430.             pygame.time.set_timer(SUPPLY_TIME, 0)

  431.             if not recorded:
  432.                 recorded = True
  433.                 # 读取历史最高得分
  434.                 with open("record.txt", "r") as f:
  435.                     record_score = int(f.read())

  436.                 # 如果玩家得分高于历史最高得分,则存档
  437.                 if score > record_score:
  438.                     with open("record.txt", "w") as f:
  439.                         f.write(str(score))

  440.             # 绘制结束画面
  441.             record_score_text = score_font.render("Best : %d" % record_score, True, (255, 255, 255))
  442.             screen.blit(record_score_text, (50, 50))
  443.             
  444.             gameover_text1 = gameover_font.render("Your Score", True, (255, 255, 255))
  445.             gameover_text1_rect = gameover_text1.get_rect()
  446.             gameover_text1_rect.left, gameover_text1_rect.top = \
  447.                                  (width - gameover_text1_rect.width) // 2, height // 3
  448.             screen.blit(gameover_text1, gameover_text1_rect)
  449.             
  450.             gameover_text2 = gameover_font.render(str(score), True, (255, 255, 255))
  451.             gameover_text2_rect = gameover_text2.get_rect()
  452.             gameover_text2_rect.left, gameover_text2_rect.top = \
  453.                                  (width - gameover_text2_rect.width) // 2, \
  454.                                  gameover_text1_rect.bottom + 10
  455.             screen.blit(gameover_text2, gameover_text2_rect)

  456.             again_rect.left, again_rect.top = \
  457.                              (width - again_rect.width) // 2, \
  458.                              gameover_text2_rect.bottom + 50
  459.             screen.blit(again_image, again_rect)

  460.             gameover_rect.left, gameover_rect.top = \
  461.                                 (width - again_rect.width) // 2, \
  462.                                 again_rect.bottom + 10
  463.             screen.blit(gameover_image, gameover_rect)

  464.             # 检测用户的鼠标操作
  465.             # 如果用户按下鼠标左键
  466.             if pygame.mouse.get_pressed()[0]:
  467.                 # 获取鼠标坐标
  468.                 pos = pygame.mouse.get_pos()
  469.                 # 如果用户点击“重新开始”
  470.                 if again_rect.left < pos[0] < again_rect.right and \
  471.                    again_rect.top < pos[1] < again_rect.bottom:
  472.                     # 调用main函数,重新开始游戏
  473.                     main()
  474.                 # 如果用户点击“结束游戏”            
  475.                 elif gameover_rect.left < pos[0] < gameover_rect.right and \
  476.                      gameover_rect.top < pos[1] < gameover_rect.bottom:
  477.                     # 退出游戏
  478.                     pygame.quit()
  479.                     sys.exit()      

  480.         # 绘制暂停按钮
  481.         screen.blit(paused_image, paused_rect)

  482.         # 切换图片
  483.         if not(delay % 5):
  484.             switch_image = not switch_image

  485.         delay -= 1
  486.         if not delay:
  487.             delay = 100

  488.         pygame.display.flip()
  489.         clock.tick(60)
  490.         
  491. if __name__ == "__main__":
  492.     try:
  493.         main()
  494.     except SystemExit:
  495.         pass
  496.     except:
  497.         traceback.print_exc()
  498.         pygame.quit()
  499.         input()
复制代码

最佳答案
2018-12-14 21:27:31
    again_image = pygame.image.load("images/again.png").convert_alpha()
    again_rect = again_image.get_rect()
    gameover_image = pygame.image.load("images/gameover.png").convert_alpha()
    gameover_rect = gameover_image.get_rect()
167-170自己Ctrl+Fs搜索下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-14 21:27:31 | 显示全部楼层    本楼为最佳答案   
    again_image = pygame.image.load("images/again.png").convert_alpha()
    again_rect = again_image.get_rect()
    gameover_image = pygame.image.load("images/gameover.png").convert_alpha()
    gameover_rect = gameover_image.get_rect()
167-170自己Ctrl+Fs搜索下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 03:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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