🍞
ChatGPTとDeepSeekの比較
本日流行りの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
使っている人が多いのか?
上記のように中国語になっていますね。