国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python超簡單小游戲代碼,python最簡單游戲代碼

這篇具有很好參考價值的文章主要介紹了python超簡單小游戲代碼,python最簡單游戲代碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這篇文章主要介紹了python游戲編程入門游戲代碼,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲,下面讓小編帶著大家一起了解一下。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

Source code download: 本文相關(guān)源碼

大家好,小編來為大家解答以下問題,python超簡單小游戲代碼,python簡單小游戲代碼,今天讓我們一起來看看吧!

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

大家好,我是辣條。

今天給大家?guī)?0個py小游戲,一定要收藏!

目錄

有手就行

1、吃金幣

2、打乒乓

3、滑雪

4、并夕夕版飛機大戰(zhàn)

5、打地鼠

簡簡單單

6、小恐龍

7、消消樂

8、俄羅斯方塊

9、貪吃蛇

普普通通

10、24點小游戲

11、平衡木

12、外星人入侵

13、貪心鳥

14、井字棋888‘’

有點困難

15、炸彈人

16、保衛(wèi)森林

17、五子棋

18、吃豆豆

19、坦克大戰(zhàn)

20、超級瑪麗

21、水果忍者

極度困難

22、飛機大戰(zhàn)

23、2048

24、推箱子

25、塔防

26、植物大戰(zhàn)僵尸

27、掃雷

終極挑戰(zhàn)?

28、拼圖

?29、走迷宮

30、最強游戲


有手就行
1、吃金幣

【有手就行系列不介紹玩法了+附源碼】

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:
?

import os
import cfg
import sys
import pygame
import random
from modules import *


'''游戲初始化'''
def initGame():
? ? # 初始化pygame, 設(shè)置展示窗口
? ? pygame.init()
? ? screen = pygame.display.set_mode(cfg.SCREENSIZE)
? ? pygame.display.set_caption('catch coins —— 九歌')
? ? # 加載必要的游戲素材
? ? game_images = {}
? ? for key, value in cfg.IMAGE_PATHS.items():
? ? ? ? if isinstance(value, list):
? ? ? ? ? ? images = []
? ? ? ? ? ? for item in value: images.append(pygame.image.load(item))
? ? ? ? ? ? game_images[key] = images
? ? ? ? else:
? ? ? ? ? ? game_images[key] = pygame.image.load(value)
? ? game_sounds = {}
? ? for key, value in cfg.AUDIO_PATHS.items():
? ? ? ? if key == 'bgm': continue
? ? ? ? game_sounds[key] = pygame.mixer.Sound(value)
? ? # 返回初始化數(shù)據(jù)
? ? return screen, game_images, game_sounds


'''主函數(shù)'''
def main():
? ? # 初始化
? ? screen, game_images, game_sounds = initGame()
? ? # 播放背景音樂
? ? pygame.mixer.music.load(cfg.AUDIO_PATHS['bgm'])
? ? pygame.mixer.music.play(-1, 0.0)
? ? # 字體加載
? ? font = pygame.font.Font(cfg.FONT_PATH, 40)
? ? # 定義hero
? ? hero = Hero(game_images['hero'], position=(375, 520))
? ? # 定義食物組
? ? food_sprites_group = pygame.sprite.Group()
? ? generate_food_freq = random.randint(10, 20)
? ? generate_food_count = 0
? ? # 當(dāng)前分?jǐn)?shù)/歷史最高分
? ? score = 0
? ? highest_score = 0 if not os.path.exists(cfg.HIGHEST_SCORE_RECORD_FILEPATH) else int(open(cfg.HIGHEST_SCORE_RECORD_FILEPATH).read())
? ? # 游戲主循環(huán)
? ? clock = pygame.time.Clock()
? ? while True:
? ? ? ? # --填充背景
? ? ? ? screen.fill(0)
? ? ? ? screen.blit(game_images['background'], (0, 0))
? ? ? ? # --倒計時信息
? ? ? ? countdown_text = 'Count down: ' + str((90000 - pygame.time.get_ticks()) // 60000) + ":" + str((90000 - pygame.time.get_ticks()) // 1000 % 60).zfill(2)
? ? ? ? countdown_text = font.render(countdown_text, True, (0, 0, 0))
? ? ? ? countdown_rect = countdown_text.get_rect()
? ? ? ? countdown_rect.topright = [cfg.SCREENSIZE[0]-30, 5]
? ? ? ? screen.blit(countdown_text, countdown_rect)
? ? ? ? # --按鍵檢測
? ? ? ? for event in pygame.event.get():
? ? ? ? ? ? if event.type == pygame.QUIT:
? ? ? ? ? ? ? ? pygame.quit()
? ? ? ? ? ? ? ? sys.exit()
? ? ? ? key_pressed = pygame.key.get_pressed()
? ? ? ? if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:
? ? ? ? ? ? hero.move(cfg.SCREENSIZE, 'left')
? ? ? ? if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:
? ? ? ? ? ? hero.move(cfg.SCREENSIZE, 'right')
? ? ? ? # --隨機生成食物
? ? ? ? generate_food_count += 1
? ? ? ? if generate_food_count > generate_food_freq:
? ? ? ? ? ? generate_food_freq = random.randint(10, 20)
? ? ? ? ? ? generate_food_count = 0
? ? ? ? ? ? food = Food(game_images, random.choice(['gold',] * 10 + ['apple']), cfg.SCREENSIZE)
? ? ? ? ? ? food_sprites_group.add(food)
? ? ? ? # --更新食物
? ? ? ? for food in food_sprites_group:
? ? ? ? ? ? if food.update(): food_sprites_group.remove(food)
? ? ? ? # --碰撞檢測
? ? ? ? for food in food_sprites_group:
? ? ? ? ? ? if pygame.sprite.collide_mask(food, hero):
? ? ? ? ? ? ? ? game_sounds['get'].play()
? ? ? ? ? ? ? ? food_sprites_group.remove(food)
? ? ? ? ? ? ? ? score += food.score
? ? ? ? ? ? ? ? if score > highest_score: highest_score = score
? ? ? ? # --畫hero
? ? ? ? hero.draw(screen)
? ? ? ? # --畫食物
? ? ? ? food_sprites_group.draw(screen)
? ? ? ? # --顯示得分
? ? ? ? score_text = f'Score: {score}, Highest: {highest_score}'
? ? ? ? score_text = font.render(score_text, True, (0, 0, 0))
? ? ? ? score_rect = score_text.get_rect()
? ? ? ? score_rect.topleft = [5, 5]
? ? ? ? screen.blit(score_text, score_rect)
? ? ? ? # --判斷游戲是否結(jié)束
? ? ? ? if pygame.time.get_ticks() >= 90000:
? ? ? ? ? ? break
? ? ? ? # --更新屏幕
? ? ? ? pygame.display.flip()
? ? ? ? clock.tick(cfg.FPS)
? ? # 游戲結(jié)束, 記錄最高分并顯示游戲結(jié)束畫面
? ? fp = open(cfg.HIGHEST_SCORE_RECORD_FILEPATH, 'w')
? ? fp.write(str(highest_score))
? ? fp.close()
? ? return showEndGameInterface(screen, cfg, score, highest_score)


'''run'''
if __name__ == '__main__':
? ? while main():
? ? ? ? pass
2、打乒乓

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import sys
import cfg
import pygame
from modules import *


'''定義按鈕'''
def Button(screen, position, text, button_size=(200, 50)):
    left, top = position
    bwidth, bheight = button_size
    pygame.draw.line(screen, (150, 150, 150), (left, top), (left+bwidth, top), 5)
    pygame.draw.line(screen, (150, 150, 150), (left, top-2), (left, top+bheight), 5)
    pygame.draw.line(screen, (50, 50, 50), (left, top+bheight), (left+bwidth, top+bheight), 5)
    pygame.draw.line(screen, (50, 50, 50), (left+bwidth, top+bheight), (left+bwidth, top), 5)
    pygame.draw.rect(screen, (100, 100, 100), (left, top, bwidth, bheight))
    font = pygame.font.Font(cfg.FONTPATH, 30)
    text_render = font.render(text, 1, (255, 235, 205))
    return screen.blit(text_render, (left+50, top+10))


'''
Function:
    開始界面
Input:
    --screen: 游戲界面
Return:
    --game_mode: 1(單人模式)/2(雙人模式)
'''
def startInterface(screen):
    clock = pygame.time.Clock()
    while True:
        screen.fill((41, 36, 33))
        button_1 = Button(screen, (150, 175), '1 Player')
        button_2 = Button(screen, (150, 275), '2 Player')
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.MOUSEBUTTONDOWN:
                if button_1.collidepoint(pygame.mouse.get_pos()):
                    return 1
                elif button_2.collidepoint(pygame.mouse.get_pos()):
                    return 2
        clock.tick(10)
        pygame.display.update()


'''結(jié)束界面'''
def endInterface(screen, score_left, score_right):
    clock = pygame.time.Clock()
    font1 = pygame.font.Font(cfg.FONTPATH, 30)
    font2 = pygame.font.Font(cfg.FONTPATH, 20)
    msg = 'Player on left won!' if score_left > score_right else 'Player on right won!'
    texts = [font1.render(msg, True, cfg.WHITE),
            font2.render('Press ESCAPE to quit.', True, cfg.WHITE),
            font2.render('Press ENTER to continue or play again.', True, cfg.WHITE)]
    positions = [[120, 200], [155, 270], [80, 300]]
    while True:
        screen.fill((41, 36, 33))
        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_RETURN:
                    return
                elif event.key == pygame.K_ESCAPE:
                    sys.exit()
                    pygame.quit()
        for text, pos in zip(texts, positions):
            screen.blit(text, pos)
        clock.tick(10)
        pygame.display.update()


'''運行游戲Demo'''
def runDemo(screen):
    # 加載游戲素材
    hit_sound = pygame.mixer.Sound(cfg.HITSOUNDPATH)
    goal_sound = pygame.mixer.Sound(cfg.GOALSOUNDPATH)
    pygame.mixer.music.load(cfg.BGMPATH)
    pygame.mixer.music.play(-1, 0.0)
    font = pygame.font.Font(cfg.FONTPATH, 50)
    # 開始界面
    game_mode = startInterface(screen)
    # 游戲主循環(huán)
    # --左邊球拍(ws控制, 僅雙人模式時可控制)
    score_left = 0
    racket_left = Racket(cfg.RACKETPICPATH, 'LEFT', cfg)
    # --右邊球拍(↑↓控制)
    score_right = 0
    racket_right = Racket(cfg.RACKETPICPATH, 'RIGHT', cfg)
    # --球
    ball = Ball(cfg.BALLPICPATH, cfg)
    clock = pygame.time.Clock()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit(-1)
        screen.fill((41, 36, 33))
        # 玩家操作
        pressed_keys = pygame.key.get_pressed()
        if pressed_keys[pygame.K_UP]:
            racket_right.move('UP')
        elif pressed_keys[pygame.K_DOWN]:
            racket_right.move('DOWN')
        if game_mode == 2:
            if pressed_keys[pygame.K_w]:
                racket_left.move('UP')
            elif pressed_keys[pygame.K_s]:
                racket_left.move('DOWN')
        else:
            racket_left.automove(ball)
        # 球運動
        scores = ball.move(ball, racket_left, racket_right, hit_sound, goal_sound)
        score_left += scores[0]
        score_right += scores[1]
        # 顯示
        # --分隔線
        pygame.draw.rect(screen, cfg.WHITE, (247, 0, 6, 500))
        # --球
        ball.draw(screen)
        # --拍
        racket_left.draw(screen)
        racket_right.draw(screen)
        # --得分
        screen.blit(font.render(str(score_left), False, cfg.WHITE), (150, 10))
        screen.blit(font.render(str(score_right), False, cfg.WHITE), (300, 10))
        if score_left == 11 or score_right == 11:
            return score_left, score_right
        clock.tick(100)
        pygame.display.update()


'''主函數(shù)'''
def main():
    # 初始化
    pygame.init()
    pygame.mixer.init()
    screen = pygame.display.set_mode((cfg.WIDTH, cfg.HEIGHT))
    pygame.display.set_caption('pingpong —— 九歌')
    # 開始游戲
    while True:
        score_left, score_right = runDemo(screen)
        endInterface(screen, score_left, score_right)


'''run'''
if __name__ == '__main__':
    main()
3、滑雪

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


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]
    '''改變滑雪者的朝向. 負(fù)數(shù)為向左,正數(shù)為向右,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)
    '''設(shè)置為摔倒?fàn)顟B(tài)'''
    def setFall(self):
        self.image = pygame.image.load(cfg.SKIER_IMAGE_PATHS[-1])
    '''設(shè)置為站立狀態(tài)'''
    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


'''創(chuàng)建障礙物'''
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()


'''顯示分?jǐn)?shù)'''
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)


'''更新當(dāng)前幀的游戲畫面'''
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)
    # 設(shè)置屏幕
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('滑雪游戲 —— 九歌')
    # 游戲開始界面
    ShowStartInterface(screen, cfg.SCREENSIZE)
    # 實例化游戲精靈
    # --滑雪者
    skier = SkierClass()
    # --創(chuàng)建障礙物
    obstacles0 = createObstacles(20, 29)
    obstacles1 = createObstacles(10, 19)
    obstaclesflag = 0
    obstacles = AddObstacles(obstacles0, obstacles1)
    # 游戲clock
    clock = pygame.time.Clock()
    # 記錄滑雪的距離
    distance = 0
    # 記錄當(dāng)前的分?jǐn)?shù)
    score = 0
    # 記錄當(dāng)前的速度
    speed = [0, 6]
    # 游戲主循環(huán)
    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)
        # --更新當(dāng)前游戲幀的數(shù)據(jù)
        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();
4、并夕夕版飛機大戰(zhàn)

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


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()
    # 產(chǎn)生小行星的時間間隔
    asteroid_ticks = 90
    for i in range(num_player):
        player_group.add(Ship(i+1, cfg))
    clock = pygame.time.Clock()
    # 分?jǐn)?shù)
    score_1, score_2 = 0, 0
    # 游戲主循環(huán)
    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
        # --向下移動背景圖實現(xiàn)飛船向上移動的效果
        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)
        # --顯示分?jǐn)?shù)
        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)


'''主函數(shù)'''
def main():
    pygame.init()
    pygame.font.init()
    pygame.mixer.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('飛機大戰(zhàn) —— 九歌')
    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()
5、打地鼠

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import cfg
import sys
import pygame
import random
from modules import *


'''游戲初始化'''
def initGame():
    pygame.init()
    pygame.mixer.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('打地鼠 —— 九歌')
    return screen


'''主函數(shù)'''
def main():
    # 初始化
    screen = initGame()
    # 加載背景音樂和其他音效
    pygame.mixer.music.load(cfg.BGM_PATH)
    pygame.mixer.music.play(-1)
    audios = {
        'count_down': pygame.mixer.Sound(cfg.COUNT_DOWN_SOUND_PATH),
        'hammering': pygame.mixer.Sound(cfg.HAMMERING_SOUND_PATH)
    }
    # 加載字體
    font = pygame.font.Font(cfg.FONT_PATH, 40)
    # 加載背景圖片
    bg_img = pygame.image.load(cfg.GAME_BG_IMAGEPATH)
    # 開始界面
    startInterface(screen, cfg.GAME_BEGIN_IMAGEPATHS)
    # 地鼠改變位置的計時
    hole_pos = random.choice(cfg.HOLE_POSITIONS)
    change_hole_event = pygame.USEREVENT
    pygame.time.set_timer(change_hole_event, 800)
    # 地鼠
    mole = Mole(cfg.MOLE_IMAGEPATHS, hole_pos)
    # 錘子
    hammer = Hammer(cfg.HAMMER_IMAGEPATHS, (500, 250))
    # 時鐘
    clock = pygame.time.Clock()
    # 分?jǐn)?shù)
    your_score = 0
    flag = False
    # 初始時間
    init_time = pygame.time.get_ticks()
    # 游戲主循環(huán)
    while True:
        # --游戲時間為60s
        time_remain = round((61000 - (pygame.time.get_ticks() - init_time)) / 1000.)
        # --游戲時間減少, 地鼠變位置速度變快
        if time_remain == 40 and not flag:
            hole_pos = random.choice(cfg.HOLE_POSITIONS)
            mole.reset()
            mole.setPosition(hole_pos)
            pygame.time.set_timer(change_hole_event, 650)
            flag = True
        elif time_remain == 20 and flag:
            hole_pos = random.choice(cfg.HOLE_POSITIONS)
            mole.reset()
            mole.setPosition(hole_pos)
            pygame.time.set_timer(change_hole_event, 500)
            flag = False
        # --倒計時音效
        if time_remain == 10:
            audios['count_down'].play()
        # --游戲結(jié)束
        if time_remain < 0: break
        count_down_text = font.render('Time: '+str(time_remain), True, cfg.WHITE)
        # --按鍵檢測
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.MOUSEMOTION:
                hammer.setPosition(pygame.mouse.get_pos())
            elif event.type == pygame.MOUSEBUTTONDOWN:
                if event.button == 1:
                    hammer.setHammering()
            elif event.type == change_hole_event:
                hole_pos = random.choice(cfg.HOLE_POSITIONS)
                mole.reset()
                mole.setPosition(hole_pos)
        # --碰撞檢測
        if hammer.is_hammering and not mole.is_hammer:
            is_hammer = pygame.sprite.collide_mask(hammer, mole)
            if is_hammer:
                audios['hammering'].play()
                mole.setBeHammered()
                your_score += 10
        # --分?jǐn)?shù)
        your_score_text = font.render('Score: '+str(your_score), True, cfg.BROWN)
        # --綁定必要的游戲元素到屏幕(注意順序)
        screen.blit(bg_img, (0, 0))
        screen.blit(count_down_text, (875, 8))
        screen.blit(your_score_text, (800, 430))
        mole.draw(screen)
        hammer.draw(screen)
        # --更新
        pygame.display.flip()
        clock.tick(60)
    # 讀取最佳分?jǐn)?shù)(try塊避免第一次游戲無.rec文件)
    try:
        best_score = int(open(cfg.RECORD_PATH).read())
    except:
        best_score = 0
    # 若當(dāng)前分?jǐn)?shù)大于最佳分?jǐn)?shù)則更新最佳分?jǐn)?shù)
    if your_score > best_score:
        f = open(cfg.RECORD_PATH, 'w')
        f.write(str(your_score))
        f.close()
    # 結(jié)束界面
    score_info = {'your_score': your_score, 'best_score': best_score}
    is_restart = endInterface(screen, cfg.GAME_END_IMAGEPATH, cfg.GAME_AGAIN_IMAGEPATHS, score_info, cfg.FONT_PATH, [cfg.WHITE, cfg.RED], cfg.SCREENSIZE)
    return is_restart


'''run'''
if __name__ == '__main__':
    while True:
        is_restart = main()
        if not is_restart:
            break
簡簡單單

【簡單介紹一下玩法+附源碼】

6、小恐龍

玩法:上下控制起跳躲避

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import cfg
import sys
import random
import pygame
from modules import *


'''main'''
def main(highest_score):
    # 游戲初始化
    pygame.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('九歌')
    # 導(dǎo)入所有聲音文件
    sounds = {}
    for key, value in cfg.AUDIO_PATHS.items():
        sounds[key] = pygame.mixer.Sound(value)
    # 游戲開始界面
    GameStartInterface(screen, sounds, cfg)
    # 定義一些游戲中必要的元素和變量
    score = 0
    score_board = Scoreboard(cfg.IMAGE_PATHS['numbers'], position=(534, 15), bg_color=cfg.BACKGROUND_COLOR)
    highest_score = highest_score
    highest_score_board = Scoreboard(cfg.IMAGE_PATHS['numbers'], position=(435, 15), bg_color=cfg.BACKGROUND_COLOR, is_highest=True)
    dino = Dinosaur(cfg.IMAGE_PATHS['dino'])
    ground = Ground(cfg.IMAGE_PATHS['ground'], position=(0, cfg.SCREENSIZE[1]))
    cloud_sprites_group = pygame.sprite.Group()
    cactus_sprites_group = pygame.sprite.Group()
    ptera_sprites_group = pygame.sprite.Group()
    add_obstacle_timer = 0
    score_timer = 0
    # 游戲主循環(huán)
    clock = pygame.time.Clock()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE or event.key == pygame.K_UP:
                    dino.jump(sounds)
                elif event.key == pygame.K_DOWN:
                    dino.duck()
            elif event.type == pygame.KEYUP and event.key == pygame.K_DOWN:
                dino.unduck()
        screen.fill(cfg.BACKGROUND_COLOR)
        # --隨機添加云
        if len(cloud_sprites_group) < 5 and random.randrange(0, 300) == 10:
            cloud_sprites_group.add(Cloud(cfg.IMAGE_PATHS['cloud'], position=(cfg.SCREENSIZE[0], random.randrange(30, 75))))
        # --隨機添加仙人掌/飛龍
        add_obstacle_timer += 1
        if add_obstacle_timer > random.randrange(50, 150):
            add_obstacle_timer = 0
            random_value = random.randrange(0, 10)
            if random_value >= 5 and random_value <= 7:
                cactus_sprites_group.add(Cactus(cfg.IMAGE_PATHS['cacti']))
            else:
                position_ys = [cfg.SCREENSIZE[1]*0.82, cfg.SCREENSIZE[1]*0.75, cfg.SCREENSIZE[1]*0.60, cfg.SCREENSIZE[1]*0.20]
                ptera_sprites_group.add(Ptera(cfg.IMAGE_PATHS['ptera'], position=(600, random.choice(position_ys))))
        # --更新游戲元素
        dino.update()
        ground.update()
        cloud_sprites_group.update()
        cactus_sprites_group.update()
        ptera_sprites_group.update()
        score_timer += 1
        if score_timer > (cfg.FPS//12):
            score_timer = 0
            score += 1
            score = min(score, 99999)
            if score > highest_score:
                highest_score = score
            if score % 100 == 0:
                sounds['point'].play()
            if score % 1000 == 0:
                ground.speed -= 1
                for item in cloud_sprites_group:
                    item.speed -= 1
                for item in cactus_sprites_group:
                    item.speed -= 1
                for item in ptera_sprites_group:
                    item.speed -= 1
        # --碰撞檢測
        for item in cactus_sprites_group:
            if pygame.sprite.collide_mask(dino, item):
                dino.die(sounds)
        for item in ptera_sprites_group:
            if pygame.sprite.collide_mask(dino, item):
                dino.die(sounds)
        # --將游戲元素畫到屏幕上
        dino.draw(screen)
        ground.draw(screen)
        cloud_sprites_group.draw(screen)
        cactus_sprites_group.draw(screen)
        ptera_sprites_group.draw(screen)
        score_board.set(score)
        highest_score_board.set(highest_score)
        score_board.draw(screen)
        highest_score_board.draw(screen)
        # --更新屏幕
        pygame.display.update()
        clock.tick(cfg.FPS)
        # --游戲是否結(jié)束
        if dino.is_dead:
            break
    # 游戲結(jié)束界面
    return GameEndInterface(screen, cfg), highest_score


'''run'''
if __name__ == '__main__':
    highest_score = 0
    while True:
        flag, highest_score = main(highest_score)
        if not flag: break
7、消消樂

玩法:三個相連就能消除

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import os
import sys
import cfg
import pygame
from modules import *


'''游戲主程序'''
def main():
    pygame.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('Gemgem —— 九歌')
    # 加載背景音樂
    pygame.mixer.init()
    pygame.mixer.music.load(os.path.join(cfg.ROOTDIR, "resources/audios/bg.mp3"))
    pygame.mixer.music.set_volume(0.6)
    pygame.mixer.music.play(-1)
    # 加載音效
    sounds = {}
    sounds['mismatch'] = pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/badswap.wav'))
    sounds['match'] = []
    for i in range(6):
        sounds['match'].append(pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/match%s.wav' % i)))
    # 加載字體
    font = pygame.font.Font(os.path.join(cfg.ROOTDIR, 'resources/font/font.TTF'), 25)
    # 圖片加載
    gem_imgs = []
    for i in range(1, 8):
        gem_imgs.append(os.path.join(cfg.ROOTDIR, 'resources/images/gem%s.png' % i))
    # 主循環(huán)
    game = gemGame(screen, sounds, font, gem_imgs, cfg)
    while True:
        score = game.start()
        flag = False
        # 一輪游戲結(jié)束后玩家選擇重玩或者退出
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE):
                    pygame.quit()
                    sys.exit()
                elif event.type == pygame.KEYUP and event.key == pygame.K_r:
                    flag = True
            if flag:
                break
            screen.fill((135, 206, 235))
            text0 = 'Final score: %s' % score
            text1 = 'Press <R> to restart the game.'
            text2 = 'Press <Esc> to quit the game.'
            y = 150
            for idx, text in enumerate([text0, text1, text2]):
                text_render = font.render(text, 1, (85, 65, 0))
                rect = text_render.get_rect()
                if idx == 0:
                    rect.left, rect.top = (212, y)
                elif idx == 1:
                    rect.left, rect.top = (122.5, y)
                else:
                    rect.left, rect.top = (126.5, y)
                y += 100
                screen.blit(text_render, rect)
            pygame.display.update()
        game.reset()


'''run'''
if __name__ == '__main__':
    main()
8、俄羅斯方塊

玩法:童年經(jīng)典,普通模式?jīng)]啥意思,小時候我們都是玩加速的不會c語言直接學(xué)pythonpython工程師證書。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import os
import sys
import random
from modules import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *


'''定義俄羅斯方塊游戲類'''
class TetrisGame(QMainWindow):
    def __init__(self, parent=None):
        super(TetrisGame, self).__init__(parent)
        # 是否暫停ing
        self.is_paused = False
        # 是否開始ing
        self.is_started = False
        self.initUI()
    '''界面初始化'''
    def initUI(self):
        # icon
        self.setWindowIcon(QIcon(os.path.join(os.getcwd(), 'resources/icon.jpg')))
        # 塊大小
        self.grid_size = 22
        # 游戲幀率
        self.fps = 200
        self.timer = QBasicTimer()
        # 焦點
        self.setFocusPolicy(Qt.StrongFocus)
        # 水平布局
        layout_horizontal = QHBoxLayout()
        self.inner_board = InnerBoard()
        self.external_board = ExternalBoard(self, self.grid_size, self.inner_board)
        layout_horizontal.addWidget(self.external_board)
        self.side_panel = SidePanel(self, self.grid_size, self.inner_board)
        layout_horizontal.addWidget(self.side_panel)
        self.status_bar = self.statusBar()
        self.external_board.score_signal[str].connect(self.status_bar.showMessage)
        self.start()
        self.center()
        self.setWindowTitle('Tetris —— 九歌')
        self.show()
        self.setFixedSize(self.external_board.width() + self.side_panel.width(), self.side_panel.height() + self.status_bar.height())
    '''游戲界面移動到屏幕中間'''
    def center(self):
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2)
    '''更新界面'''
    def updateWindow(self):
        self.external_board.updateData()
        self.side_panel.updateData()
        self.update()
    '''開始'''
    def start(self):
        if self.is_started:
            return
        self.is_started = True
        self.inner_board.createNewTetris()
        self.timer.start(self.fps, self)
    '''暫停/不暫停'''
    def pause(self):
        if not self.is_started:
            return
        self.is_paused = not self.is_paused
        if self.is_paused:
            self.timer.stop()
            self.external_board.score_signal.emit('Paused')
        else:
            self.timer.start(self.fps, self)
        self.updateWindow()
    '''計時器事件'''
    def timerEvent(self, event):
        if event.timerId() == self.timer.timerId():
            removed_lines = self.inner_board.moveDown()
            self.external_board.score += removed_lines
            self.updateWindow()
        else:
            super(TetrisGame, self).timerEvent(event)
    '''按鍵事件'''
    def keyPressEvent(self, event):
        if not self.is_started or self.inner_board.current_tetris == tetrisShape().shape_empty:
            super(TetrisGame, self).keyPressEvent(event)
            return
        key = event.key()
        # P鍵暫停
        if key == Qt.Key_P:
            self.pause()
            return
        if self.is_paused:
            return
        # 向左
        elif key == Qt.Key_Left:
            self.inner_board.moveLeft()
        # 向右
        elif key == Qt.Key_Right:
            self.inner_board.moveRight()
        # 旋轉(zhuǎn)
        elif key == Qt.Key_Up:
            self.inner_board.rotateAnticlockwise()
        # 快速墜落
        elif key == Qt.Key_Space:
            self.external_board.score += self.inner_board.dropDown()
        else:
            super(TetrisGame, self).keyPressEvent(event)
        self.updateWindow()


'''run'''
if __name__ == '__main__':
    app = QApplication([])
    tetris = TetrisGame()
    sys.exit(app.exec_())
9、貪吃蛇

玩法:童年經(jīng)典,普通魔術(shù)也沒啥意思,小時候玩的也是加速的。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import cfg
import sys
import pygame
from modules import *


'''主函數(shù)'''
def main(cfg):
    # 游戲初始化
    pygame.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('Greedy Snake —— 九歌')
    clock = pygame.time.Clock()
    # 播放背景音樂
    pygame.mixer.music.load(cfg.BGMPATH)
    pygame.mixer.music.play(-1)
    # 游戲主循環(huán)
    snake = Snake(cfg)
    apple = Apple(cfg, snake.coords)
    score = 0
    while True:
        screen.fill(cfg.BLACK)
        # --按鍵檢測
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key in [pygame.K_UP, pygame.K_DOWN, pygame.K_LEFT, pygame.K_RIGHT]:
                    snake.setDirection({pygame.K_UP: 'up', pygame.K_DOWN: 'down', pygame.K_LEFT: 'left', pygame.K_RIGHT: 'right'}[event.key])
        # --更新貪吃蛇和食物
        if snake.update(apple):
            apple = Apple(cfg, snake.coords)
            score += 1
        # --判斷游戲是否結(jié)束
        if snake.isgameover: break
        # --顯示游戲里必要的元素
        drawGameGrid(cfg, screen)
        snake.draw(screen)
        apple.draw(screen)
        showScore(cfg, score, screen)
        # --屏幕更新
        pygame.display.update()
        clock.tick(cfg.FPS)
    return endInterface(screen, cfg)


'''run'''
if __name__ == '__main__':
    while True:
        if not main(cfg):
            break
普普通通

【玩法詳細(xì)介紹+源碼】

CFG配置文件就在文末

10、24點小游戲

玩法:通過加減乘除操作,小學(xué)生都沒問題的。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import os
import sys
import pygame
from cfg import *
from modules import *
from fractions import Fraction


'''檢查控件是否被點擊'''
def checkClicked(group, mouse_pos, group_type='NUMBER'):
    selected = []
    # 數(shù)字卡片/運算符卡片
    if group_type == GROUPTYPES[0] or group_type == GROUPTYPES[1]:
        max_selected = 2 if group_type == GROUPTYPES[0] else 1
        num_selected = 0
        for each in group:
            num_selected += int(each.is_selected)
        for each in group:
            if each.rect.collidepoint(mouse_pos):
                if each.is_selected:
                    each.is_selected = not each.is_selected
                    num_selected -= 1
                    each.select_order = None
                else:
                    if num_selected < max_selected:
                        each.is_selected = not each.is_selected
                        num_selected += 1
                        each.select_order = str(num_selected)
            if each.is_selected:
                selected.append(each.attribute)
    # 按鈕卡片
    elif group_type == GROUPTYPES[2]:
        for each in group:
            if each.rect.collidepoint(mouse_pos):
                each.is_selected = True
                selected.append(each.attribute)
    # 拋出異常
    else:
        raise ValueError('checkClicked.group_type unsupport %s, expect %s, %s or %s...' % (group_type, *GROUPTYPES))
    return selected


'''獲取數(shù)字精靈組'''
def getNumberSpritesGroup(numbers):
    number_sprites_group = pygame.sprite.Group()
    for idx, number in enumerate(numbers):
        args = (*NUMBERCARD_POSITIONS[idx], str(number), NUMBERFONT, NUMBERFONT_COLORS, NUMBERCARD_COLORS, str(number))
        number_sprites_group.add(Card(*args))
    return number_sprites_group


'''獲取運算符精靈組'''
def getOperatorSpritesGroup(operators):
    operator_sprites_group = pygame.sprite.Group()
    for idx, operator in enumerate(operators):
        args = (*OPERATORCARD_POSITIONS[idx], str(operator), OPERATORFONT, OPREATORFONT_COLORS, OPERATORCARD_COLORS, str(operator))
        operator_sprites_group.add(Card(*args))
    return operator_sprites_group


'''獲取按鈕精靈組'''
def getButtonSpritesGroup(buttons):
    button_sprites_group = pygame.sprite.Group()
    for idx, button in enumerate(buttons):
        args = (*BUTTONCARD_POSITIONS[idx], str(button), BUTTONFONT, BUTTONFONT_COLORS, BUTTONCARD_COLORS, str(button))
        button_sprites_group.add(Button(*args))
    return button_sprites_group


'''計算'''
def calculate(number1, number2, operator):
    operator_map = {'+': '+', '-': '-', '×': '*', '÷': '/'}
    try:
        result = str(eval(number1+operator_map[operator]+number2))
        return result if '.' not in result else str(Fraction(number1+operator_map[operator]+number2))
    except:
        return None


'''在屏幕上顯示信息'''
def showInfo(text, screen):
    rect = pygame.Rect(200, 180, 400, 200)
    pygame.draw.rect(screen, PAPAYAWHIP, rect)
    font = pygame.font.Font(FONTPATH, 40)
    text_render = font.render(text, True, BLACK)
    font_size = font.size(text)
    screen.blit(text_render, (rect.x+(rect.width-font_size[0])/2, rect.y+(rect.height-font_size[1])/2))


'''主函數(shù)'''
def main():
    # 初始化, 導(dǎo)入必要的游戲素材
    pygame.init()
    pygame.mixer.init()
    screen = pygame.display.set_mode(SCREENSIZE)
    pygame.display.set_caption('24 point —— 九歌')
    win_sound = pygame.mixer.Sound(AUDIOWINPATH)
    lose_sound = pygame.mixer.Sound(AUDIOLOSEPATH)
    warn_sound = pygame.mixer.Sound(AUDIOWARNPATH)
    pygame.mixer.music.load(BGMPATH)
    pygame.mixer.music.play(-1, 0.0)
    # 24點游戲生成器
    game24_gen = game24Generator()
    game24_gen.generate()
    # 精靈組
    # --數(shù)字
    number_sprites_group = getNumberSpritesGroup(game24_gen.numbers_now)
    # --運算符
    operator_sprites_group = getOperatorSpritesGroup(OPREATORS)
    # --按鈕
    button_sprites_group = getButtonSpritesGroup(BUTTONS)
    # 游戲主循環(huán)
    clock = pygame.time.Clock()
    selected_numbers = []
    selected_operators = []
    selected_buttons = []
    is_win = False
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit(-1)
            elif event.type == pygame.MOUSEBUTTONUP:
                mouse_pos = pygame.mouse.get_pos()
                selected_numbers = checkClicked(number_sprites_group, mouse_pos, 'NUMBER')
                selected_operators = checkClicked(operator_sprites_group, mouse_pos, 'OPREATOR')
                selected_buttons = checkClicked(button_sprites_group, mouse_pos, 'BUTTON')
        screen.fill(AZURE)
        # 更新數(shù)字
        if len(selected_numbers) == 2 and len(selected_operators) == 1:
            noselected_numbers = []
            for each in number_sprites_group:
                if each.is_selected:
                    if each.select_order == '1':
                        selected_number1 = each.attribute
                    elif each.select_order == '2':
                        selected_number2 = each.attribute
                    else:
                        raise ValueError('Unknow select_order %s, expect 1 or 2...' % each.select_order)
                else:
                    noselected_numbers.append(each.attribute)
                each.is_selected = False
            for each in operator_sprites_group:
                each.is_selected = False
            result = calculate(selected_number1, selected_number2, *selected_operators)
            if result is not None:
                game24_gen.numbers_now = noselected_numbers + [result]
                is_win = game24_gen.check()
                if is_win:
                    win_sound.play()
                if not is_win and len(game24_gen.numbers_now) == 1:
                    lose_sound.play()
            else:
                warn_sound.play()
            selected_numbers = []
            selected_operators = []
            number_sprites_group = getNumberSpritesGroup(game24_gen.numbers_now)
        # 精靈都畫到screen上
        for each in number_sprites_group:
            each.draw(screen, pygame.mouse.get_pos())
        for each in operator_sprites_group:
            each.draw(screen, pygame.mouse.get_pos())
        for each in button_sprites_group:
            if selected_buttons and selected_buttons[0] in ['RESET', 'NEXT']:
                is_win = False
            if selected_buttons and each.attribute == selected_buttons[0]:
                each.is_selected = False
                number_sprites_group = each.do(game24_gen, getNumberSpritesGroup, number_sprites_group, button_sprites_group)
                selected_buttons = []
            each.draw(screen, pygame.mouse.get_pos())
        # 游戲勝利
        if is_win:
            showInfo('Congratulations', screen)
        # 游戲失敗
        if not is_win and len(game24_gen.numbers_now) == 1:
            showInfo('Game Over', screen)
        pygame.display.flip()
        clock.tick(30)


'''run'''
if __name__ == '__main__':
    main()
11、平衡木

玩法:也是小時候的經(jīng)典游戲,控制左右就行,到后面才有一點點難度。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import cfg
from modules import breakoutClone


'''主函數(shù)'''
def main():
    game = breakoutClone(cfg)
    game.run()


'''run'''
if __name__ == '__main__':
    main()

還有配置文件

12、外星人入侵

玩法:這讓我想起了魂斗羅那第幾關(guān)的boss,有點類似,不過魂斗羅那個難度肯定高點。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import os
import sys
import cfg
import random
import pygame
from modules import *


'''開始游戲'''
def startGame(screen):
    clock = pygame.time.Clock()
    # 加載字體
    font = pygame.font.SysFont('arial', 18)
    if not os.path.isfile('score'):
        f = open('score', 'w')
        f.write('0')
        f.close()
    with open('score', 'r') as f:
        highest_score = int(f.read().strip())
    # 敵方
    enemies_group = pygame.sprite.Group()
    for i in range(55):
        if i < 11:
            enemy = enemySprite('small', i, cfg.WHITE, cfg.WHITE)
        elif i < 33:
            enemy = enemySprite('medium', i, cfg.WHITE, cfg.WHITE)
        else:
            enemy = enemySprite('large', i, cfg.WHITE, cfg.WHITE)
        enemy.rect.x = 85 + (i % 11) * 50
        enemy.rect.y = 120 + (i // 11) * 45
        enemies_group.add(enemy)
    boomed_enemies_group = pygame.sprite.Group()
    en_bullets_group = pygame.sprite.Group()
    ufo = ufoSprite(color=cfg.RED)
    # 我方
    myaircraft = aircraftSprite(color=cfg.GREEN, bullet_color=cfg.WHITE)
    my_bullets_group = pygame.sprite.Group()
    # 用于控制敵方位置更新
    # --移動一行
    enemy_move_count = 24
    enemy_move_interval = 24
    enemy_move_flag = False
    # --改變移動方向(改變方向的同時集體下降一次)
    enemy_change_direction_count = 0
    enemy_change_direction_interval = 60
    enemy_need_down = False
    enemy_move_right = True
    enemy_need_move_row = 6
    enemy_max_row = 5
    # 用于控制敵方發(fā)射子彈
    enemy_shot_interval = 100
    enemy_shot_count = 0
    enemy_shot_flag = False
    # 游戲進(jìn)行中
    running = True
    is_win = False
    # 主循環(huán)
    while running:
        screen.fill(cfg.BLACK)
        for event in pygame.event.get():
            # --點右上角的X或者按Esc鍵退出游戲
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    pygame.quit()
                    sys.exit()
            # --射擊
            if event.type == pygame.MOUSEBUTTONDOWN:
                my_bullet = myaircraft.shot()
                if my_bullet:
                    my_bullets_group.add(my_bullet)
        # --我方子彈與敵方/UFO碰撞檢測
        for enemy in enemies_group:
            if pygame.sprite.spritecollide(enemy, my_bullets_group, True, None):
                boomed_enemies_group.add(enemy)
                enemies_group.remove(enemy)
                myaircraft.score += enemy.reward
        if pygame.sprite.spritecollide(ufo, my_bullets_group, True, None):
            ufo.is_dead = True
            myaircraft.score += ufo.reward
        # --更新并畫敵方
        # ----敵方子彈
        enemy_shot_count += 1
        if enemy_shot_count > enemy_shot_interval:
            enemy_shot_flag = True
            enemies_survive_list = [enemy.number for enemy in enemies_group]
            shot_number = random.choice(enemies_survive_list)
            enemy_shot_count = 0
        # ----敵方移動
        enemy_move_count += 1
        if enemy_move_count > enemy_move_interval:
            enemy_move_count = 0
            enemy_move_flag = True
            enemy_need_move_row -= 1
            if enemy_need_move_row == 0:
                enemy_need_move_row = enemy_max_row
            enemy_change_direction_count += 1
            if enemy_change_direction_count > enemy_change_direction_interval:
                enemy_change_direction_count = 1
                enemy_move_right = not enemy_move_right
                enemy_need_down = True
                # ----每次下降提高移動和射擊速度
                enemy_move_interval = max(15, enemy_move_interval-3)
                enemy_shot_interval = max(50, enemy_move_interval-10)
        # ----遍歷更新
        for enemy in enemies_group:
            if enemy_shot_flag:
                if enemy.number == shot_number:
                    en_bullet = enemy.shot()
                    en_bullets_group.add(en_bullet)
            if enemy_move_flag:
                if enemy.number in range((enemy_need_move_row-1)*11, enemy_need_move_row*11):
                    if enemy_move_right:
                        enemy.update('right', cfg.SCREENSIZE[1])
                    else:
                        enemy.update('left', cfg.SCREENSIZE[1])
            else:
                enemy.update(None, cfg.SCREENSIZE[1])
            if enemy_need_down:
                if enemy.update('down', cfg.SCREENSIZE[1]):
                    running = False
                    is_win = False
                enemy.change_count -= 1
            enemy.draw(screen)
        enemy_move_flag = False
        enemy_need_down = False
        enemy_shot_flag = False
        # ----敵方爆炸特效
        for boomed_enemy in boomed_enemies_group:
            if boomed_enemy.boom(screen):
                boomed_enemies_group.remove(boomed_enemy)
                del boomed_enemy
        # --敵方子彈與我方飛船碰撞檢測
        if not myaircraft.one_dead:
            if pygame.sprite.spritecollide(myaircraft, en_bullets_group, True, None):
                myaircraft.one_dead = True
        if myaircraft.one_dead:
            if myaircraft.boom(screen):
                myaircraft.resetBoom()
                myaircraft.num_life -= 1
                if myaircraft.num_life < 1:
                    running = False
                    is_win = False
        else:
            # ----更新飛船
            myaircraft.update(cfg.SCREENSIZE[0])
            # ----畫飛船
            myaircraft.draw(screen)
        if (not ufo.has_boomed) and (ufo.is_dead):
            if ufo.boom(screen):
                ufo.has_boomed = True
        else:
            # ----更新UFO
            ufo.update(cfg.SCREENSIZE[0])
            # ----畫UFO
            ufo.draw(screen)
        # --畫我方飛船子彈
        for bullet in my_bullets_group:
            if bullet.update():
                my_bullets_group.remove(bullet)
                del bullet
            else:
                bullet.draw(screen)
        # --畫敵方子彈
        for bullet in en_bullets_group:
            if bullet.update(cfg.SCREENSIZE[1]):
                en_bullets_group.remove(bullet)
                del bullet
            else:
                bullet.draw(screen)
        if myaircraft.score > highest_score:
            highest_score = myaircraft.score
        # --得分每增加2000我方飛船增加一條生命
        if (myaircraft.score % 2000 == 0) and (myaircraft.score > 0) and (myaircraft.score != myaircraft.old_score):
            myaircraft.old_score = myaircraft.score
            myaircraft.num_life = min(myaircraft.num_life + 1, myaircraft.max_num_life)
        # --敵人都死光了的話就勝利了
        if len(enemies_group) < 1:
            is_win = True
            running = False
        # --顯示文字
        # ----當(dāng)前得分
        showText(screen, 'SCORE: ', cfg.WHITE, font, 200, 8)
        showText(screen, str(myaircraft.score), cfg.WHITE, font, 200, 24)
        # ----敵人數(shù)量
        showText(screen, 'ENEMY: ', cfg.WHITE, font, 370, 8)
        showText(screen, str(len(enemies_group)), cfg.WHITE, font, 370, 24)
        # ----歷史最高分
        showText(screen, 'HIGHEST: ', cfg.WHITE, font, 540, 8)
        showText(screen, str(highest_score), cfg.WHITE, font, 540, 24)
        # ----FPS
        showText(screen, 'FPS: ' + str(int(clock.get_fps())), cfg.RED, font, 8, 8)
        # --顯示剩余生命值
        showLife(screen, myaircraft.num_life, cfg.GREEN)
        pygame.display.update()
        clock.tick(cfg.FPS)
    with open('score', 'w') as f:
        f.write(str(highest_score))
    return is_win


'''主函數(shù)'''
def main():
    # 初始化
    pygame.init()
    pygame.display.set_caption('外星人入侵 —— 九歌')
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.mixer.init()
    pygame.mixer.music.load(cfg.BGMPATH)
    pygame.mixer.music.set_volume(0.4)
    pygame.mixer.music.play(-1)
    while True:
        is_win = startGame(screen)
        endInterface(screen, cfg.BLACK, is_win)


'''run'''
if __name__ == '__main__':
    main()
13、貪心鳥

玩法:有點類似那個炸彈人,控制好走位問題不大。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

14、井字棋888‘’

玩法:我打賭大家在課堂上肯定玩過這個,想想當(dāng)年和同桌玩這個廢了好幾本本子。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享

from tkinter import *
import tkinter.messagebox as msg

root = Tk()
root.title('TIC-TAC-TOE---Project Gurukul')
# labels
Label(root, text="player1 : X", font="times 15").grid(row=0, column=1)
Label(root, text="player2 : O", font="times 15").grid(row=0, column=2)

digits = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# for player1 sign = X and for player2 sign= Y
mark = ''

# counting the no. of click
count = 0

panels = ["panel"] * 10


def win(panels, sign):
    return ((panels[1] == panels[2] == panels[3] == sign)
            or (panels[1] == panels[4] == panels[7] == sign)
            or (panels[1] == panels[5] == panels[9] == sign)
            or (panels[2] == panels[5] == panels[8] == sign)
            or (panels[3] == panels[6] == panels[9] == sign)
            or (panels[3] == panels[5] == panels[7] == sign)
            or (panels[4] == panels[5] == panels[6] == sign)
            or (panels[7] == panels[8] == panels[9] == sign))


def checker(digit):
    global count, mark, digits

    # Check which button clicked

    if digit == 1 and digit in digits:
        digits.remove(digit)
        ##player1 will play if the value of count is even and for odd player2 will play
        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button1.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 2 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button2.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 3 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button3.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 4 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button4.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 5 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button5.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 6 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button6.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 7 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button7.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 8 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button8.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 9 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button9.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    ###if count is greater then 8 then the match has been tied
    if (count > 8 and win(panels, 'X') == False and win(panels, 'O') == False):
        msg.showinfo("Result", "Match Tied")
        root.destroy()


####define buttons
button1 = Button(root, width=15, font=('Times 16 bold'), height=7, command=lambda: checker(1))
button1.grid(row=1, column=1)
button2 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(2))
button2.grid(row=1, column=2)
button3 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(3))
button3.grid(row=1, column=3)
button4 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(4))
button4.grid(row=2, column=1)
button5 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(5))
button5.grid(row=2, column=2)
button6 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(6))
button6.grid(row=2, column=3)
button7 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(7))
button7.grid(row=3, column=1)
button8 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(8))
button8.grid(row=3, column=2)
button9 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(9))
button9.grid(row=3, column=3)

root.mainloop()
有點困難

【玩法詳解+源碼獲取看底部】

15、炸彈人

玩法詳解:小時候的又一經(jīng)典游戲,小時候很多次都被自己炸死了。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

16、保衛(wèi)森林

玩法詳解:類似保衛(wèi)蘿卜,塔防類的小游戲,布局一定要合理,考慮射程屬性等等

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

17、五子棋

玩法詳解:小時候很愛玩,先出是有必勝方法的,后面才知道會有禁手這個規(guī)則,就比較復(fù)雜了,大家可以學(xué)一下先出必勝的開局,有浦月、流星、丘月、游星、慧星等等。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

18、吃豆豆

玩法詳解:考驗手速和操作和走位,我不喜歡玩這類跑來跑去的。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

19、坦克大戰(zhàn)

玩法詳解:這是經(jīng)典中的經(jīng)典,我喜歡玩雙人模式,后面有一些改版的模式,這是我覺得少數(shù)幾個現(xiàn)在玩都不過時的游戲。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

20、超級瑪麗

玩法詳解:經(jīng)典中的經(jīng)典,小時候玩覺得可難了,操作不必介紹了吧。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

21、水果忍者

玩法詳解:切水果風(fēng)靡一時的游戲,不知道為啥總是切刀炸掉,挺解壓的游戲。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

極度困難

【攻略大全+源碼獲取看底部】

22、飛機大戰(zhàn)

攻略大全:從這里開始的游戲,真正算的上有難度了,這個飛機大戰(zhàn)跟童年玩的比起來還是差一點。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

23、2048

攻略大全:也是曾經(jīng)風(fēng)靡一時的,越到后面越難,合成的時候一定要大數(shù)放在角落。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

24、推箱子

攻略大全:以前的那個手機上都有的游戲,越推到后面的關(guān)卡越難,我好像是玩到二十多關(guān)就玩不下去了。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

25、塔防

攻略大全:又是一種塔防類的游戲,有點意思,就是速度太快了,反應(yīng)不過來。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

26、植物大戰(zhàn)僵尸

攻略大全:最經(jīng)典的植物大戰(zhàn)僵尸,操作不用介紹了,不過可以自己玩玩看。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

27、掃雷

玩法詳解:掃雷還是挺有意思的,技能玩又考驗推理

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

終極挑戰(zhàn)?

【太難了。。源碼領(lǐng)取看文章底部】

28、拼圖

游戲體驗:三個終極挑戰(zhàn),能完成一個就算你厲害,拼圖是我最煩的,太難了。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

?29、走迷宮

游戲體驗:我反正沒走出去,大家能走出去嗎

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

30、最強游戲

游戲體驗:可太難控制了。。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能


行業(yè)資料:添加即可領(lǐng)取PPT模板、簡歷模板、行業(yè)經(jīng)典書籍PDF。
面試題庫:歷年經(jīng)典,熱乎的大廠面試真題,持續(xù)更新中,添加獲取。
學(xué)習(xí)資料:含Python、爬蟲、數(shù)據(jù)分析、算法等學(xué)習(xí)視頻和文檔,添加獲取
交流加群:大佬指點迷津,你的問題往往有人遇到過,技術(shù)互助交流。
?

其他源碼以及cfg配置文件等領(lǐng)取

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能文章來源地址http://www.zghlxwxcb.cn/news/detail-834550.html

大家好,小編來為大家解答以下問題,python超簡單小游戲代碼,python簡單小游戲代碼,今天讓我們一起來看看吧!

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

大家好,我是辣條。

今天給大家?guī)?0個py小游戲,一定要收藏!

目錄

有手就行

1、吃金幣

2、打乒乓

3、滑雪

4、并夕夕版飛機大戰(zhàn)

5、打地鼠

簡簡單單

6、小恐龍

7、消消樂

8、俄羅斯方塊

9、貪吃蛇

普普通通

10、24點小游戲

11、平衡木

12、外星人入侵

13、貪心鳥

14、井字棋888‘’

有點困難

15、炸彈人

16、保衛(wèi)森林

17、五子棋

18、吃豆豆

19、坦克大戰(zhàn)

20、超級瑪麗

21、水果忍者

極度困難

22、飛機大戰(zhàn)

23、2048

24、推箱子

25、塔防

26、植物大戰(zhàn)僵尸

27、掃雷

終極挑戰(zhàn)?

28、拼圖

?29、走迷宮

30、最強游戲


有手就行
1、吃金幣

【有手就行系列不介紹玩法了+附源碼】

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:
?

import os
import cfg
import sys
import pygame
import random
from modules import *


'''游戲初始化'''
def initGame():
? ? # 初始化pygame, 設(shè)置展示窗口
? ? pygame.init()
? ? screen = pygame.display.set_mode(cfg.SCREENSIZE)
? ? pygame.display.set_caption('catch coins —— 九歌')
? ? # 加載必要的游戲素材
? ? game_images = {}
? ? for key, value in cfg.IMAGE_PATHS.items():
? ? ? ? if isinstance(value, list):
? ? ? ? ? ? images = []
? ? ? ? ? ? for item in value: images.append(pygame.image.load(item))
? ? ? ? ? ? game_images[key] = images
? ? ? ? else:
? ? ? ? ? ? game_images[key] = pygame.image.load(value)
? ? game_sounds = {}
? ? for key, value in cfg.AUDIO_PATHS.items():
? ? ? ? if key == 'bgm': continue
? ? ? ? game_sounds[key] = pygame.mixer.Sound(value)
? ? # 返回初始化數(shù)據(jù)
? ? return screen, game_images, game_sounds


'''主函數(shù)'''
def main():
? ? # 初始化
? ? screen, game_images, game_sounds = initGame()
? ? # 播放背景音樂
? ? pygame.mixer.music.load(cfg.AUDIO_PATHS['bgm'])
? ? pygame.mixer.music.play(-1, 0.0)
? ? # 字體加載
? ? font = pygame.font.Font(cfg.FONT_PATH, 40)
? ? # 定義hero
? ? hero = Hero(game_images['hero'], position=(375, 520))
? ? # 定義食物組
? ? food_sprites_group = pygame.sprite.Group()
? ? generate_food_freq = random.randint(10, 20)
? ? generate_food_count = 0
? ? # 當(dāng)前分?jǐn)?shù)/歷史最高分
? ? score = 0
? ? highest_score = 0 if not os.path.exists(cfg.HIGHEST_SCORE_RECORD_FILEPATH) else int(open(cfg.HIGHEST_SCORE_RECORD_FILEPATH).read())
? ? # 游戲主循環(huán)
? ? clock = pygame.time.Clock()
? ? while True:
? ? ? ? # --填充背景
? ? ? ? screen.fill(0)
? ? ? ? screen.blit(game_images['background'], (0, 0))
? ? ? ? # --倒計時信息
? ? ? ? countdown_text = 'Count down: ' + str((90000 - pygame.time.get_ticks()) // 60000) + ":" + str((90000 - pygame.time.get_ticks()) // 1000 % 60).zfill(2)
? ? ? ? countdown_text = font.render(countdown_text, True, (0, 0, 0))
? ? ? ? countdown_rect = countdown_text.get_rect()
? ? ? ? countdown_rect.topright = [cfg.SCREENSIZE[0]-30, 5]
? ? ? ? screen.blit(countdown_text, countdown_rect)
? ? ? ? # --按鍵檢測
? ? ? ? for event in pygame.event.get():
? ? ? ? ? ? if event.type == pygame.QUIT:
? ? ? ? ? ? ? ? pygame.quit()
? ? ? ? ? ? ? ? sys.exit()
? ? ? ? key_pressed = pygame.key.get_pressed()
? ? ? ? if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:
? ? ? ? ? ? hero.move(cfg.SCREENSIZE, 'left')
? ? ? ? if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:
? ? ? ? ? ? hero.move(cfg.SCREENSIZE, 'right')
? ? ? ? # --隨機生成食物
? ? ? ? generate_food_count += 1
? ? ? ? if generate_food_count > generate_food_freq:
? ? ? ? ? ? generate_food_freq = random.randint(10, 20)
? ? ? ? ? ? generate_food_count = 0
? ? ? ? ? ? food = Food(game_images, random.choice(['gold',] * 10 + ['apple']), cfg.SCREENSIZE)
? ? ? ? ? ? food_sprites_group.add(food)
? ? ? ? # --更新食物
? ? ? ? for food in food_sprites_group:
? ? ? ? ? ? if food.update(): food_sprites_group.remove(food)
? ? ? ? # --碰撞檢測
? ? ? ? for food in food_sprites_group:
? ? ? ? ? ? if pygame.sprite.collide_mask(food, hero):
? ? ? ? ? ? ? ? game_sounds['get'].play()
? ? ? ? ? ? ? ? food_sprites_group.remove(food)
? ? ? ? ? ? ? ? score += food.score
? ? ? ? ? ? ? ? if score > highest_score: highest_score = score
? ? ? ? # --畫hero
? ? ? ? hero.draw(screen)
? ? ? ? # --畫食物
? ? ? ? food_sprites_group.draw(screen)
? ? ? ? # --顯示得分
? ? ? ? score_text = f'Score: {score}, Highest: {highest_score}'
? ? ? ? score_text = font.render(score_text, True, (0, 0, 0))
? ? ? ? score_rect = score_text.get_rect()
? ? ? ? score_rect.topleft = [5, 5]
? ? ? ? screen.blit(score_text, score_rect)
? ? ? ? # --判斷游戲是否結(jié)束
? ? ? ? if pygame.time.get_ticks() >= 90000:
? ? ? ? ? ? break
? ? ? ? # --更新屏幕
? ? ? ? pygame.display.flip()
? ? ? ? clock.tick(cfg.FPS)
? ? # 游戲結(jié)束, 記錄最高分并顯示游戲結(jié)束畫面
? ? fp = open(cfg.HIGHEST_SCORE_RECORD_FILEPATH, 'w')
? ? fp.write(str(highest_score))
? ? fp.close()
? ? return showEndGameInterface(screen, cfg, score, highest_score)


'''run'''
if __name__ == '__main__':
? ? while main():
? ? ? ? pass
2、打乒乓

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import sys
import cfg
import pygame
from modules import *


'''定義按鈕'''
def Button(screen, position, text, button_size=(200, 50)):
    left, top = position
    bwidth, bheight = button_size
    pygame.draw.line(screen, (150, 150, 150), (left, top), (left+bwidth, top), 5)
    pygame.draw.line(screen, (150, 150, 150), (left, top-2), (left, top+bheight), 5)
    pygame.draw.line(screen, (50, 50, 50), (left, top+bheight), (left+bwidth, top+bheight), 5)
    pygame.draw.line(screen, (50, 50, 50), (left+bwidth, top+bheight), (left+bwidth, top), 5)
    pygame.draw.rect(screen, (100, 100, 100), (left, top, bwidth, bheight))
    font = pygame.font.Font(cfg.FONTPATH, 30)
    text_render = font.render(text, 1, (255, 235, 205))
    return screen.blit(text_render, (left+50, top+10))


'''
Function:
    開始界面
Input:
    --screen: 游戲界面
Return:
    --game_mode: 1(單人模式)/2(雙人模式)
'''
def startInterface(screen):
    clock = pygame.time.Clock()
    while True:
        screen.fill((41, 36, 33))
        button_1 = Button(screen, (150, 175), '1 Player')
        button_2 = Button(screen, (150, 275), '2 Player')
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.MOUSEBUTTONDOWN:
                if button_1.collidepoint(pygame.mouse.get_pos()):
                    return 1
                elif button_2.collidepoint(pygame.mouse.get_pos()):
                    return 2
        clock.tick(10)
        pygame.display.update()


'''結(jié)束界面'''
def endInterface(screen, score_left, score_right):
    clock = pygame.time.Clock()
    font1 = pygame.font.Font(cfg.FONTPATH, 30)
    font2 = pygame.font.Font(cfg.FONTPATH, 20)
    msg = 'Player on left won!' if score_left > score_right else 'Player on right won!'
    texts = [font1.render(msg, True, cfg.WHITE),
            font2.render('Press ESCAPE to quit.', True, cfg.WHITE),
            font2.render('Press ENTER to continue or play again.', True, cfg.WHITE)]
    positions = [[120, 200], [155, 270], [80, 300]]
    while True:
        screen.fill((41, 36, 33))
        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_RETURN:
                    return
                elif event.key == pygame.K_ESCAPE:
                    sys.exit()
                    pygame.quit()
        for text, pos in zip(texts, positions):
            screen.blit(text, pos)
        clock.tick(10)
        pygame.display.update()


'''運行游戲Demo'''
def runDemo(screen):
    # 加載游戲素材
    hit_sound = pygame.mixer.Sound(cfg.HITSOUNDPATH)
    goal_sound = pygame.mixer.Sound(cfg.GOALSOUNDPATH)
    pygame.mixer.music.load(cfg.BGMPATH)
    pygame.mixer.music.play(-1, 0.0)
    font = pygame.font.Font(cfg.FONTPATH, 50)
    # 開始界面
    game_mode = startInterface(screen)
    # 游戲主循環(huán)
    # --左邊球拍(ws控制, 僅雙人模式時可控制)
    score_left = 0
    racket_left = Racket(cfg.RACKETPICPATH, 'LEFT', cfg)
    # --右邊球拍(↑↓控制)
    score_right = 0
    racket_right = Racket(cfg.RACKETPICPATH, 'RIGHT', cfg)
    # --球
    ball = Ball(cfg.BALLPICPATH, cfg)
    clock = pygame.time.Clock()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit(-1)
        screen.fill((41, 36, 33))
        # 玩家操作
        pressed_keys = pygame.key.get_pressed()
        if pressed_keys[pygame.K_UP]:
            racket_right.move('UP')
        elif pressed_keys[pygame.K_DOWN]:
            racket_right.move('DOWN')
        if game_mode == 2:
            if pressed_keys[pygame.K_w]:
                racket_left.move('UP')
            elif pressed_keys[pygame.K_s]:
                racket_left.move('DOWN')
        else:
            racket_left.automove(ball)
        # 球運動
        scores = ball.move(ball, racket_left, racket_right, hit_sound, goal_sound)
        score_left += scores[0]
        score_right += scores[1]
        # 顯示
        # --分隔線
        pygame.draw.rect(screen, cfg.WHITE, (247, 0, 6, 500))
        # --球
        ball.draw(screen)
        # --拍
        racket_left.draw(screen)
        racket_right.draw(screen)
        # --得分
        screen.blit(font.render(str(score_left), False, cfg.WHITE), (150, 10))
        screen.blit(font.render(str(score_right), False, cfg.WHITE), (300, 10))
        if score_left == 11 or score_right == 11:
            return score_left, score_right
        clock.tick(100)
        pygame.display.update()


'''主函數(shù)'''
def main():
    # 初始化
    pygame.init()
    pygame.mixer.init()
    screen = pygame.display.set_mode((cfg.WIDTH, cfg.HEIGHT))
    pygame.display.set_caption('pingpong —— 九歌')
    # 開始游戲
    while True:
        score_left, score_right = runDemo(screen)
        endInterface(screen, score_left, score_right)


'''run'''
if __name__ == '__main__':
    main()
3、滑雪

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


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]
    '''改變滑雪者的朝向. 負(fù)數(shù)為向左,正數(shù)為向右,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)
    '''設(shè)置為摔倒?fàn)顟B(tài)'''
    def setFall(self):
        self.image = pygame.image.load(cfg.SKIER_IMAGE_PATHS[-1])
    '''設(shè)置為站立狀態(tài)'''
    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


'''創(chuàng)建障礙物'''
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()


'''顯示分?jǐn)?shù)'''
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)


'''更新當(dāng)前幀的游戲畫面'''
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)
    # 設(shè)置屏幕
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('滑雪游戲 —— 九歌')
    # 游戲開始界面
    ShowStartInterface(screen, cfg.SCREENSIZE)
    # 實例化游戲精靈
    # --滑雪者
    skier = SkierClass()
    # --創(chuàng)建障礙物
    obstacles0 = createObstacles(20, 29)
    obstacles1 = createObstacles(10, 19)
    obstaclesflag = 0
    obstacles = AddObstacles(obstacles0, obstacles1)
    # 游戲clock
    clock = pygame.time.Clock()
    # 記錄滑雪的距離
    distance = 0
    # 記錄當(dāng)前的分?jǐn)?shù)
    score = 0
    # 記錄當(dāng)前的速度
    speed = [0, 6]
    # 游戲主循環(huán)
    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)
        # --更新當(dāng)前游戲幀的數(shù)據(jù)
        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();
4、并夕夕版飛機大戰(zhàn)

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


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()
    # 產(chǎn)生小行星的時間間隔
    asteroid_ticks = 90
    for i in range(num_player):
        player_group.add(Ship(i+1, cfg))
    clock = pygame.time.Clock()
    # 分?jǐn)?shù)
    score_1, score_2 = 0, 0
    # 游戲主循環(huán)
    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
        # --向下移動背景圖實現(xiàn)飛船向上移動的效果
        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)
        # --顯示分?jǐn)?shù)
        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)


'''主函數(shù)'''
def main():
    pygame.init()
    pygame.font.init()
    pygame.mixer.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('飛機大戰(zhàn) —— 九歌')
    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()
5、打地鼠

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import cfg
import sys
import pygame
import random
from modules import *


'''游戲初始化'''
def initGame():
    pygame.init()
    pygame.mixer.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('打地鼠 —— 九歌')
    return screen


'''主函數(shù)'''
def main():
    # 初始化
    screen = initGame()
    # 加載背景音樂和其他音效
    pygame.mixer.music.load(cfg.BGM_PATH)
    pygame.mixer.music.play(-1)
    audios = {
        'count_down': pygame.mixer.Sound(cfg.COUNT_DOWN_SOUND_PATH),
        'hammering': pygame.mixer.Sound(cfg.HAMMERING_SOUND_PATH)
    }
    # 加載字體
    font = pygame.font.Font(cfg.FONT_PATH, 40)
    # 加載背景圖片
    bg_img = pygame.image.load(cfg.GAME_BG_IMAGEPATH)
    # 開始界面
    startInterface(screen, cfg.GAME_BEGIN_IMAGEPATHS)
    # 地鼠改變位置的計時
    hole_pos = random.choice(cfg.HOLE_POSITIONS)
    change_hole_event = pygame.USEREVENT
    pygame.time.set_timer(change_hole_event, 800)
    # 地鼠
    mole = Mole(cfg.MOLE_IMAGEPATHS, hole_pos)
    # 錘子
    hammer = Hammer(cfg.HAMMER_IMAGEPATHS, (500, 250))
    # 時鐘
    clock = pygame.time.Clock()
    # 分?jǐn)?shù)
    your_score = 0
    flag = False
    # 初始時間
    init_time = pygame.time.get_ticks()
    # 游戲主循環(huán)
    while True:
        # --游戲時間為60s
        time_remain = round((61000 - (pygame.time.get_ticks() - init_time)) / 1000.)
        # --游戲時間減少, 地鼠變位置速度變快
        if time_remain == 40 and not flag:
            hole_pos = random.choice(cfg.HOLE_POSITIONS)
            mole.reset()
            mole.setPosition(hole_pos)
            pygame.time.set_timer(change_hole_event, 650)
            flag = True
        elif time_remain == 20 and flag:
            hole_pos = random.choice(cfg.HOLE_POSITIONS)
            mole.reset()
            mole.setPosition(hole_pos)
            pygame.time.set_timer(change_hole_event, 500)
            flag = False
        # --倒計時音效
        if time_remain == 10:
            audios['count_down'].play()
        # --游戲結(jié)束
        if time_remain < 0: break
        count_down_text = font.render('Time: '+str(time_remain), True, cfg.WHITE)
        # --按鍵檢測
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.MOUSEMOTION:
                hammer.setPosition(pygame.mouse.get_pos())
            elif event.type == pygame.MOUSEBUTTONDOWN:
                if event.button == 1:
                    hammer.setHammering()
            elif event.type == change_hole_event:
                hole_pos = random.choice(cfg.HOLE_POSITIONS)
                mole.reset()
                mole.setPosition(hole_pos)
        # --碰撞檢測
        if hammer.is_hammering and not mole.is_hammer:
            is_hammer = pygame.sprite.collide_mask(hammer, mole)
            if is_hammer:
                audios['hammering'].play()
                mole.setBeHammered()
                your_score += 10
        # --分?jǐn)?shù)
        your_score_text = font.render('Score: '+str(your_score), True, cfg.BROWN)
        # --綁定必要的游戲元素到屏幕(注意順序)
        screen.blit(bg_img, (0, 0))
        screen.blit(count_down_text, (875, 8))
        screen.blit(your_score_text, (800, 430))
        mole.draw(screen)
        hammer.draw(screen)
        # --更新
        pygame.display.flip()
        clock.tick(60)
    # 讀取最佳分?jǐn)?shù)(try塊避免第一次游戲無.rec文件)
    try:
        best_score = int(open(cfg.RECORD_PATH).read())
    except:
        best_score = 0
    # 若當(dāng)前分?jǐn)?shù)大于最佳分?jǐn)?shù)則更新最佳分?jǐn)?shù)
    if your_score > best_score:
        f = open(cfg.RECORD_PATH, 'w')
        f.write(str(your_score))
        f.close()
    # 結(jié)束界面
    score_info = {'your_score': your_score, 'best_score': best_score}
    is_restart = endInterface(screen, cfg.GAME_END_IMAGEPATH, cfg.GAME_AGAIN_IMAGEPATHS, score_info, cfg.FONT_PATH, [cfg.WHITE, cfg.RED], cfg.SCREENSIZE)
    return is_restart


'''run'''
if __name__ == '__main__':
    while True:
        is_restart = main()
        if not is_restart:
            break
簡簡單單

【簡單介紹一下玩法+附源碼】

6、小恐龍

玩法:上下控制起跳躲避

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import cfg
import sys
import random
import pygame
from modules import *


'''main'''
def main(highest_score):
    # 游戲初始化
    pygame.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('九歌')
    # 導(dǎo)入所有聲音文件
    sounds = {}
    for key, value in cfg.AUDIO_PATHS.items():
        sounds[key] = pygame.mixer.Sound(value)
    # 游戲開始界面
    GameStartInterface(screen, sounds, cfg)
    # 定義一些游戲中必要的元素和變量
    score = 0
    score_board = Scoreboard(cfg.IMAGE_PATHS['numbers'], position=(534, 15), bg_color=cfg.BACKGROUND_COLOR)
    highest_score = highest_score
    highest_score_board = Scoreboard(cfg.IMAGE_PATHS['numbers'], position=(435, 15), bg_color=cfg.BACKGROUND_COLOR, is_highest=True)
    dino = Dinosaur(cfg.IMAGE_PATHS['dino'])
    ground = Ground(cfg.IMAGE_PATHS['ground'], position=(0, cfg.SCREENSIZE[1]))
    cloud_sprites_group = pygame.sprite.Group()
    cactus_sprites_group = pygame.sprite.Group()
    ptera_sprites_group = pygame.sprite.Group()
    add_obstacle_timer = 0
    score_timer = 0
    # 游戲主循環(huán)
    clock = pygame.time.Clock()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE or event.key == pygame.K_UP:
                    dino.jump(sounds)
                elif event.key == pygame.K_DOWN:
                    dino.duck()
            elif event.type == pygame.KEYUP and event.key == pygame.K_DOWN:
                dino.unduck()
        screen.fill(cfg.BACKGROUND_COLOR)
        # --隨機添加云
        if len(cloud_sprites_group) < 5 and random.randrange(0, 300) == 10:
            cloud_sprites_group.add(Cloud(cfg.IMAGE_PATHS['cloud'], position=(cfg.SCREENSIZE[0], random.randrange(30, 75))))
        # --隨機添加仙人掌/飛龍
        add_obstacle_timer += 1
        if add_obstacle_timer > random.randrange(50, 150):
            add_obstacle_timer = 0
            random_value = random.randrange(0, 10)
            if random_value >= 5 and random_value <= 7:
                cactus_sprites_group.add(Cactus(cfg.IMAGE_PATHS['cacti']))
            else:
                position_ys = [cfg.SCREENSIZE[1]*0.82, cfg.SCREENSIZE[1]*0.75, cfg.SCREENSIZE[1]*0.60, cfg.SCREENSIZE[1]*0.20]
                ptera_sprites_group.add(Ptera(cfg.IMAGE_PATHS['ptera'], position=(600, random.choice(position_ys))))
        # --更新游戲元素
        dino.update()
        ground.update()
        cloud_sprites_group.update()
        cactus_sprites_group.update()
        ptera_sprites_group.update()
        score_timer += 1
        if score_timer > (cfg.FPS//12):
            score_timer = 0
            score += 1
            score = min(score, 99999)
            if score > highest_score:
                highest_score = score
            if score % 100 == 0:
                sounds['point'].play()
            if score % 1000 == 0:
                ground.speed -= 1
                for item in cloud_sprites_group:
                    item.speed -= 1
                for item in cactus_sprites_group:
                    item.speed -= 1
                for item in ptera_sprites_group:
                    item.speed -= 1
        # --碰撞檢測
        for item in cactus_sprites_group:
            if pygame.sprite.collide_mask(dino, item):
                dino.die(sounds)
        for item in ptera_sprites_group:
            if pygame.sprite.collide_mask(dino, item):
                dino.die(sounds)
        # --將游戲元素畫到屏幕上
        dino.draw(screen)
        ground.draw(screen)
        cloud_sprites_group.draw(screen)
        cactus_sprites_group.draw(screen)
        ptera_sprites_group.draw(screen)
        score_board.set(score)
        highest_score_board.set(highest_score)
        score_board.draw(screen)
        highest_score_board.draw(screen)
        # --更新屏幕
        pygame.display.update()
        clock.tick(cfg.FPS)
        # --游戲是否結(jié)束
        if dino.is_dead:
            break
    # 游戲結(jié)束界面
    return GameEndInterface(screen, cfg), highest_score


'''run'''
if __name__ == '__main__':
    highest_score = 0
    while True:
        flag, highest_score = main(highest_score)
        if not flag: break
7、消消樂

玩法:三個相連就能消除

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import os
import sys
import cfg
import pygame
from modules import *


'''游戲主程序'''
def main():
    pygame.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('Gemgem —— 九歌')
    # 加載背景音樂
    pygame.mixer.init()
    pygame.mixer.music.load(os.path.join(cfg.ROOTDIR, "resources/audios/bg.mp3"))
    pygame.mixer.music.set_volume(0.6)
    pygame.mixer.music.play(-1)
    # 加載音效
    sounds = {}
    sounds['mismatch'] = pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/badswap.wav'))
    sounds['match'] = []
    for i in range(6):
        sounds['match'].append(pygame.mixer.Sound(os.path.join(cfg.ROOTDIR, 'resources/audios/match%s.wav' % i)))
    # 加載字體
    font = pygame.font.Font(os.path.join(cfg.ROOTDIR, 'resources/font/font.TTF'), 25)
    # 圖片加載
    gem_imgs = []
    for i in range(1, 8):
        gem_imgs.append(os.path.join(cfg.ROOTDIR, 'resources/images/gem%s.png' % i))
    # 主循環(huán)
    game = gemGame(screen, sounds, font, gem_imgs, cfg)
    while True:
        score = game.start()
        flag = False
        # 一輪游戲結(jié)束后玩家選擇重玩或者退出
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE):
                    pygame.quit()
                    sys.exit()
                elif event.type == pygame.KEYUP and event.key == pygame.K_r:
                    flag = True
            if flag:
                break
            screen.fill((135, 206, 235))
            text0 = 'Final score: %s' % score
            text1 = 'Press <R> to restart the game.'
            text2 = 'Press <Esc> to quit the game.'
            y = 150
            for idx, text in enumerate([text0, text1, text2]):
                text_render = font.render(text, 1, (85, 65, 0))
                rect = text_render.get_rect()
                if idx == 0:
                    rect.left, rect.top = (212, y)
                elif idx == 1:
                    rect.left, rect.top = (122.5, y)
                else:
                    rect.left, rect.top = (126.5, y)
                y += 100
                screen.blit(text_render, rect)
            pygame.display.update()
        game.reset()


'''run'''
if __name__ == '__main__':
    main()
8、俄羅斯方塊

玩法:童年經(jīng)典,普通模式?jīng)]啥意思,小時候我們都是玩加速的不會c語言直接學(xué)pythonpython工程師證書。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import os
import sys
import random
from modules import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *


'''定義俄羅斯方塊游戲類'''
class TetrisGame(QMainWindow):
    def __init__(self, parent=None):
        super(TetrisGame, self).__init__(parent)
        # 是否暫停ing
        self.is_paused = False
        # 是否開始ing
        self.is_started = False
        self.initUI()
    '''界面初始化'''
    def initUI(self):
        # icon
        self.setWindowIcon(QIcon(os.path.join(os.getcwd(), 'resources/icon.jpg')))
        # 塊大小
        self.grid_size = 22
        # 游戲幀率
        self.fps = 200
        self.timer = QBasicTimer()
        # 焦點
        self.setFocusPolicy(Qt.StrongFocus)
        # 水平布局
        layout_horizontal = QHBoxLayout()
        self.inner_board = InnerBoard()
        self.external_board = ExternalBoard(self, self.grid_size, self.inner_board)
        layout_horizontal.addWidget(self.external_board)
        self.side_panel = SidePanel(self, self.grid_size, self.inner_board)
        layout_horizontal.addWidget(self.side_panel)
        self.status_bar = self.statusBar()
        self.external_board.score_signal[str].connect(self.status_bar.showMessage)
        self.start()
        self.center()
        self.setWindowTitle('Tetris —— 九歌')
        self.show()
        self.setFixedSize(self.external_board.width() + self.side_panel.width(), self.side_panel.height() + self.status_bar.height())
    '''游戲界面移動到屏幕中間'''
    def center(self):
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2)
    '''更新界面'''
    def updateWindow(self):
        self.external_board.updateData()
        self.side_panel.updateData()
        self.update()
    '''開始'''
    def start(self):
        if self.is_started:
            return
        self.is_started = True
        self.inner_board.createNewTetris()
        self.timer.start(self.fps, self)
    '''暫停/不暫停'''
    def pause(self):
        if not self.is_started:
            return
        self.is_paused = not self.is_paused
        if self.is_paused:
            self.timer.stop()
            self.external_board.score_signal.emit('Paused')
        else:
            self.timer.start(self.fps, self)
        self.updateWindow()
    '''計時器事件'''
    def timerEvent(self, event):
        if event.timerId() == self.timer.timerId():
            removed_lines = self.inner_board.moveDown()
            self.external_board.score += removed_lines
            self.updateWindow()
        else:
            super(TetrisGame, self).timerEvent(event)
    '''按鍵事件'''
    def keyPressEvent(self, event):
        if not self.is_started or self.inner_board.current_tetris == tetrisShape().shape_empty:
            super(TetrisGame, self).keyPressEvent(event)
            return
        key = event.key()
        # P鍵暫停
        if key == Qt.Key_P:
            self.pause()
            return
        if self.is_paused:
            return
        # 向左
        elif key == Qt.Key_Left:
            self.inner_board.moveLeft()
        # 向右
        elif key == Qt.Key_Right:
            self.inner_board.moveRight()
        # 旋轉(zhuǎn)
        elif key == Qt.Key_Up:
            self.inner_board.rotateAnticlockwise()
        # 快速墜落
        elif key == Qt.Key_Space:
            self.external_board.score += self.inner_board.dropDown()
        else:
            super(TetrisGame, self).keyPressEvent(event)
        self.updateWindow()


'''run'''
if __name__ == '__main__':
    app = QApplication([])
    tetris = TetrisGame()
    sys.exit(app.exec_())
9、貪吃蛇

玩法:童年經(jīng)典,普通魔術(shù)也沒啥意思,小時候玩的也是加速的。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import cfg
import sys
import pygame
from modules import *


'''主函數(shù)'''
def main(cfg):
    # 游戲初始化
    pygame.init()
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('Greedy Snake —— 九歌')
    clock = pygame.time.Clock()
    # 播放背景音樂
    pygame.mixer.music.load(cfg.BGMPATH)
    pygame.mixer.music.play(-1)
    # 游戲主循環(huán)
    snake = Snake(cfg)
    apple = Apple(cfg, snake.coords)
    score = 0
    while True:
        screen.fill(cfg.BLACK)
        # --按鍵檢測
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key in [pygame.K_UP, pygame.K_DOWN, pygame.K_LEFT, pygame.K_RIGHT]:
                    snake.setDirection({pygame.K_UP: 'up', pygame.K_DOWN: 'down', pygame.K_LEFT: 'left', pygame.K_RIGHT: 'right'}[event.key])
        # --更新貪吃蛇和食物
        if snake.update(apple):
            apple = Apple(cfg, snake.coords)
            score += 1
        # --判斷游戲是否結(jié)束
        if snake.isgameover: break
        # --顯示游戲里必要的元素
        drawGameGrid(cfg, screen)
        snake.draw(screen)
        apple.draw(screen)
        showScore(cfg, score, screen)
        # --屏幕更新
        pygame.display.update()
        clock.tick(cfg.FPS)
    return endInterface(screen, cfg)


'''run'''
if __name__ == '__main__':
    while True:
        if not main(cfg):
            break
普普通通

【玩法詳細(xì)介紹+源碼】

CFG配置文件就在文末

10、24點小游戲

玩法:通過加減乘除操作,小學(xué)生都沒問題的。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import os
import sys
import pygame
from cfg import *
from modules import *
from fractions import Fraction


'''檢查控件是否被點擊'''
def checkClicked(group, mouse_pos, group_type='NUMBER'):
    selected = []
    # 數(shù)字卡片/運算符卡片
    if group_type == GROUPTYPES[0] or group_type == GROUPTYPES[1]:
        max_selected = 2 if group_type == GROUPTYPES[0] else 1
        num_selected = 0
        for each in group:
            num_selected += int(each.is_selected)
        for each in group:
            if each.rect.collidepoint(mouse_pos):
                if each.is_selected:
                    each.is_selected = not each.is_selected
                    num_selected -= 1
                    each.select_order = None
                else:
                    if num_selected < max_selected:
                        each.is_selected = not each.is_selected
                        num_selected += 1
                        each.select_order = str(num_selected)
            if each.is_selected:
                selected.append(each.attribute)
    # 按鈕卡片
    elif group_type == GROUPTYPES[2]:
        for each in group:
            if each.rect.collidepoint(mouse_pos):
                each.is_selected = True
                selected.append(each.attribute)
    # 拋出異常
    else:
        raise ValueError('checkClicked.group_type unsupport %s, expect %s, %s or %s...' % (group_type, *GROUPTYPES))
    return selected


'''獲取數(shù)字精靈組'''
def getNumberSpritesGroup(numbers):
    number_sprites_group = pygame.sprite.Group()
    for idx, number in enumerate(numbers):
        args = (*NUMBERCARD_POSITIONS[idx], str(number), NUMBERFONT, NUMBERFONT_COLORS, NUMBERCARD_COLORS, str(number))
        number_sprites_group.add(Card(*args))
    return number_sprites_group


'''獲取運算符精靈組'''
def getOperatorSpritesGroup(operators):
    operator_sprites_group = pygame.sprite.Group()
    for idx, operator in enumerate(operators):
        args = (*OPERATORCARD_POSITIONS[idx], str(operator), OPERATORFONT, OPREATORFONT_COLORS, OPERATORCARD_COLORS, str(operator))
        operator_sprites_group.add(Card(*args))
    return operator_sprites_group


'''獲取按鈕精靈組'''
def getButtonSpritesGroup(buttons):
    button_sprites_group = pygame.sprite.Group()
    for idx, button in enumerate(buttons):
        args = (*BUTTONCARD_POSITIONS[idx], str(button), BUTTONFONT, BUTTONFONT_COLORS, BUTTONCARD_COLORS, str(button))
        button_sprites_group.add(Button(*args))
    return button_sprites_group


'''計算'''
def calculate(number1, number2, operator):
    operator_map = {'+': '+', '-': '-', '×': '*', '÷': '/'}
    try:
        result = str(eval(number1+operator_map[operator]+number2))
        return result if '.' not in result else str(Fraction(number1+operator_map[operator]+number2))
    except:
        return None


'''在屏幕上顯示信息'''
def showInfo(text, screen):
    rect = pygame.Rect(200, 180, 400, 200)
    pygame.draw.rect(screen, PAPAYAWHIP, rect)
    font = pygame.font.Font(FONTPATH, 40)
    text_render = font.render(text, True, BLACK)
    font_size = font.size(text)
    screen.blit(text_render, (rect.x+(rect.width-font_size[0])/2, rect.y+(rect.height-font_size[1])/2))


'''主函數(shù)'''
def main():
    # 初始化, 導(dǎo)入必要的游戲素材
    pygame.init()
    pygame.mixer.init()
    screen = pygame.display.set_mode(SCREENSIZE)
    pygame.display.set_caption('24 point —— 九歌')
    win_sound = pygame.mixer.Sound(AUDIOWINPATH)
    lose_sound = pygame.mixer.Sound(AUDIOLOSEPATH)
    warn_sound = pygame.mixer.Sound(AUDIOWARNPATH)
    pygame.mixer.music.load(BGMPATH)
    pygame.mixer.music.play(-1, 0.0)
    # 24點游戲生成器
    game24_gen = game24Generator()
    game24_gen.generate()
    # 精靈組
    # --數(shù)字
    number_sprites_group = getNumberSpritesGroup(game24_gen.numbers_now)
    # --運算符
    operator_sprites_group = getOperatorSpritesGroup(OPREATORS)
    # --按鈕
    button_sprites_group = getButtonSpritesGroup(BUTTONS)
    # 游戲主循環(huán)
    clock = pygame.time.Clock()
    selected_numbers = []
    selected_operators = []
    selected_buttons = []
    is_win = False
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit(-1)
            elif event.type == pygame.MOUSEBUTTONUP:
                mouse_pos = pygame.mouse.get_pos()
                selected_numbers = checkClicked(number_sprites_group, mouse_pos, 'NUMBER')
                selected_operators = checkClicked(operator_sprites_group, mouse_pos, 'OPREATOR')
                selected_buttons = checkClicked(button_sprites_group, mouse_pos, 'BUTTON')
        screen.fill(AZURE)
        # 更新數(shù)字
        if len(selected_numbers) == 2 and len(selected_operators) == 1:
            noselected_numbers = []
            for each in number_sprites_group:
                if each.is_selected:
                    if each.select_order == '1':
                        selected_number1 = each.attribute
                    elif each.select_order == '2':
                        selected_number2 = each.attribute
                    else:
                        raise ValueError('Unknow select_order %s, expect 1 or 2...' % each.select_order)
                else:
                    noselected_numbers.append(each.attribute)
                each.is_selected = False
            for each in operator_sprites_group:
                each.is_selected = False
            result = calculate(selected_number1, selected_number2, *selected_operators)
            if result is not None:
                game24_gen.numbers_now = noselected_numbers + [result]
                is_win = game24_gen.check()
                if is_win:
                    win_sound.play()
                if not is_win and len(game24_gen.numbers_now) == 1:
                    lose_sound.play()
            else:
                warn_sound.play()
            selected_numbers = []
            selected_operators = []
            number_sprites_group = getNumberSpritesGroup(game24_gen.numbers_now)
        # 精靈都畫到screen上
        for each in number_sprites_group:
            each.draw(screen, pygame.mouse.get_pos())
        for each in operator_sprites_group:
            each.draw(screen, pygame.mouse.get_pos())
        for each in button_sprites_group:
            if selected_buttons and selected_buttons[0] in ['RESET', 'NEXT']:
                is_win = False
            if selected_buttons and each.attribute == selected_buttons[0]:
                each.is_selected = False
                number_sprites_group = each.do(game24_gen, getNumberSpritesGroup, number_sprites_group, button_sprites_group)
                selected_buttons = []
            each.draw(screen, pygame.mouse.get_pos())
        # 游戲勝利
        if is_win:
            showInfo('Congratulations', screen)
        # 游戲失敗
        if not is_win and len(game24_gen.numbers_now) == 1:
            showInfo('Game Over', screen)
        pygame.display.flip()
        clock.tick(30)


'''run'''
if __name__ == '__main__':
    main()
11、平衡木

玩法:也是小時候的經(jīng)典游戲,控制左右就行,到后面才有一點點難度。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import cfg
from modules import breakoutClone


'''主函數(shù)'''
def main():
    game = breakoutClone(cfg)
    game.run()


'''run'''
if __name__ == '__main__':
    main()

還有配置文件

12、外星人入侵

玩法:這讓我想起了魂斗羅那第幾關(guān)的boss,有點類似,不過魂斗羅那個難度肯定高點。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享:


import os
import sys
import cfg
import random
import pygame
from modules import *


'''開始游戲'''
def startGame(screen):
    clock = pygame.time.Clock()
    # 加載字體
    font = pygame.font.SysFont('arial', 18)
    if not os.path.isfile('score'):
        f = open('score', 'w')
        f.write('0')
        f.close()
    with open('score', 'r') as f:
        highest_score = int(f.read().strip())
    # 敵方
    enemies_group = pygame.sprite.Group()
    for i in range(55):
        if i < 11:
            enemy = enemySprite('small', i, cfg.WHITE, cfg.WHITE)
        elif i < 33:
            enemy = enemySprite('medium', i, cfg.WHITE, cfg.WHITE)
        else:
            enemy = enemySprite('large', i, cfg.WHITE, cfg.WHITE)
        enemy.rect.x = 85 + (i % 11) * 50
        enemy.rect.y = 120 + (i // 11) * 45
        enemies_group.add(enemy)
    boomed_enemies_group = pygame.sprite.Group()
    en_bullets_group = pygame.sprite.Group()
    ufo = ufoSprite(color=cfg.RED)
    # 我方
    myaircraft = aircraftSprite(color=cfg.GREEN, bullet_color=cfg.WHITE)
    my_bullets_group = pygame.sprite.Group()
    # 用于控制敵方位置更新
    # --移動一行
    enemy_move_count = 24
    enemy_move_interval = 24
    enemy_move_flag = False
    # --改變移動方向(改變方向的同時集體下降一次)
    enemy_change_direction_count = 0
    enemy_change_direction_interval = 60
    enemy_need_down = False
    enemy_move_right = True
    enemy_need_move_row = 6
    enemy_max_row = 5
    # 用于控制敵方發(fā)射子彈
    enemy_shot_interval = 100
    enemy_shot_count = 0
    enemy_shot_flag = False
    # 游戲進(jìn)行中
    running = True
    is_win = False
    # 主循環(huán)
    while running:
        screen.fill(cfg.BLACK)
        for event in pygame.event.get():
            # --點右上角的X或者按Esc鍵退出游戲
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    pygame.quit()
                    sys.exit()
            # --射擊
            if event.type == pygame.MOUSEBUTTONDOWN:
                my_bullet = myaircraft.shot()
                if my_bullet:
                    my_bullets_group.add(my_bullet)
        # --我方子彈與敵方/UFO碰撞檢測
        for enemy in enemies_group:
            if pygame.sprite.spritecollide(enemy, my_bullets_group, True, None):
                boomed_enemies_group.add(enemy)
                enemies_group.remove(enemy)
                myaircraft.score += enemy.reward
        if pygame.sprite.spritecollide(ufo, my_bullets_group, True, None):
            ufo.is_dead = True
            myaircraft.score += ufo.reward
        # --更新并畫敵方
        # ----敵方子彈
        enemy_shot_count += 1
        if enemy_shot_count > enemy_shot_interval:
            enemy_shot_flag = True
            enemies_survive_list = [enemy.number for enemy in enemies_group]
            shot_number = random.choice(enemies_survive_list)
            enemy_shot_count = 0
        # ----敵方移動
        enemy_move_count += 1
        if enemy_move_count > enemy_move_interval:
            enemy_move_count = 0
            enemy_move_flag = True
            enemy_need_move_row -= 1
            if enemy_need_move_row == 0:
                enemy_need_move_row = enemy_max_row
            enemy_change_direction_count += 1
            if enemy_change_direction_count > enemy_change_direction_interval:
                enemy_change_direction_count = 1
                enemy_move_right = not enemy_move_right
                enemy_need_down = True
                # ----每次下降提高移動和射擊速度
                enemy_move_interval = max(15, enemy_move_interval-3)
                enemy_shot_interval = max(50, enemy_move_interval-10)
        # ----遍歷更新
        for enemy in enemies_group:
            if enemy_shot_flag:
                if enemy.number == shot_number:
                    en_bullet = enemy.shot()
                    en_bullets_group.add(en_bullet)
            if enemy_move_flag:
                if enemy.number in range((enemy_need_move_row-1)*11, enemy_need_move_row*11):
                    if enemy_move_right:
                        enemy.update('right', cfg.SCREENSIZE[1])
                    else:
                        enemy.update('left', cfg.SCREENSIZE[1])
            else:
                enemy.update(None, cfg.SCREENSIZE[1])
            if enemy_need_down:
                if enemy.update('down', cfg.SCREENSIZE[1]):
                    running = False
                    is_win = False
                enemy.change_count -= 1
            enemy.draw(screen)
        enemy_move_flag = False
        enemy_need_down = False
        enemy_shot_flag = False
        # ----敵方爆炸特效
        for boomed_enemy in boomed_enemies_group:
            if boomed_enemy.boom(screen):
                boomed_enemies_group.remove(boomed_enemy)
                del boomed_enemy
        # --敵方子彈與我方飛船碰撞檢測
        if not myaircraft.one_dead:
            if pygame.sprite.spritecollide(myaircraft, en_bullets_group, True, None):
                myaircraft.one_dead = True
        if myaircraft.one_dead:
            if myaircraft.boom(screen):
                myaircraft.resetBoom()
                myaircraft.num_life -= 1
                if myaircraft.num_life < 1:
                    running = False
                    is_win = False
        else:
            # ----更新飛船
            myaircraft.update(cfg.SCREENSIZE[0])
            # ----畫飛船
            myaircraft.draw(screen)
        if (not ufo.has_boomed) and (ufo.is_dead):
            if ufo.boom(screen):
                ufo.has_boomed = True
        else:
            # ----更新UFO
            ufo.update(cfg.SCREENSIZE[0])
            # ----畫UFO
            ufo.draw(screen)
        # --畫我方飛船子彈
        for bullet in my_bullets_group:
            if bullet.update():
                my_bullets_group.remove(bullet)
                del bullet
            else:
                bullet.draw(screen)
        # --畫敵方子彈
        for bullet in en_bullets_group:
            if bullet.update(cfg.SCREENSIZE[1]):
                en_bullets_group.remove(bullet)
                del bullet
            else:
                bullet.draw(screen)
        if myaircraft.score > highest_score:
            highest_score = myaircraft.score
        # --得分每增加2000我方飛船增加一條生命
        if (myaircraft.score % 2000 == 0) and (myaircraft.score > 0) and (myaircraft.score != myaircraft.old_score):
            myaircraft.old_score = myaircraft.score
            myaircraft.num_life = min(myaircraft.num_life + 1, myaircraft.max_num_life)
        # --敵人都死光了的話就勝利了
        if len(enemies_group) < 1:
            is_win = True
            running = False
        # --顯示文字
        # ----當(dāng)前得分
        showText(screen, 'SCORE: ', cfg.WHITE, font, 200, 8)
        showText(screen, str(myaircraft.score), cfg.WHITE, font, 200, 24)
        # ----敵人數(shù)量
        showText(screen, 'ENEMY: ', cfg.WHITE, font, 370, 8)
        showText(screen, str(len(enemies_group)), cfg.WHITE, font, 370, 24)
        # ----歷史最高分
        showText(screen, 'HIGHEST: ', cfg.WHITE, font, 540, 8)
        showText(screen, str(highest_score), cfg.WHITE, font, 540, 24)
        # ----FPS
        showText(screen, 'FPS: ' + str(int(clock.get_fps())), cfg.RED, font, 8, 8)
        # --顯示剩余生命值
        showLife(screen, myaircraft.num_life, cfg.GREEN)
        pygame.display.update()
        clock.tick(cfg.FPS)
    with open('score', 'w') as f:
        f.write(str(highest_score))
    return is_win


'''主函數(shù)'''
def main():
    # 初始化
    pygame.init()
    pygame.display.set_caption('外星人入侵 —— 九歌')
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.mixer.init()
    pygame.mixer.music.load(cfg.BGMPATH)
    pygame.mixer.music.set_volume(0.4)
    pygame.mixer.music.play(-1)
    while True:
        is_win = startGame(screen)
        endInterface(screen, cfg.BLACK, is_win)


'''run'''
if __name__ == '__main__':
    main()
13、貪心鳥

玩法:有點類似那個炸彈人,控制好走位問題不大。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

14、井字棋888‘’

玩法:我打賭大家在課堂上肯定玩過這個,想想當(dāng)年和同桌玩這個廢了好幾本本子。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

源碼分享

from tkinter import *
import tkinter.messagebox as msg

root = Tk()
root.title('TIC-TAC-TOE---Project Gurukul')
# labels
Label(root, text="player1 : X", font="times 15").grid(row=0, column=1)
Label(root, text="player2 : O", font="times 15").grid(row=0, column=2)

digits = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# for player1 sign = X and for player2 sign= Y
mark = ''

# counting the no. of click
count = 0

panels = ["panel"] * 10


def win(panels, sign):
    return ((panels[1] == panels[2] == panels[3] == sign)
            or (panels[1] == panels[4] == panels[7] == sign)
            or (panels[1] == panels[5] == panels[9] == sign)
            or (panels[2] == panels[5] == panels[8] == sign)
            or (panels[3] == panels[6] == panels[9] == sign)
            or (panels[3] == panels[5] == panels[7] == sign)
            or (panels[4] == panels[5] == panels[6] == sign)
            or (panels[7] == panels[8] == panels[9] == sign))


def checker(digit):
    global count, mark, digits

    # Check which button clicked

    if digit == 1 and digit in digits:
        digits.remove(digit)
        ##player1 will play if the value of count is even and for odd player2 will play
        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button1.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 2 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button2.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 3 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button3.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 4 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button4.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 5 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button5.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 6 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button6.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 7 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button7.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 8 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button8.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    if digit == 9 and digit in digits:
        digits.remove(digit)

        if count % 2 == 0:
            mark = 'X'
            panels[digit] = mark
        elif count % 2 != 0:
            mark = 'O'
            panels[digit] = mark

        button9.config(text=mark)
        count = count + 1
        sign = mark

        if (win(panels, sign) and sign == 'X'):
            msg.showinfo("Result", "Player1 wins")
            root.destroy()
        elif (win(panels, sign) and sign == 'O'):
            msg.showinfo("Result", "Player2 wins")
            root.destroy()

    ###if count is greater then 8 then the match has been tied
    if (count > 8 and win(panels, 'X') == False and win(panels, 'O') == False):
        msg.showinfo("Result", "Match Tied")
        root.destroy()


####define buttons
button1 = Button(root, width=15, font=('Times 16 bold'), height=7, command=lambda: checker(1))
button1.grid(row=1, column=1)
button2 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(2))
button2.grid(row=1, column=2)
button3 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(3))
button3.grid(row=1, column=3)
button4 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(4))
button4.grid(row=2, column=1)
button5 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(5))
button5.grid(row=2, column=2)
button6 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(6))
button6.grid(row=2, column=3)
button7 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(7))
button7.grid(row=3, column=1)
button8 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(8))
button8.grid(row=3, column=2)
button9 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(9))
button9.grid(row=3, column=3)

root.mainloop()
有點困難

【玩法詳解+源碼獲取看底部】

15、炸彈人

玩法詳解:小時候的又一經(jīng)典游戲,小時候很多次都被自己炸死了。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

16、保衛(wèi)森林

玩法詳解:類似保衛(wèi)蘿卜,塔防類的小游戲,布局一定要合理,考慮射程屬性等等

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

17、五子棋

玩法詳解:小時候很愛玩,先出是有必勝方法的,后面才知道會有禁手這個規(guī)則,就比較復(fù)雜了,大家可以學(xué)一下先出必勝的開局,有浦月、流星、丘月、游星、慧星等等。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

18、吃豆豆

玩法詳解:考驗手速和操作和走位,我不喜歡玩這類跑來跑去的。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

19、坦克大戰(zhàn)

玩法詳解:這是經(jīng)典中的經(jīng)典,我喜歡玩雙人模式,后面有一些改版的模式,這是我覺得少數(shù)幾個現(xiàn)在玩都不過時的游戲。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

20、超級瑪麗

玩法詳解:經(jīng)典中的經(jīng)典,小時候玩覺得可難了,操作不必介紹了吧。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

21、水果忍者

玩法詳解:切水果風(fēng)靡一時的游戲,不知道為啥總是切刀炸掉,挺解壓的游戲。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

極度困難

【攻略大全+源碼獲取看底部】

22、飛機大戰(zhàn)

攻略大全:從這里開始的游戲,真正算的上有難度了,這個飛機大戰(zhàn)跟童年玩的比起來還是差一點。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

23、2048

攻略大全:也是曾經(jīng)風(fēng)靡一時的,越到后面越難,合成的時候一定要大數(shù)放在角落。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

24、推箱子

攻略大全:以前的那個手機上都有的游戲,越推到后面的關(guān)卡越難,我好像是玩到二十多關(guān)就玩不下去了。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

25、塔防

攻略大全:又是一種塔防類的游戲,有點意思,就是速度太快了,反應(yīng)不過來。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

26、植物大戰(zhàn)僵尸

攻略大全:最經(jīng)典的植物大戰(zhàn)僵尸,操作不用介紹了,不過可以自己玩玩看。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

27、掃雷

玩法詳解:掃雷還是挺有意思的,技能玩又考驗推理

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

終極挑戰(zhàn)?

【太難了。。源碼領(lǐng)取看文章底部】

28、拼圖

游戲體驗:三個終極挑戰(zhàn),能完成一個就算你厲害,拼圖是我最煩的,太難了。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

?29、走迷宮

游戲體驗:我反正沒走出去,大家能走出去嗎

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

30、最強游戲

游戲體驗:可太難控制了。。

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能


行業(yè)資料:添加即可領(lǐng)取PPT模板、簡歷模板、行業(yè)經(jīng)典書籍PDF。
面試題庫:歷年經(jīng)典,熱乎的大廠面試真題,持續(xù)更新中,添加獲取。
學(xué)習(xí)資料:含Python、爬蟲、數(shù)據(jù)分析、算法等學(xué)習(xí)視頻和文檔,添加獲取
交流加群:大佬指點迷津,你的問題往往有人遇到過,技術(shù)互助交流。
?

其他源碼以及cfg配置文件等領(lǐng)取

python超簡單小游戲代碼,python最簡單游戲代碼,pygame,python,開發(fā)語言,人工智能

到了這里,關(guān)于python超簡單小游戲代碼,python最簡單游戲代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • python簡單小游戲代碼100行,python超簡單小游戲代碼

    python簡單小游戲代碼100行,python超簡單小游戲代碼

    大家好,小編為大家解答python簡單小游戲代碼100行的問題。很多人還不知道python超簡單小游戲代碼,現(xiàn)在讓我們一起來看看吧! Source code download: 本文相關(guān)源碼 大家好,小編來為大家解答以下問題,一些簡單好玩的python編程游戲,python編寫的入門簡單小游戲,今天讓我們一起

    2024年01月19日
    瀏覽(29)
  • python簡單小游戲代碼10行,簡單的python小游戲代碼

    python簡單小游戲代碼10行,簡單的python小游戲代碼

    本篇文章給大家談?wù)刾ython簡單小游戲代碼200行,以及python簡單小游戲代碼20行,希望對各位有所幫助,不要忘了收藏本站喔。 大家好,小編來為大家解答以下問題,python編程一個最簡單游戲代碼,python編程游戲代碼大全,今天讓我們一起來看看吧! 大家好,我是辣條。 今天

    2024年01月22日
    瀏覽(34)
  • python簡單小游戲代碼100行,簡單的python小游戲代碼

    python簡單小游戲代碼100行,簡單的python小游戲代碼

    大家好,給大家分享一下python簡單小游戲代碼100行,很多人還不知道這一點。下面詳細(xì)解釋一下?,F(xiàn)在讓我們來看看! Source code download: 本文相關(guān)源碼 大家小時候都玩過貪吃蛇吧?小編小時候可喜歡拿爸媽的手機玩了,厲害著呢!今天,小編就來用100行代碼實現(xiàn)一個簡易版的

    2024年04月14日
    瀏覽(31)
  • python簡單小游戲代碼200行,python簡單的小游戲代碼

    python簡單小游戲代碼200行,python簡單的小游戲代碼

    大家好,小編為大家解答python簡單小游戲代碼200行的問題。很多人還不知道python簡單的小游戲代碼,現(xiàn)在讓我們一起來看看吧! 貪吃蛇游戲是有史以來最受歡迎的街機游戲之一。在這個游戲中,玩家的主要目標(biāo)是在不撞墻或不撞墻的情況下抓住最大數(shù)量的水果python基礎(chǔ)知識點

    2024年02月02日
    瀏覽(25)
  • Python版經(jīng)典小游戲憤怒的小鳥源代碼,基于pygame+pymunk

    Python版經(jīng)典小游戲憤怒的小鳥源代碼,基于pygame+pymunk

    Python版經(jīng)典小游戲憤怒的小鳥源代碼,基于pygame+pymunk 程序依賴:pygame 2.0.1, pymunk 5.5.0 直接運行main.py 完整代碼下載地址:Python版經(jīng)典小游戲憤怒的小鳥源代碼 tool.py 完整代碼下載地址:Python版經(jīng)典小游戲憤怒的小鳥源代碼

    2024年02月16日
    瀏覽(104)
  • python簡單小游戲代碼教程,python編程小游戲代碼

    python簡單小游戲代碼教程,python編程小游戲代碼

    大家好,本文將圍繞一些簡單好玩的python編程游戲展開說明,python編寫的入門簡單小游戲是一個很多人都想弄明白的事情,想搞清楚python簡單小游戲代碼教程需要先了解以下幾個事情。 Source code download: 本文相關(guān)源碼 大家好,我是辣條。 今天給大家?guī)?0個py小游戲,一定要

    2024年02月03日
    瀏覽(109)
  • python簡單小游戲代碼教程,python編程小游戲簡單的

    python簡單小游戲代碼教程,python編程小游戲簡單的

    大家好,小編來為大家解答以下問題,一些簡單好玩的python編程游戲,python編寫的入門簡單小游戲,今天讓我們一起來看看吧! 哈嘍鐵子們 表弟最近在學(xué)Python,總是跟我抱怨很枯燥無味,其實,他有沒有認(rèn)真想過,可能是自己學(xué)習(xí)姿勢不對? 比方說,可以通過打游戲來學(xué)編

    2024年04月23日
    瀏覽(30)
  • python簡單小游戲代碼100行,python小游戲代碼大全

    python簡單小游戲代碼100行,python小游戲代碼大全

    大家好,給大家分享一下python簡單小游戲代碼100行,很多人還不知道這一點。下面詳細(xì)解釋一下?,F(xiàn)在讓我們來看看! download: python小游戲代碼 按照題目要求編寫燃悔中的Python程序如下 import random numlist=random.sample(range(0,10),5) while numlist[0]==0: ? ? numlist=random.sample(range(0,10),5) n

    2024年02月08日
    瀏覽(30)
  • python入門小游戲代碼20行,python超簡單小游戲代碼

    python入門小游戲代碼20行,python超簡單小游戲代碼

    大家好,小編為大家解答python簡單小游戲代碼100行的問題。很多人還不知道python入門小游戲代碼20行,現(xiàn)在讓我們一起來看看吧! Source code download: 本文相關(guān)源碼 大家好,小編來為大家解答以下問題,一些簡單好玩的python編程游戲,python編寫的入門簡單小游戲,今天讓我們一

    2024年01月19日
    瀏覽(24)
  • python簡單小游戲代碼教程,python小游戲程序源代碼

    python簡單小游戲代碼教程,python小游戲程序源代碼

    大家好,小編來為大家解答以下問題,python簡單小游戲代碼教程,python小游戲程序源代碼,今天讓我們一起來看看吧! 哈嘍鐵子們 表弟最近在學(xué)Python,總是跟我抱怨很枯燥無味,其實,他有沒有認(rèn)真想過,可能是自己學(xué)習(xí)姿勢不對? 比方說,可以通過打游戲來學(xué)編程! 今天

    2024年02月02日
    瀏覽(98)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包