Zenn
🍞

ChatGPTとDeepSeekの比較

2025/02/05に公開1

本日流行りのDeepSeek R1とChatGPT(無料版)をPygameで比較してみた。

プロンプト:
pygameを使用して、spritesを使って、バックグランド層、ブロック層、エネミー層、町人、Playerを配置し、階層別の描画するプログラムを作成して。

※ChatGPTは勝手に画像を使用したため、画像ではなく、四角で描画しての追加プロンプトで生成しています。

ChatGPT生成結果

import pygame
import sys

# 初期設定
pygame.init()
screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()

# レイヤー定義
BACKGROUND_LAYER = 0
BLOCK_LAYER = 1
ENEMY_LAYER = 2
NPC_LAYER = 3
PLAYER_LAYER = 4

# 色の定義
COLORS = {
    BACKGROUND_LAYER: (135, 206, 235),  # 空色
    BLOCK_LAYER: (139, 69, 19),         # 茶色
    ENEMY_LAYER: (255, 0, 0),           # 赤
    NPC_LAYER: (0, 255, 0),             # 緑
    PLAYER_LAYER: (0, 0, 255)           # 青
}

# スプライトクラスの定義
class GameSprite(pygame.sprite.Sprite):
    def __init__(self, color, pos, size, *groups, layer=0):
        super().__init__(*groups)
        self.image = pygame.Surface(size)
        self.image.fill(color)
        self.rect = self.image.get_rect(topleft=pos)
        self._layer = layer  # レイヤーを設定

# スプライトグループの作成
all_sprites = pygame.sprite.LayeredUpdates()

# 各スプライトの作成とグループへの追加
background = GameSprite(COLORS[BACKGROUND_LAYER], (0, 0), (800, 600), all_sprites, layer=BACKGROUND_LAYER)
block = GameSprite(COLORS[BLOCK_LAYER], (100, 100), (100, 50), all_sprites, layer=BLOCK_LAYER)
enemy = GameSprite(COLORS[ENEMY_LAYER], (200, 150), (50, 50), all_sprites, layer=ENEMY_LAYER)
npc = GameSprite(COLORS[NPC_LAYER], (300, 200), (50, 50), all_sprites, layer=NPC_LAYER)
player = GameSprite(COLORS[PLAYER_LAYER], (400, 300), (50, 50), all_sprites, layer=PLAYER_LAYER)

# メインループ
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 描画
    screen.fill((0, 0, 0))
    all_sprites.draw(screen)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
sys.exit()

DeepSeek生成結果

import pygame
import random

# Pygameの初期化
pygame.init()

# 画面のサイズ
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# 色の定義
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)

# 画面の作成
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Layered Sprite Example")

# スプライトクラスの定義
class Background(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT))
        self.image.fill((135, 206, 250))  # 空の色
        self.rect = self.image.get_rect()

class Block(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__()
        self.image = pygame.Surface((50, 50))
        self.image.fill((34, 139, 34))  # 緑色のブロック
        self.rect = self.image.get_rect(topleft=(x, y))

class Enemy(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__()
        self.image = pygame.Surface((30, 30))
        self.image.fill((255, 0, 0))  # 赤色の敵
        self.rect = self.image.get_rect(topleft=(x, y))

class Citizen(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__()
        self.image = pygame.Surface((20, 20))
        self.image.fill((0, 0, 255))  # 青色の町人
        self.rect = self.image.get_rect(topleft=(x, y))

class Player(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__()
        self.image = pygame.Surface((40, 40))
        self.image.fill((255, 255, 0))  # 黄色のプレイヤー
        self.rect = self.image.get_rect(topleft=(x, y))

# スプライトグループの作成
background_group = pygame.sprite.Group()
block_group = pygame.sprite.Group()
enemy_group = pygame.sprite.Group()
citizen_group = pygame.sprite.Group()
player_group = pygame.sprite.Group()

# 背景の追加
background = Background()
background_group.add(background)

# ブロックの追加
for _ in range(10):
    x = random.randint(0, SCREEN_WIDTH - 50)
    y = random.randint(100, SCREEN_HEIGHT - 50)
    block = Block(x, y)
    block_group.add(block)

# 敵の追加
for _ in range(5):
    x = random.randint(0, SCREEN_WIDTH - 30)
    y = random.randint(0, SCREEN_HEIGHT - 30)
    enemy = Enemy(x, y)
    enemy_group.add(enemy)

# 町人の追加
for _ in range(3):
    x = random.randint(0, SCREEN_WIDTH - 20)
    y = random.randint(0, SCREEN_HEIGHT - 20)
    citizen = Citizen(x, y)
    citizen_group.add(citizen)

# プレイヤーの追加
player = Player(SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)
player_group.add(player)

# ゲームループ
running = True
clock = pygame.time.Clock()

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 画面の更新
    background_group.draw(screen)
    block_group.draw(screen)
    enemy_group.draw(screen)
    citizen_group.draw(screen)
    player_group.draw(screen)

    # 画面の更新
    pygame.display.flip()

    # フレームレートの設定
    clock.tick(60)

# Pygameの終了
pygame.quit()

比較結果の考察

DeepSeekは一発目で、クラスを使った構造を使用してプログラミングを構築しており、筆者の意図をくみ取っている。
ChatGPTは、1つのクラスで定義を行い、グループ分けしていない。
ざっと見て、DeepSeekがすごいという結果になりました。

中国はすごいってことに!!!

Discussion

ログインするとコメントできます