热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python教程分享Python Pygame实战之五款童年经典游戏合集

一、推箱子1)代码展示importosimportsysimportcfgimportpygamefrommodulesimport*fromitertoolsimportchai

一、推箱子

1)代码展示

import os  import sys  import cfg  import pygame  from modules import *  from itertools import chain      '''游戏地图'''  class gamemap():      def __init__(self, num_cols, num_rows):          self.walls = []          self.boxes = []          self.targets = []          self.num_cols = num_cols          self.num_rows = num_rows      '''增加游戏元素'''      def addelement(self, elem_type, col, row):          if elem_type == 'wall':              self.walls.append(elementsprite('wall.png', col, row, cfg))          elif elem_type == 'box':              self.boxes.append(elementsprite('box.png', col, row, cfg))          elif elem_type == 'target':              self.targets.append(elementsprite('target.png', col, row, cfg))      '''画游戏地图'''      def draw(self, screen):          for elem in self.elemsiter():              elem.draw(screen)      '''游戏元素迭代器'''      def elemsiter(self):          for elem in chain(self.targets, self.walls, self.boxes):              yield elem      '''该关卡中所有的箱子是否都在指定位置, 在的话就是通关了'''      def levelcompleted(self):          for box in self.boxes:              is_match = false              for target in self.targets:                  if box.col == target.col and box.row == target.row:                      is_match = true                      break              if not is_match:                  return false          return true      '''某位置是否可到达'''      def isvalidpos(self, col, row):          if col >= 0 and row >= 0 and col 游戏窗口界面, 所以需要根据人物位置滚动'''      def scroll(self):          x, y = self.player.rect.center          width = self.game_surface.get_rect().w          height = self.game_surface.get_rect().h          if (x + cfg.screensize[0] // 2) > cfg.screensize[0]:              if -1 * self.scroll_x + cfg.screensize[0]  0:              if self.scroll_x <0:                  self.scroll_x += 2          if (y + cfg.screensize[1] // 2) > cfg.screensize[1]:              if -1 * self.scroll_y + cfg.screensize[1]  0:              if self.scroll_y <0:                  self.scroll_y += 2      '''某一关卡的游戏主循环'''  def rungame(screen, game_level):      clock = pygame.time.clock()      game_interface = gameinterface(screen)      game_interface.loadlevel(game_level)      font_path = os.path.join(cfg.fontdir, 'simkai.ttf')      text = '按r键重新开始本关'      fOnt= pygame.font.font(font_path, 15)      text_render = font.render(text, 1, (255, 255, 255))      while true:          for event in pygame.event.get():              if event.type == pygame.quit:                  pygame.quit()                  sys.exit(0)              elif event.type == pygame.keydown:                  if event.key == pygame.k_left:                      next_pos = game_interface.player.move('left', is_test=true)                      if game_interface.game_map.isvalidpos(*next_pos):                          game_interface.player.move('left')                      else:                          box = game_interface.game_map.getbox(*next_pos)                          if box:                              next_pos = box.move('left', is_test=true)                              if game_interface.game_map.isvalidpos(*next_pos):                                  game_interface.player.move('left')                                  box.move('left')                      break                  if event.key == pygame.k_right:                      next_pos = game_interface.player.move('right', is_test=true)                      if game_interface.game_map.isvalidpos(*next_pos):                          game_interface.player.move('right')                      else:                          box = game_interface.game_map.getbox(*next_pos)                          if box:                              next_pos = box.move('right', is_test=true)                              if game_interface.game_map.isvalidpos(*next_pos):                                  game_interface.player.move('right')                                  box.move('right')                      break                  if event.key == pygame.k_down:                      next_pos = game_interface.player.move('down', is_test=true)                      if game_interface.game_map.isvalidpos(*next_pos):                          game_interface.player.move('down')                      else:                          box = game_interface.game_map.getbox(*next_pos)                          if box:                              next_pos = box.move('down', is_test=true)                              if game_interface.game_map.isvalidpos(*next_pos):                                  game_interface.player.move('down')                                  box.move('down')                      break                  if event.key == pygame.k_up:                      next_pos = game_interface.player.move('up', is_test=true)                      if game_interface.game_map.isvalidpos(*next_pos):                          game_interface.player.move('up')                      else:                          box = game_interface.game_map.getbox(*next_pos)                          if box:                              next_pos = box.move('up', is_test=true)                              if game_interface.game_map.isvalidpos(*next_pos):                                  game_interface.player.move('up')                                  box.move('up')                      break                  if event.key == pygame.k_r:                      game_interface.initgame()                      game_interface.loadlevel(game_level)          game_interface.draw(game_interface.player, game_interface.game_map)          if game_interface.game_map.levelcompleted():              return          screen.blit(text_render, (5, 5))          pygame.display.flip()          clock.tick(100)      '''主函数'''  def main():      pygame.init()      pygame.mixer.init()      pygame.display.set_caption('推箱子 —— 源码基地:#959755565#')      screen = pygame.display.set_mode(cfg.screensize)      pygame.mixer.init()      audio_path = os.path.join(cfg.audiodir, 'eineliebe.mp3')      pygame.mixer.music.load(audio_path)      pygame.mixer.music.set_volume(0.4)      pygame.mixer.music.play(-1)      startinterface(screen, cfg)      for level_name in sorted(os.listdir(cfg.leveldir)):          rungame(screen, level_name)          switchinterface(screen, cfg)      endinterface(screen, cfg)      '''run'''  if __name__ == '__main__':      main()

2)效果展示

Python Pygame实战之五款童年经典游戏合集

二、滑雪

1)代码展示

import sys  import cfg  import pygame  import random      '''滑雪者类'''  class skierclass(pygame.sprite.sprite):      def __init__(self):          pygame.sprite.sprite.__init__(self)          # 滑雪者的朝向(-2到2)          self.direction = 0          self.imagepaths = cfg.skier_image_paths[:-1]          self.image = pygame.image.load(self.imagepaths[self.direction])          self.rect = self.image.get_rect()          self.rect.center = [320, 100]          self.speed = [self.direction, 6-abs(self.direction)*2]      '''改变滑雪者的朝向. 负数为向左,正数为向右,0为向前'''      def turn(self, num):          self.direction += num          self.direction = max(-2, self.direction)          self.direction = min(2, self.direction)          center = self.rect.center          self.image = pygame.image.load(self.imagepaths[self.direction])          self.rect = self.image.get_rect()          self.rect.center = center          self.speed = [self.direction, 6-abs(self.direction)*2]          return self.speed      '''移动滑雪者'''      def move(self):          self.rect.centerx += self.speed[0]          self.rect.centerx = max(20, self.rect.centerx)          self.rect.centerx = min(620, self.rect.centerx)      '''设置为摔倒状态'''      def setfall(self):          self.image = pygame.image.load(cfg.skier_image_paths[-1])      '''设置为站立状态'''      def setforward(self):          self.direction = 0          self.image = pygame.image.load(self.imagepaths[self.direction])      '''  function:      障碍物类  input:      img_path: 障碍物图片路径      location: 障碍物位置      attribute: 障碍物类别属性  '''  class obstacleclass(pygame.sprite.sprite):      def __init__(self, img_path, location, attribute):          pygame.sprite.sprite.__init__(self)          self.img_path = img_path          self.image = pygame.image.load(self.img_path)          self.location = location          self.rect = self.image.get_rect()          self.rect.center = self.location          self.attribute = attribute          self.passed = false      '''移动'''      def move(self, num):          self.rect.centery = self.location[1] - num      '''创建障碍物'''  def createobstacles(s, e, num=10):      obstacles = pygame.sprite.group()      locatiOns= []      for i in range(num):          row = random.randint(s, e)          col = random.randint(0, 9)          location  = [col*64+20, row*64+20]          if location not in locations:              locations.append(location)              attribute = random.choice(list(cfg.obstacle_paths.keys()))              img_path = cfg.obstacle_paths[attribute]              obstacle = obstacleclass(img_path, location, attribute)              obstacles.add(obstacle)      return obstacles      '''合并障碍物'''  def addobstacles(obstacles0, obstacles1):      obstacles = pygame.sprite.group()      for obstacle in obstacles0:          obstacles.add(obstacle)      for obstacle in obstacles1:          obstacles.add(obstacle)      return obstacles      '''显示游戏开始界面'''  def showstartinterface(screen, screensize):      screen.fill((255, 255, 255))      tfOnt= pygame.font.font(cfg.fontpath, screensize[0]//5)      cfOnt= pygame.font.font(cfg.fontpath, screensize[0]//20)      title = tfont.render(u'滑雪游戏', true, (255, 0, 0))      cOntent= cfont.render(u'按任意键开始游戏', true, (0, 0, 255))      trect = title.get_rect()      trect.midtop = (screensize[0]/2, screensize[1]/5)      crect = content.get_rect()      crect.midtop = (screensize[0]/2, screensize[1]/2)      screen.blit(title, trect)      screen.blit(content, crect)      while true:          for event in pygame.event.get():              if event.type == pygame.quit:                  pygame.quit()                  sys.exit()              elif event.type == pygame.keydown:                  return          pygame.display.update()      '''显示分数'''  def showscore(screen, score, pos=(10, 10)):      fOnt= pygame.font.font(cfg.fontpath, 30)      score_text = font.render("score: %s" % score, true, (0, 0, 0))      screen.blit(score_text, pos)      '''更新当前帧的游戏画面'''  def updateframe(screen, obstacles, skier, score):      screen.fill((255, 255, 255))      obstacles.draw(screen)      screen.blit(skier.image, skier.rect)      showscore(screen, score)      pygame.display.update()      '''主程序'''  def main():      # 游戏初始化      pygame.init()      pygame.mixer.init()      pygame.mixer.music.load(cfg.bgmpath)      pygame.mixer.music.set_volume(0.4)      pygame.mixer.music.play(-1)      # 设置屏幕      screen = pygame.display.set_mode(cfg.screensize)      pygame.display.set_caption('滑雪大冒险')      # 游戏开始界面      showstartinterface(screen, cfg.screensize)      # 实例化游戏精灵      # --滑雪者      skier = skierclass()      # --创建障碍物      obstacles0 = createobstacles(20, 29)      obstacles1 = createobstacles(10, 19)      obstaclesflag = 0      obstacles = addobstacles(obstacles0, obstacles1)      # 游戏clock      clock = pygame.time.clock()      # 记录滑雪的距离      distance = 0      # 记录当前的分数      score = 0      # 记录当前的速度      speed = [0, 6]      # 游戏主循环      while true:          # --事件捕获          for event in pygame.event.get():              if event.type == pygame.quit:                  pygame.quit()                  sys.exit()              if event.type == pygame.keydown:                  if event.key == pygame.k_left or event.key == pygame.k_a:                      speed = skier.turn(-1)                  elif event.key == pygame.k_right or event.key == pygame.k_d:                      speed = skier.turn(1)          # --更新当前游戏帧的数据          skier.move()          distance += speed[1]          if distance >= 640 and obstaclesflag == 0:              obstaclesflag = 1              obstacles0 = createobstacles(20, 29)              obstacles = addobstacles(obstacles0, obstacles1)          if distance >= 1280 and obstaclesflag == 1:              obstaclesflag = 0              distance -= 1280              for obstacle in obstacles0:                  obstacle.location[1] = obstacle.location[1] - 1280              obstacles1 = createobstacles(10, 19)              obstacles = addobstacles(obstacles0, obstacles1)          for obstacle in obstacles:              obstacle.move(distance)          # --碰撞检测          hitted_obstacles = pygame.sprite.spritecollide(skier, obstacles, false)          if hitted_obstacles:              if hitted_obstacles[0].attribute == "tree" and not hitted_obstacles[0].passed:                  score -= 50                  skier.setfall()                  updateframe(screen, obstacles, skier, score)                  pygame.time.delay(1000)                  skier.setforward()                  speed = [0, 6]                  hitted_obstacles[0].passed = true              elif hitted_obstacles[0].attribute == "flag" and not hitted_obstacles[0].passed:                  score += 10                  obstacles.remove(hitted_obstacles[0])          # --更新屏幕          updateframe(screen, obstacles, skier, score)          clock.tick(cfg.fps)      '''run'''  if __name__ == '__main__':      main()

2)效果展示​

Python Pygame实战之五款童年经典游戏合集

三、声控把音符

1)代码展示

import cfg  import cocos  import struct  from modules import *  from cocos.sprite import sprite  from pyaudio import pyaudio, paint16      '''定义声控游戏类'''  class vcgame(cocos.layer.colorlayer):      def __init__(self):          super(vcgame, self).__init__(255, 255, 255, 255, 800, 600)          # frames_per_buffer          self.num_samples = 1000          # 声控条          self.vbar = sprite(cfg.block_image_path)          self.vbar.position = 20, 450          self.vbar.scale_y = 0.1          self.vbar.image_anchor = 0, 0          self.add(self.vbar)          # 皮卡丘          self.pikachu = pikachu(cfg.pikachu_image_path)          self.add(self.pikachu)          # 地面          self.floor = cocos.cocosnode.cocosnode()          self.add(self.floor)          position = 0, 100          for i in range(120):              b = block(cfg.block_image_path, position)              self.floor.add(b)              position = b.x + b.width, b.height          # 声音输入          audio = pyaudio()          self.stream = audio.open(format=paint16, channels=1, rate=int(audio.get_device_info_by_index(0)['defaultsamplerate']), input=true, frames_per_buffer=self.num_samples)          # 屏幕更新          self.schedule(self.update)      '''碰撞检测'''      def collide(self):          diffx = self.pikachu.x - self.floor.x          for b in self.floor.get_children():              if (b.x <= diffx + self.pikachu.width * 0.8) and (diffx + self.pikachu.width * 0.2 <= b.x + b.width):                  if self.pikachu.y  3000:              self.floor.x -= min((k / 20.0), 150) * dt          # 皮卡丘跳跃          if k > 8000:              self.pikachu.jump((k - 8000) / 1000.0)          # 碰撞检测          self.collide()      '''重置'''      def reset(self):          self.floor.x = 0      '''run'''  if __name__ == '__main__':      cocos.director.director.init(caption="xiaohei go go go ")      cocos.director.director.run(cocos.scene.scene(vcgame()))

2)效果展示

Python Pygame实战之五款童年经典游戏合集

四、保卫萝卜

1)代码展示

import sys  import cfg  import math  import random  import pygame  from modules import *      '''游戏初始化'''  def initgame():      # 初始化pygame, 设置展示窗口      pygame.init()      pygame.mixer.init()      screen = pygame.display.set_mode(cfg.screensize)      pygame.display.set_caption('兔子')      # 加载必要的游戏素材      game_images = {}      for key, value in cfg.image_paths.items():          game_images[key] = pygame.image.load(value)      game_sounds = {}      for key, value in cfg.sounds_paths.items():          if key != 'moonlight':              game_sounds[key] = pygame.mixer.sound(value)      return screen, game_images, game_sounds      '''主函数'''  def main():      # 初始化      screen, game_images, game_sounds = initgame()      # 播放背景音乐      pygame.mixer.music.load(cfg.sounds_paths['moonlight'])      pygame.mixer.music.play(-1, 0.0)      # 字体加载      fOnt= pygame.font.font(none, 24)      # 定义兔子      bunny = bunnysprite(image=game_images.get('rabbit'), position=(100, 100))      # 跟踪玩家的精度变量, 记录了射出的箭头数和被击中的獾的数量.      acc_record = [0., 0.]      # 生命值      healthvalue = 194      # 弓箭      arrow_sprites_group = pygame.sprite.group()      # 獾      badguy_sprites_group = pygame.sprite.group()      badguy = badguysprite(game_images.get('badguy'), position=(640, 100))      badguy_sprites_group.add(badguy)      # 定义了一个定时器, 使得游戏里经过一段时间后就新建一支獾      badtimer = 100      badtimer1 = 0      # 游戏主循环, running变量会跟踪游戏是否结束, exitcode变量会跟踪玩家是否胜利.      running, exitcode = true, false      clock = pygame.time.clock()      while running:          # --在给屏幕画任何东西之前用黑色进行填充          screen.fill(0)          # --添加的风景也需要画在屏幕上          for x in range(cfg.screensize[0]//game_images['grass'].get_width()+1):              for y in range(cfg.screensize[1]//game_images['grass'].get_height()+1):                  screen.blit(game_images['grass'], (x*100, y*100))          for i in range(4): screen.blit(game_images['castle'], (0, 30+105*i))          # --倒计时信息          countdown_text = font.render(str((90000-pygame.time.get_ticks())//60000)+":"+str((90000-pygame.time.get_ticks())//1000%60).zfill(2), true, (0, 0, 0))          countdown_rect = countdown_text.get_rect()          countdown_rect.topright = [635, 5]          screen.blit(countdown_text, countdown_rect)          # --按键检测          # ----退出与射击          for event in pygame.event.get():              if event.type == pygame.quit:                  pygame.quit()                  sys.exit()              elif event.type == pygame.mousebuttondown:                  game_sounds['shoot'].play()                  acc_record[1] += 1                  mouse_pos = pygame.mouse.get_pos()                  angle = math.atan2(mouse_pos[1]-(bunny.rotated_position[1]+32), mouse_pos[0]-(bunny.rotated_position[0]+26))                  arrow = arrowsprite(game_images.get('arrow'), (angle, bunny.rotated_position[0]+32, bunny.rotated_position[1]+26))                  arrow_sprites_group.add(arrow)          # ----移动兔子          key_pressed = pygame.key.get_pressed()          if key_pressed[pygame.k_w]:              bunny.move(cfg.screensize, 'up')          elif key_pressed[pygame.k_s]:              bunny.move(cfg.screensize, 'down')          elif key_pressed[pygame.k_a]:              bunny.move(cfg.screensize, 'left')          elif key_pressed[pygame.k_d]:              bunny.move(cfg.screensize, 'right')          # --更新弓箭          for arrow in arrow_sprites_group:              if arrow.update(cfg.screensize):                  arrow_sprites_group.remove(arrow)          # --更新獾          if badtimer == 0:              badguy = badguysprite(game_images.get('badguy'), position=(640, random.randint(50, 430)))              badguy_sprites_group.add(badguy)              badtimer = 100 - (badtimer1 * 2)              badtimer1 = 20 if badtimer1>=20 else badtimer1+2          badtimer -= 1          for badguy in badguy_sprites_group:              if badguy.update():                  game_sounds['hit'].play()                  healthvalue -= random.randint(4, 8)                  badguy_sprites_group.remove(badguy)          # --碰撞检测          for arrow in arrow_sprites_group:              for badguy in badguy_sprites_group:                  if pygame.sprite.collide_mask(arrow, badguy):                      game_sounds['enemy'].play()                      arrow_sprites_group.remove(arrow)                      badguy_sprites_group.remove(badguy)                      acc_record[0] += 1          # --画出弓箭          arrow_sprites_group.draw(screen)          # --画出獾          badguy_sprites_group.draw(screen)          # --画出兔子          bunny.draw(screen, pygame.mouse.get_pos())          # --画出城堡健康值, 首先画了一个全红色的生命值条, 然后根据城堡的生命值往生命条里面添加绿色.          screen.blit(game_images.get('healthbar'), (5, 5))          for i in range(healthvalue):              screen.blit(game_images.get('health'), (i+8, 8))          # --判断游戏是否结束          if pygame.time.get_ticks() >= 90000:              running, exitcode = false, true          if healthvalue <= 0:              running, exitcode = false, false          # --更新屏幕          pygame.display.flip()          clock.tick(cfg.fps)      # 计算准确率      accuracy = acc_record[0] / acc_record[1] * 100 if acc_record[1] > 0 else 0      accuracy = '%.2f' % accuracy      showendgameinterface(screen, exitcode, accuracy, game_images)      '''run'''  if __name__ == '__main__':      main()

2)效果展示​

Python Pygame实战之五款童年经典游戏合集

五、飞机大战

1)代码展示

import sys  import cfg  import pygame  from modules import *      '''游戏界面'''  def gaminginterface(num_player, screen):      # 初始化      pygame.mixer.music.load(cfg.soundpaths['cool space music'])      pygame.mixer.music.set_volume(0.4)      pygame.mixer.music.play(-1)      explosion_sound = pygame.mixer.sound(cfg.soundpaths['boom'])      fire_sound = pygame.mixer.sound(cfg.soundpaths['shot'])      fOnt= pygame.font.font(cfg.fontpath, 20)      # 游戏背景图      bg_imgs = [cfg.imagepaths['bg_big'], cfg.imagepaths['seamless_space'], cfg.imagepaths['space3']]      bg_move_dis = 0      bg_1 = pygame.image.load(bg_imgs[0]).convert()      bg_2 = pygame.image.load(bg_imgs[1]).convert()      bg_3 = pygame.image.load(bg_imgs[2]).convert()      # 玩家, 子弹和小行星精灵组      player_group = pygame.sprite.group()      bullet_group = pygame.sprite.group()      asteroid_group = pygame.sprite.group()      # 产生小行星的时间间隔      asteroid_ticks = 90      for i in range(num_player):          player_group.add(ship(i+1, cfg))      clock = pygame.time.clock()      # 分数      score_1, score_2 = 0, 0      # 游戏主循环      while true:          for event in pygame.event.get():              if event.type == pygame.quit:                  pygame.quit()                  sys.exit()          # --玩家一: ↑↓←→控制, j射击; 玩家二: wsad控制, 空格射击          pressed_keys = pygame.key.get_pressed()          for idx, player in enumerate(player_group):              direction = none              if idx == 0:                  if pressed_keys[pygame.k_up]:                      direction = 'up'                  elif pressed_keys[pygame.k_down]:                      direction = 'down'                  elif pressed_keys[pygame.k_left]:                      direction = 'left'                  elif pressed_keys[pygame.k_right]:                      direction = 'right'                  if direction:                      player.move(direction)                  if pressed_keys[pygame.k_j]:                      if player.cooling_time == 0:                          fire_sound.play()                          bullet_group.add(player.shot())                          player.cooling_time = 20              elif idx == 1:                  if pressed_keys[pygame.k_w]:                      direction = 'up'                  elif pressed_keys[pygame.k_s]:                      direction = 'down'                  elif pressed_keys[pygame.k_a]:                      direction = 'left'                  elif pressed_keys[pygame.k_d]:                      direction = 'right'                  if direction:                      player.move(direction)                  if pressed_keys[pygame.k_space]:                      if player.cooling_time == 0:                          fire_sound.play()                          bullet_group.add(player.shot())                          player.cooling_time = 20              if player.cooling_time > 0:                  player.cooling_time -= 1          if (score_1 + score_2) <500:              background = bg_1          elif (score_1 + score_2) <1500:              background = bg_2          else:              background = bg_3          # --向下移动背景图实现飞船向上移动的效果          screen.blit(background, (0, -background.get_rect().height + bg_move_dis))          screen.blit(background, (0, bg_move_dis))          bg_move_dis = (bg_move_dis + 2) % background.get_rect().height          # --生成小行星          if asteroid_ticks == 0:              asteroid_ticks = 90              asteroid_group.add(asteroid(cfg))          else:              asteroid_ticks -= 1          # --画飞船          for player in player_group:              if pygame.sprite.spritecollide(player, asteroid_group, true, none):                  player.explode_step = 1                  explosion_sound.play()              elif player.explode_step > 0:                  if player.explode_step > 3:                      player_group.remove(player)                      if len(player_group) == 0:                          return                  else:                      player.explode(screen)              else:                  player.draw(screen)          # --画子弹          for bullet in bullet_group:              bullet.move()              if pygame.sprite.spritecollide(bullet, asteroid_group, true, none):                  bullet_group.remove(bullet)                  if bullet.player_idx == 1:                      score_1 += 1                  else:                      score_2 += 1              else:                  bullet.draw(screen)          # --画小行星          for asteroid in asteroid_group:              asteroid.move()              asteroid.rotate()              asteroid.draw(screen)          # --显示分数          score_1_text = '玩家一得分: %s' % score_1          score_2_text = '玩家二得分: %s' % score_2          text_1 = font.render(score_1_text, true, (0, 0, 255))          text_2 = font.render(score_2_text, true, (255, 0, 0))          screen.blit(text_1, (2, 5))          screen.blit(text_2, (2, 35))          # --屏幕刷新          pygame.display.update()          clock.tick(60)      '''主函数'''  def main():      pygame.init()      pygame.font.init()      pygame.mixer.init()      screen = pygame.display.set_mode(cfg.screensize)      pygame.display.set_caption('简易版——飞机大战 ')      num_player = startinterface(screen, cfg)      if num_player == 1:          while true:              gaminginterface(num_player=1, screen=screen)              endinterface(screen, cfg)      else:          while true:              gaminginterface(num_player=2, screen=screen)              endinterface(screen, cfg)      '''run'''  if __name__ == '__main__':      main()

2)效果展示

Python Pygame实战之五款童年经典游戏合集

以上就是python pygame实战之五款童年经典游戏合集的详细内容,更多关于python pygame游戏的资料请关注<编程笔记>其它相关文章!

需要了解更多python教程分享Python Pygame实战之五款童年经典游戏合集,都可以关注python教程分享栏目&#8212;编程笔记


推荐阅读
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
author-avatar
手机用户2502889621
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有