范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

神还原欢乐无穷的双人坦克大战小程序游戏,上手开玩

  前言
  嘿!我是栗子同学,欢迎大家阅读这篇 《坦克大战双人版游戏编程》。
  我相信这个游戏的话对于大家来说可能会比较难,刚开始学习的话这个代码就直接发给大家玩一玩的哈,但是大家可以看看这个代码啦!
  当然基础好的话可以考虑看完后尝试做一个类似的游戏,然后遇到不懂的地方可以来我的粉丝裙,
  没有基础的同学也不用担心:偶尔有Python免费的在线直播互动课哟,大家可以跟着我一起学习,我带大家入门。
  好啦, 总之我所有的文章源码+素材都是可以免费拿的,需要的滴滴我哈!也欢迎大家阅读往期的文章。
  《坦克大战双人版》游戏介绍:
  双人版的《坦克大战》的基本规则是玩家消灭出现的敌方坦克保卫我方基地。
  中间还会随机出现很多特殊道具吸收可获得相应的功能,消灭完即可进入下一关。
  方向键:上下左右移动即可。另一个方向键则是:WSAD。 环境配置:
  Python3、 Pycharm 、Pygame。
  第三方库的安装:pip install pygame 效果展示:
  开始界面一一
  开始即可上手玩游戏,还有背景音乐辅助!游戏玩起来更带感!
  游戏界面——
  代码演示:
  1)游戏主程序 import pygame import sys import traceback import wall import myTank import enemyTank import food       def main():     pygame.init()     pygame.mixer.init()          resolution = 630, 630     screen = pygame.display.set_mode(resolution)     pygame.display.set_caption("Tank War ")          # 加载图片,音乐,音效.     background_image     = pygame.image.load(r"..imagebackground.png")     home_image           = pygame.image.load(r"..imagehome.png")     home_destroyed_image = pygame.image.load(r"..imagehome_destroyed.png")          bang_sound          = pygame.mixer.Sound(r"..musicbang.wav")     bang_sound.set_volume(1)     fire_sound           = pygame.mixer.Sound(r"..musicGunfire.wav")     start_sound          = pygame.mixer.Sound(r"..musicstart.wav")     start_sound.play()          # 定义精灵组:坦克,我方坦克,敌方坦克,敌方子弹     allTankGroup     = pygame.sprite.Group()     mytankGroup      = pygame.sprite.Group()     allEnemyGroup    = pygame.sprite.Group()     redEnemyGroup    = pygame.sprite.Group()     greenEnemyGroup  = pygame.sprite.Group()     otherEnemyGroup  = pygame.sprite.Group()       enemyBulletGroup = pygame.sprite.Group()     # 创建地图      bgMap = wall.Map()     # 创建食物/道具 但不显示     prop = food.Food()     # 创建我方坦克     myTank_T1 = myTank.MyTank(1)     allTankGroup.add(myTank_T1)     mytankGroup.add(myTank_T1)     myTank_T2 = myTank.MyTank(2)     allTankGroup.add(myTank_T2)     mytankGroup.add(myTank_T2)     # 创建敌方 坦克     for i in range(1, 4):             enemy = enemyTank.EnemyTank(i)             allTankGroup.add(enemy)             allEnemyGroup.add(enemy)             if enemy.isred == True:                 redEnemyGroup.add(enemy)                 continue             if enemy.kind == 3:                 greenEnemyGroup.add(enemy)                 continue             otherEnemyGroup.add(enemy)     # 敌军坦克出现动画     appearance_image = pygame.image.load(r"..imageappear.png").convert_alpha()     appearance = []     appearance.append(appearance_image.subsurface(( 0, 0), (48, 48)))     appearance.append(appearance_image.subsurface((48, 0), (48, 48)))     appearance.append(appearance_image.subsurface((96, 0), (48, 48)))                         # 自定义事件     # 创建敌方坦克延迟200     DELAYEVENT = pygame.constants.USEREVENT     pygame.time.set_timer(DELAYEVENT, 200)     # 创建 敌方 子弹延迟1000     ENEMYBULLETNOTCOOLINGEVENT = pygame.constants.USEREVENT + 1     pygame.time.set_timer(ENEMYBULLETNOTCOOLINGEVENT, 1000)     # 创建 我方 子弹延迟200     MYBULLETNOTCOOLINGEVENT = pygame.constants.USEREVENT + 2     pygame.time.set_timer(MYBULLETNOTCOOLINGEVENT, 200)     # 敌方坦克 静止8000     NOTMOVEEVENT = pygame.constants.USEREVENT + 3     pygame.time.set_timer(NOTMOVEEVENT, 8000)               delay = 100     moving = 0     movdir = 0     moving2 = 0     movdir2 = 0     enemyNumber = 3     enemyCouldMove      = True     switch_R1_R2_image  = True     homeSurvive         = True     running_T1          = True     running_T2          = True     clock = pygame.time.Clock()     while True:         for event in pygame.event.get():             if event.type == pygame.QUIT:                 pygame.quit()                 sys.exit()                          # 我方子弹冷却事件             if event.type == MYBULLETNOTCOOLINGEVENT:                 myTank_T1.bulletNotCooling = True                              # 敌方子弹冷却事件             if event.type == ENEMYBULLETNOTCOOLINGEVENT:                 for each in allEnemyGroup:                     each.bulletNotCooling = True                          # 敌方坦克静止事件             if event.type == NOTMOVEEVENT:                 enemyCouldMove = True                          # 创建敌方坦克延迟             if event.type == DELAYEVENT:                 if enemyNumber < 4:                     enemy = enemyTank.EnemyTank()                     if pygame.sprite.spritecollide(enemy, allTankGroup, False, None):                         break                     allEnemyGroup.add(enemy)                     allTankGroup.add(enemy)                     enemyNumber += 1                     if enemy.isred == True:                         redEnemyGroup.add(enemy)                     elif enemy.kind == 3:                         greenEnemyGroup.add(enemy)                     else:                         otherEnemyGroup.add(enemy)                                              if event.type == pygame.KEYDOWN:                 if event.key == pygame.K_c and pygame.KMOD_CTRL:                     pygame.quit()                     sys.exit()                              if event.key == pygame.K_e:                     myTank_T1.levelUp()                 if event.key == pygame.K_q:                     myTank_T1.levelDown()                 if event.key == pygame.K_3:                     myTank_T1.levelUp()                     myTank_T1.levelUp()                     myTank_T1.level = 3                 if event.key == pygame.K_2:                     if myTank_T1.speed == 3:                         myTank_T1.speed = 24                     else:                         myTank_T1.speed = 3                 if event.key == pygame.K_1:                     for x, y in [(11,23),(12,23),(13,23),(14,23),(11,24),(14,24),(11,25),(14,25)]:                         bgMap.brick = wall.Brick()                         bgMap.brick.rect.left, bgMap.brick.rect.top = 3 + x * 24, 3 + y * 24                         bgMap.brickGroup.add(bgMap.brick)                                 if event.key == pygame.K_4:                     for x, y in [(11,23),(12,23),(13,23),(14,23),(11,24),(14,24),(11,25),(14,25)]:                         bgMap.iron = wall.Iron()                         bgMap.iron.rect.left, bgMap.iron.rect.top = 3 + x * 24, 3 + y * 24                         bgMap.ironGroup.add(bgMap.iron)                                            # 检查用户的键盘操作         key_pressed = pygame.key.get_pressed()         # 玩家一的移动操作         if moving:             moving -= 1             if movdir == 0:                 allTankGroup.remove(myTank_T1)                 if myTank_T1.moveUp(allTankGroup, bgMap.brickGroup, bgMap.ironGroup):                     moving += 1                 allTankGroup.add(myTank_T1)                 running_T1 = True             if movdir == 1:                 allTankGroup.remove(myTank_T1)                 if myTank_T1.moveDown(allTankGroup, bgMap.brickGroup, bgMap.ironGroup):                     moving += 1                 allTankGroup.add(myTank_T1)                 running_T1 = True             if movdir == 2:                 allTankGroup.remove(myTank_T1)                 if myTank_T1.moveLeft(allTankGroup, bgMap.brickGroup, bgMap.ironGroup):                     moving += 1                 allTankGroup.add(myTank_T1)                 running_T1 = True             if movdir == 3:                 allTankGroup.remove(myTank_T1)                 if myTank_T1.moveRight(allTankGroup, bgMap.brickGroup, bgMap.ironGroup):                     moving += 1                 allTankGroup.add(myTank_T1)                 running_T1 = True                          if not moving:             if key_pressed[pygame.K_w]:                 moving = 7                 movdir = 0                 running_T1 = True                 allTankGroup.remove(myTank_T1)                 if myTank_T1.moveUp(allTankGroup, bgMap.brickGroup, bgMap.ironGroup):                     moving = 0                 allTankGroup.add(myTank_T1)             elif key_pressed[pygame.K_s]:                 moving = 7                 movdir = 1                 running_T1 = True                 allTankGroup.remove(myTank_T1)                 if myTank_T1.moveDown(allTankGroup, bgMap.brickGroup, bgMap.ironGroup):                     moving = 0                 allTankGroup.add(myTank_T1)             elif key_pressed[pygame.K_a]:                 moving = 7                 movdir = 2                 running_T1 = True                 allTankGroup.remove(myTank_T1)                 if myTank_T1.moveLeft(allTankGroup, bgMap.brickGroup, bgMap.ironGroup):                     moving = 0                 allTankGroup.add(myTank_T1)             elif key_pressed[pygame.K_d]:                 moving = 7                 movdir = 3                 running_T1 = True                 allTankGroup.remove(myTank_T1)                 if myTank_T1.moveRight(allTankGroup, bgMap.brickGroup, bgMap.ironGroup):                     moving = 0                 allTankGroup.add(myTank_T1)         if key_pressed[pygame.K_j]:             if not myTank_T1.bullet.life and myTank_T1.bulletNotCooling:                 fire_sound.play()                 myTank_T1.shoot()                 myTank_T1.bulletNotCooling = False                          # 玩家二的移动操作         if moving2:             moving2 -= 1             if movdir2 == 0:                 allTankGroup.remove(myTank_T2)                 myTank_T2.moveUp(allTankGroup, bgMap.brickGroup, bgMap.ironGroup)                 allTankGroup.add(myTank_T2)                 running_T2 = True             if movdir2 == 1:                 allTankGroup.remove(myTank_T2)                 myTank_T2.moveDown(allTankGroup, bgMap.brickGroup, bgMap.ironGroup)                 allTankGroup.add(myTank_T2)                 running_T2 = True             if movdir2 == 2:                 allTankGroup.remove(myTank_T2)                 myTank_T2.moveLeft(allTankGroup, bgMap.brickGroup, bgMap.ironGroup)                 allTankGroup.add(myTank_T2)                 running_T2 = True             if movdir2 == 3:                 allTankGroup.remove(myTank_T2)                 myTank_T2.moveRight(allTankGroup, bgMap.brickGroup, bgMap.ironGroup)                 allTankGroup.add(myTank_T2)                 running_T2 = True                          if not moving2:             if key_pressed[pygame.K_UP]:                 allTankGroup.remove(myTank_T2)                 myTank_T2.moveUp(allTankGroup, bgMap.brickGroup, bgMap.ironGroup)                 allTankGroup.add(myTank_T2)                 moving2 = 7                 movdir2 = 0                 running_T2 = True             elif key_pressed[pygame.K_DOWN]:                 allTankGroup.remove(myTank_T2)                 myTank_T2.moveDown(allTankGroup, bgMap.brickGroup, bgMap.ironGroup)                 allTankGroup.add(myTank_T2)                 moving2 = 7                 movdir2 = 1                 running_T2 = True             elif key_pressed[pygame.K_LEFT]:                 allTankGroup.remove(myTank_T2)                 myTank_T2.moveLeft(allTankGroup, bgMap.brickGroup, bgMap.ironGroup)                 allTankGroup.add(myTank_T2)                 moving2 = 7                 movdir2 = 2                 running_T2 = True             elif key_pressed[pygame.K_RIGHT]:                 allTankGroup.remove(myTank_T2)                 myTank_T2.moveRight(allTankGroup, bgMap.brickGroup, bgMap.ironGroup)                 allTankGroup.add(myTank_T2)                 moving2 = 7                 movdir2 = 3                 running_T2 = True         if key_pressed[pygame.K_KP0]:             if not myTank_T2.bullet.life:                 # fire_sound.play()                 myTank_T2.shoot()                                             # 画背景         screen.blit(background_image, (0, 0))         # 画砖块         for each in bgMap.brickGroup:             screen.blit(each.image, each.rect)                 # 花石头         for each in bgMap.ironGroup:             screen.blit(each.image, each.rect)                 # 画home         if homeSurvive:             screen.blit(home_image, (3 + 12 * 24, 3 + 24 * 24))         else:             screen.blit(home_destroyed_image, (3 + 12 * 24, 3 + 24 * 24))         # 画我方坦克1         if not (delay % 5):             switch_R1_R2_image = not switch_R1_R2_image         if switch_R1_R2_image and running_T1:             screen.blit(myTank_T1.tank_R0, (myTank_T1.rect.left, myTank_T1.rect.top))             running_T1 = False         else:             screen.blit(myTank_T1.tank_R1, (myTank_T1.rect.left, myTank_T1.rect.top))         # 画我方坦克2         if switch_R1_R2_image and running_T2:             screen.blit(myTank_T2.tank_R0, (myTank_T2.rect.left, myTank_T2.rect.top))             running_T2 = False         else:             screen.blit(myTank_T2.tank_R1, (myTank_T2.rect.left, myTank_T2.rect.top))             # 画敌方坦克         for each in allEnemyGroup:             # 判断5毛钱特效是否播放                         if each.flash:                 # 判断画左动作还是右动作                 if switch_R1_R2_image:                     screen.blit(each.tank_R0, (each.rect.left, each.rect.top))                     if enemyCouldMove:                         allTankGroup.remove(each)                         each.move(allTankGroup, bgMap.brickGroup, bgMap.ironGroup)                         allTankGroup.add(each)                 else:                     screen.blit(each.tank_R1, (each.rect.left, each.rect.top))                     if enemyCouldMove:                         allTankGroup.remove(each)                         each.move(allTankGroup, bgMap.brickGroup, bgMap.ironGroup)                         allTankGroup.add(each)                                 else:                 # 播放5毛钱特效                 if each.times > 0:                     each.times -= 1                     if each.times <= 10:                         screen.blit(appearance[2], (3 + each.x * 12 * 24, 3))                     elif each.times <= 20:                         screen.blit(appearance[1], (3 + each.x * 12 * 24, 3))                     elif each.times <= 30:                         screen.blit(appearance[0], (3 + each.x * 12 * 24, 3))                     elif each.times <= 40:                         screen.blit(appearance[2], (3 + each.x * 12 * 24, 3))                     elif each.times <= 50:                         screen.blit(appearance[1], (3 + each.x * 12 * 24, 3))                     elif each.times <= 60:                         screen.blit(appearance[0], (3 + each.x * 12 * 24, 3))                     elif each.times <= 70:                         screen.blit(appearance[2], (3 + each.x * 12 * 24, 3))                     elif each.times <= 80:                         screen.blit(appearance[1], (3 + each.x * 12 * 24, 3))                     elif each.times <= 90:                         screen.blit(appearance[0], (3 + each.x * 12 * 24, 3))                 if each.times == 0:                     each.flash = True                                  # 绘制我方子弹1         if myTank_T1.bullet.life:             myTank_T1.bullet.move()                 screen.blit(myTank_T1.bullet.bullet, myTank_T1.bullet.rect)             # 子弹 碰撞 子弹             for each in enemyBulletGroup:                 if each.life:                     if pygame.sprite.collide_rect(myTank_T1.bullet, each):                         myTank_T1.bullet.life = False                         each.life = False                         pygame.sprite.spritecollide(myTank_T1.bullet, enemyBulletGroup, True, None)             # 子弹 碰撞 敌方坦克             if pygame.sprite.spritecollide(myTank_T1.bullet, redEnemyGroup, True, None):                 prop.change()                 bang_sound.play()                 enemyNumber -= 1                 myTank_T1.bullet.life = False             elif pygame.sprite.spritecollide(myTank_T1.bullet,greenEnemyGroup, False, None):                 for each in greenEnemyGroup:                     if pygame.sprite.collide_rect(myTank_T1.bullet, each):                         if each.life == 1:                             pygame.sprite.spritecollide(myTank_T1.bullet,greenEnemyGroup, True, None)                             bang_sound.play()                             enemyNumber -= 1                         elif each.life == 2:                             each.life -= 1                             each.tank = each.enemy_3_0                         elif each.life == 3:                             each.life -= 1                             each.tank = each.enemy_3_2                 myTank_T1.bullet.life = False             elif pygame.sprite.spritecollide(myTank_T1.bullet, otherEnemyGroup, True, None):                 bang_sound.play()                 enemyNumber -= 1                 myTank_T1.bullet.life = False                 #if pygame.sprite.spritecollide(myTank_T1.bullet, allEnemyGroup, True, None):             #    bang_sound.play()             #    enemyNumber -= 1             #    myTank_T1.bullet.life = False             # 子弹 碰撞 brickGroup             if pygame.sprite.spritecollide(myTank_T1.bullet, bgMap.brickGroup, True, None):                 myTank_T1.bullet.life = False                 myTank_T1.bullet.rect.left, myTank_T1.bullet.rect.right = 3 + 12 * 24, 3 + 24 * 24             # 子弹 碰撞 brickGroup             if myTank_T1.bullet.strong:                 if pygame.sprite.spritecollide(myTank_T1.bullet, bgMap.ironGroup, True, None):                     myTank_T1.bullet.life = False                     myTank_T1.bullet.rect.left, myTank_T1.bullet.rect.right = 3 + 12 * 24, 3 + 24 * 24             else:                     if pygame.sprite.spritecollide(myTank_T1.bullet, bgMap.ironGroup, False, None):                     myTank_T1.bullet.life = False                     myTank_T1.bullet.rect.left, myTank_T1.bullet.rect.right = 3 + 12 * 24, 3 + 24 * 24                  # 绘制我方子弹2         if myTank_T2.bullet.life:             myTank_T2.bullet.move()                 screen.blit(myTank_T2.bullet.bullet, myTank_T2.bullet.rect)             # 子弹 碰撞 敌方坦克             if pygame.sprite.spritecollide(myTank_T2.bullet, allEnemyGroup, True, None):                 bang_sound.play()                 enemyNumber -= 1                 myTank_T2.bullet.life = False             # 子弹 碰撞 brickGroup             if pygame.sprite.spritecollide(myTank_T2.bullet, bgMap.brickGroup, True, None):                 myTank_T2.bullet.life = False                 myTank_T2.bullet.rect.left, myTank_T2.bullet.rect.right = 3 + 12 * 24, 3 + 24 * 24             # 子弹 碰撞 brickGroup             if myTank_T2.bullet.strong:                 if pygame.sprite.spritecollide(myTank_T2.bullet, bgMap.ironGroup, True, None):                     myTank_T2.bullet.life = False                     myTank_T2.bullet.rect.left, myTank_T2.bullet.rect.right = 3 + 12 * 24, 3 + 24 * 24             else:                     if pygame.sprite.spritecollide(myTank_T2.bullet, bgMap.ironGroup, False, None):                     myTank_T2.bullet.life = False                     myTank_T2.bullet.rect.left, myTank_T2.bullet.rect.right = 3 + 12 * 24, 3 + 24 * 24                   # 绘制敌人子弹         for each in allEnemyGroup:             # 如果子弹没有生命,则赋予子弹生命             if not each.bullet.life and each.bulletNotCooling and enemyCouldMove:                 enemyBulletGroup.remove(each.bullet)                 each.shoot()                 enemyBulletGroup.add(each.bullet)                 each.bulletNotCooling = False             # 如果5毛钱特效播放完毕 并且 子弹存活 则绘制敌方子弹             if each.flash:                 if each.bullet.life:                     # 如果敌人可以移动                     if enemyCouldMove:                         each.bullet.move()                     screen.blit(each.bullet.bullet, each.bullet.rect)                     # 子弹 碰撞 我方坦克                     if pygame.sprite.collide_rect(each.bullet, myTank_T1):                         bang_sound.play()                         myTank_T1.rect.left, myTank_T1.rect.top = 3 + 8 * 24, 3 + 24 * 24                          each.bullet.life = False                         moving = 0  # 重置移动控制参数                         for i in range(myTank_T1.level+1):                             myTank_T1.levelDown()                     if pygame.sprite.collide_rect(each.bullet, myTank_T2):                         bang_sound.play()                         myTank_T2.rect.left, myTank_T2.rect.top = 3 + 16 * 24, 3 + 24 * 24                          each.bullet.life = False                     # 子弹 碰撞 brickGroup                     if pygame.sprite.spritecollide(each.bullet, bgMap.brickGroup, True, None):                         each.bullet.life = False                     # 子弹 碰撞 ironGroup                     if each.bullet.strong:                         if pygame.sprite.spritecollide(each.bullet, bgMap.ironGroup, True, None):                             each.bullet.life = False                     else:                             if pygame.sprite.spritecollide(each.bullet, bgMap.ironGroup, False, None):                             each.bullet.life = False                       # 最后画食物/道具         if prop.life:             screen.blit(prop.image, prop.rect)             # 我方坦克碰撞 食物/道具             if pygame.sprite.collide_rect(myTank_T1, prop):                 if prop.kind == 1:  # 敌人全毁                     for each in allEnemyGroup:                         if pygame.sprite.spritecollide(each, allEnemyGroup, True, None):                             bang_sound.play()                             enemyNumber -= 1                     prop.life = False                 if prop.kind == 2:  # 敌人静止                     enemyCouldMove = False                     prop.life = False                 if prop.kind == 3:  # 子弹增强                     myTank_T1.bullet.strong = True                     prop.life = False                 if prop.kind == 4:  # 家得到保护                     for x, y in [(11,23),(12,23),(13,23),(14,23),(11,24),(14,24),(11,25),(14,25)]:                         bgMap.iron = wall.Iron()                         bgMap.iron.rect.left, bgMap.iron.rect.top = 3 + x * 24, 3 + y * 24                         bgMap.ironGroup.add(bgMap.iron)                                     prop.life = False                 if prop.kind == 5:  # 坦克无敌                     prop.life = False                     pass                 if prop.kind == 6:  # 坦克升级                     myTank_T1.levelUp()                     prop.life = False                 if prop.kind == 7:  # 坦克生命+1                     myTank_T1.life += 1                     prop.life = False                                                                               # 延迟         delay -= 1         if not delay:             delay = 100                      pygame.display.flip()         clock.tick(60)           if __name__ == "__main__":     try:         main()     except SystemExit:         pass     except:         traceback.print_exc()         pygame.quit()         input()
  2)随机出现的特殊道具 import pygame import random  class Food(pygame.sprite.Sprite):     def __init__(self):                  self.food_boom    = pygame.image.load(r"..imagefood_boom.png").convert_alpha()         self.food_clock   = pygame.image.load(r"..imagefood_clock.png").convert_alpha()         self.food_gun     = pygame.image.load(r"..imagefood_gun.png").convert_alpha()         self.food_iron    = pygame.image.load(r"..imagefood_iron.png").convert_alpha()         self.food_protect = pygame.image.load(r"..imagefood_protect.png").convert_alpha()         self.food_star    = pygame.image.load(r"..imagefood_star.png").convert_alpha()         self.food_tank    = pygame.image.load(r"..imagefood_tank.png").convert_alpha()              self.kind = random.choice([1, 2, 3, 4, 5, 6, 7])         if self.kind == 1:             self.image = self.food_boom         elif self.kind == 2:             self.image = self.food_clock         elif self.kind == 3:             self.image = self.food_gun         elif self.kind == 4:             self.image = self.food_iron         elif self.kind == 5:             self.image = self.food_protect         elif self.kind == 6:             self.image = self.food_star         elif self.kind == 7:             self.image = self.food_tank                      self.rect = self.image.get_rect()         self.rect.left = self.rect.top = random.randint(100, 500)                  self.life = False              def change(self):         self.kind = random.choice([1, 2, 3, 4, 5, 6, 7])         if self.kind == 1:             self.image = self.food_boom         elif self.kind == 2:             self.image = self.food_clock         elif self.kind == 3:             self.image = self.food_gun         elif self.kind == 4:             self.image = self.food_iron         elif self.kind == 5:             self.image = self.food_protect         elif self.kind == 6:             self.image = self.food_star         elif self.kind == 7:             self.image = self.food_tank                      self.rect.left = self.rect.top = random.randint(100, 500)         self.life = True
  3)地图界面 import pygame  brickImage          = r"..imagebrick.png" ironImage           = r"..imageiron.png"  class Brick(pygame.sprite.Sprite):     def __init__(self):         pygame.sprite.Sprite.__init__(self)                  self.image = pygame.image.load(brickImage)         self.rect = self.image.get_rect()          class Iron(pygame.sprite.Sprite):     def __init__(self):         pygame.sprite.Sprite.__init__(self)                  self.image = pygame.image.load(ironImage)         self.rect = self.image.get_rect()          class Map():     def __init__(self):         self.brickGroup = pygame.sprite.Group()         self.ironGroup  = pygame.sprite.Group()                  # 数字代表地图中的位置         # 画砖块         X1379 = [2, 3, 6, 7, 18, 19, 22, 23]         Y1379 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 17, 18, 19, 20, 21, 22, 23]         X28 = [10, 11, 14, 15]         Y28 = [2, 3, 4, 5, 6, 7, 8, 11, 12, 15, 16, 17, 18, 19, 20]         X46 = [4, 5, 6, 7, 18, 19, 20, 21]         Y46 = [13, 14]         X5  = [12, 13]         Y5  = [16, 17]         X0Y0 = [(11,23),(12,23),(13,23),(14,23),(11,24),(14,24),(11,25),(14,25)]         for x in X1379:             for y in Y1379:                 self.brick = Brick()                 self.brick.rect.left, self.brick.rect.top = 3 + x * 24, 3 + y * 24                 self.brickGroup.add(self.brick)         for x in X28:             for y in Y28:                 self.brick = Brick()                 self.brick.rect.left, self.brick.rect.top = 3 + x * 24, 3 + y * 24                 self.brickGroup.add(self.brick)         for x in X46:             for y in Y46:                 self.brick = Brick()                 self.brick.rect.left, self.brick.rect.top = 3 + x * 24, 3 + y * 24                 self.brickGroup.add(self.brick)         for x in X5:             for y in Y5:                 self.brick = Brick()                 self.brick.rect.left, self.brick.rect.top = 3 + x * 24, 3 + y * 24                 self.brickGroup.add(self.brick)         for x, y in X0Y0:             self.brick = Brick()             self.brick.rect.left, self.brick.rect.top = 3 + x * 24, 3 + y * 24             self.brickGroup.add(self.brick)                  # 画石头         for x, y in [(0,14),(1,14),(12,6),(13,6),(12,7),(13,7),(24,14),(25,14)]:             self.iron = Iron()             self.iron.rect.left, self.iron.rect.top = 3 + x * 24, 3 + y * 24             self.ironGroup.add(self.iron)                      结尾
  《坦克大作战》游戏小程序好玩吗?《坦克大作战》小游戏怎么玩?怎么进入《坦克大作战》?
  点点关注,直接找我拿小游戏源码即可上手开完儿了吖~私信我也可以! 源码基地——
  私信小编06或者点击这行蓝色字体即可免费获取哈! 往期推荐推荐——
  项目1.1 GIF制作神奇(斗罗大陆为例)
  【Python神器】推荐这款傻瓜式GIF制作工具,以后别再说不会了(好用到爆~)
  项目2.7 圣诞快乐你的已送达!
  【圣诞快乐】叮咚 没人送你圣诞礼物没有关系,可以找我啊?只要你开口 我都没有~
  项目2.8 圣诞快乐!
  【圣诞快乐】闻到圣诞的气息了,喜欢的节日在慢慢来临~祝大家Merry Christmas。
  项目1.0 超级玛丽
  程序员自制游戏:超级玛丽100%真实版,能把你玩哭了~【附源码】
  项目1.1 扫雷
  Pygame实战:据说这是史上最难扫雷游戏,没有之一,你们感受下......
  文章汇总——
  项目1.0 Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了

学会做游戏竟然如此简单魔兽争霸3轻松上手编辑器做地图现在很多人都喜欢玩游戏,但是却很少有人了解做游戏,我也算是游戏制作者,但是大学毕业就一直没什么正经工作,有过很长时间的迷茫期。我和所有人一样,刚开始觉得做游戏的都是很厉害的程序员,2021好玩的十款手机游戏推荐,一玩就是一宿,根本停不下来各位朋友是否已经厌倦了目前热门的手机游戏?是否又为找不到真正好玩的手游而苦恼?最近国外知名游戏媒体PT整理出了2021最佳的手机游戏(适配苹果与安卓),下面我们一起看看都有哪些游戏东半球最强法务部竟然输了!任天堂败诉预购游戏玩家可以退款点击右上方关注,第一时间获取科技资讯技能攻略产品体验,私信我回复01,送你一份玩机技能大礼包。三年前,任天堂因EShop商店游戏预购无法退款,被欧洲消费者权益保护机构起诉。去年任天复古传奇萌新玩家如何在复古传奇游戏中打金?hello大家早啊,风靡全国的传奇游戏已经有20多年的历史,一直深受欢迎。有的玩家仅仅是想打发下班后的一些空闲时间,有的玩家是想在游戏中找朋友,而一些高端玩家就想在游戏中打金赚钱。获英雄联盟手游赛事推荐!OPPOReno7Pro天玑1200MAX给出答案作为国内最炽手可热的游戏IP之一,英雄联盟到底有多火?看看EDG卫冕S11冠军时的盛况,以及英雄联盟手游上线时铺天盖地的排队朋友圈就知道了。在MOBA手游市场火热的当下,推出电竞游原神其实给新手准备了免费五星,却因种种原因,披了四星的外衣游戏中的笔杆王者,每日靠玩游戏过日子,玩网游也有20个年头,我有自己独特的见解,作为一个10年不脱坑的老玩家,如果文章写的有什么问题,请重喷!如果大家觉得好,请转发加点赞!非常感谢今屿透露SK的战术秘密只要把对面打怂了,对面就不敢跟我们打了eStarPro和狼队这两支战队成功晋级胜者组决赛,将会在下周的比赛中争夺秋季赛首个总决赛的名额。因为今屿是从eStarPro转会到狼队,所以和eStarPro主教练SK是互相熟悉迷你世界海底召唤金字塔,蛇神会被海水淹死吗?大家都知道,迷你世界还有很多我们没有探索到的地方,毕竟这个空间太大了,在迷你世界里,你可以尽情创造新的世界,无休无止,所以随着玩家们对游戏的深入,就会发现有更多神秘的境地等着我们去号外,迷你世界那些不起眼的装备,却有大作用,你知道么?哈喽各位小伙伴们,自从迷你世界更新以后,你们有仔细看看都更新了那些东西么?无论是物品还是生物,都让我开了眼界,特别是这个花圈,好家伙,居然还能增加防御力,不仅外表美观,就连实用性也迷你世界新版本熔岩方块竟然可以流出岩浆哈喽小伙伴们大家好,我依旧是你们酷酷的凉茶今天凉茶哥哥又来给你们科普迷你世界的新知识啦相信不少玩家都知道,迷你世界要迎来1。0版本的更新了。在这一次的更新里面,我们可以看到,全新内世界上有什么游戏能够达到100G以上?我是电竞小报社,一个用心扯犊子的作者!近些年,游戏发展迅猛,从2D进步为3D,人们对极致游戏的追求也从未止步。当年CF占内存2G我们甚至会觉得大,但在如今看来只能算弟弟LOL的都突
吃鸡3个新车皮返皮肤返点券,为了年终业绩,毫无底线欢迎诸位小伙伴们来到天哥开讲的和平精英精英小课堂双节将至,光子也开始为年终业绩拼尽全力,游戏中不仅出现了3个新车皮,而且还有8个返点券10个返场,可以说是毫无底线不过,这一波连招之俗话说得好,有钱男子汉,无钱汉子难今天给大家介绍一下钟无艳这个英雄!英雄的操作难度还不是特别的高,对于新手玩家来说还是比较好的,也是新手玩家必备的英雄,因为它的价格只需要5888金币。他的定位是战士坦克,目前有三款动作RPG手游火炬之光无限CG预告IT之家12月21日消息,今天,IGN放出了火炬之光无限新的CG预告,并表示游戏将于近期开始封闭测试。IT之家了解到,火炬之光无限是由完美世界和RunicGames正版火炬之光IP吃鸡迎123M更新,说好的兰博消失了,又出现3个新载具皮肤欢迎诸位小伙伴们来到天哥开讲的和平精英精英小课堂每当这款游戏迎来小更新之际,细心的大神玩家总能通过解包的方式,找到光子公告之外的一些新发现。现如今,和平精英再次迎来123M的小更新21日体验服更新,龙刀系打野刀集体加强,达摩张飞直接起飞大家好我是指尖,12。21日王者荣耀体验服更新,调整了几个英雄的强度,以及对打野刀的伤害做出了平衡,一起来看看吧。达摩加强伤害达摩目前版本的定位是比较尴尬的,因为过分依赖一闪开团,吃鸡机甲封神大转盘!原创载具再次出现,特效枪似曾相识务实不浮夸!我是你们的情报小能手,微笑十倍镜!随着10套军需的正式官宣,吃鸡手游和平精英来到了年末冲业绩的阶段!想要获得更好的成绩,只有旧款军需自然没有排面,后续必有大招!众所周知家园不再,能否克服旅途艰难,找到自己失散的家人。归家异途游戏简介归家异途是由国产团队TPPStudio所制作的一款扮演难民的roguelike游戏。在归家异途里玩家将扮演因为战争而和女儿失散的难民,在种种的生存危机中一路前行,收集水食物AppAnnieTikTok重回11月热门应用(非游戏)下载排行榜首位勇夺双冠军智通财经APP获悉,12月21日,AppAnnie发布2021年11月月度指数排行榜数据。数据显示,AppAnnie11月全球热门应用(非游戏)下载收入榜单,TikTok重回下载排游戏有多赚钱?腾讯王者荣耀和刺激战场狂揽56亿美元编者按游戏赚钱早已经不是什么秘密,但和传统的端游有区别的是,手游赚钱显然没有这么受关注。最新的数据来看,腾讯是最大赢家,两大游戏狂收几十亿美元,而米哈游则是最具潜力的游戏公司,假以为什么游戏一沾NFT,玩家就很反对?前几天有一条新闻引起了我的注意潜行者2切尔诺贝利之心宣布取消NFT项目。之前,该游戏开发商GSCGameWorld准备与NFT平台DMarket合作,开发游戏的数字项目。内容是提供FC龙牙,游戏中的武器是越短越强,当年你最喜欢用什么武器红白机上的龙牙不知道大家玩过没有,难度非常大,尤其是单人玩的时候,每次挂了都要从关卡的开头重来,加上游戏中并没有血量这一说法,属于一碰就挂,这一设定更是让本身难度就非常大的游戏雪上