首页 > 编程知识 正文

一个人工智能的诞生游戏下载(手把手自制人工智能AI游戏1(附源码))

时间:2023-05-04 19:10:25 阅读:123362 作者:2279

引言:近几年来人工智能的发展很火热,尤其是AI游戏决策方面。像王者荣耀的高级人机等等都得益于人工智能的发展。今天我们就将把一个游戏改成AI自动玩取得。

本文就将利用DQN算法玩转小时候经典的游戏-俄罗斯方块游戏。

其中代码分为下面几个步骤:

1、预准备:import cv2import numpy as np2、 定义初始函数奖励机制:def __init__(self): self.screen = np.ones((100, 100), np.float32) * 255 self.screen = cv2.cvtColor(self.screen, cv2.COLOR_GRAY2BGR) self.steps = 0 def frame_step(self, input_vec): reward = -1 if self.screen[0,0,0] == 255: if input_vec[1] == 1: reward = 1 self.screen *= (1./255.) elif input_vec[0] == 1: reward = 0 else: if input_vec[2] == 1: reward = 1 self.screen *= 255 elif input_vec[0] == 1: reward = 0 self.steps += 1 terminal = False if self.steps >= 10: self.steps = 0 terminal = True return self.screen, reward, terminal3、 游戏部分代码:import random, time, pygame, sysfrom pygame.locals import *FPS = 25WINDOWWIDTH = 640WINDOWHEIGHT = 480BOXSIZE = 20BOARDWIDTH = 10BOARDHEIGHT = 20BLANK = '.'MOVESIDEWAYSFREQ = 0.15MOVEDOWNFREQ = 0.1XMARGIN = int((WINDOWWIDTH - BOARDWIDTH * BOXSIZE) / 2)TOPMARGIN = WINDOWHEIGHT - (BOARDHEIGHT * BOXSIZE) - 5gamma = 4# R G BWHITE = (255, 255, 255)GRAY = (185, 185, 185)BLACK = ( 0, 0, 0)RED = (155, 0, 0)LIGHTRED = (175, 20, 20)GREEN = ( 0, 155, 0)LIGHTGREEN = ( 20, 175, 20)BLUE = ( 0, 0, 155)LIGHTBLUE = ( 20, 20, 175)YELLOW = (155, 155, 0)LIGHTYELLOW = (175, 175, 20)BORDERCOLOR = BLUEBGCOLOR = BLACKTEXTCOLOR = WHITETEXTSHADOWCOLOR = GRAYCOLORS = ( BLUE, GREEN, RED, YELLOW)LIGHTCOLORS = (LIGHTBLUE, LIGHTGREEN, LIGHTRED, LIGHTYELLOW)assert len(COLORS) == len(LIGHTCOLORS) # each color must have light colorTEMPLATEWIDTH = 5TEMPLATEHEIGHT = 5S_SHAPE_TEMPLATE = [['..OO.', '.OO..', '.....', '.....', '.....'], ['..O..', '..OO.', '...O.', '.....', '.....']]Z_SHAPE_TEMPLATE = [['.OO..', '..OO.', '.....', '.....', '.....'], ['..O..', '.OO..', '.O...', '.....', '.....']]I_SHAPE_TEMPLATE = [['..O..', '..O..', '..O..', '..O..', '.....'], ['OOOO.', '.....', '.....', '.....', '.....']]O_SHAPE_TEMPLATE = [['.OO..', '.OO..', '.....', '.....', '.....']]J_SHAPE_TEMPLATE = [['.O...', '.OOO.', '.....', '.....', '.....'], ['..OO.', '..O..', '..O..', '.....', '.....'], ['.OOO.', '...O.', '.....', '.....', '.....'], ['..O..', '..O..', '.OO..', '.....', '.....']]L_SHAPE_TEMPLATE = [['...O.', '.OOO.', '.....', '.....', '.....'], ['..O..', '..O..', '..OO.', '.....', '.....'], ['.OOO.', '.O...', '.....', '.....', '.....'], ['.OO..', '..O..', '..O..', '.....', '.....']]T_SHAPE_TEMPLATE = [['..O..', '.OOO.', '.....', '.....', '.....'], ['..O..', '..OO.', '..O..', '.....', '.....'], ['.OOO.', '..O..', '.....', '.....', '.....'], ['..O..', '.OO..', '..O..', '.....', '.....']]PIECES = {'S': S_SHAPE_TEMPLATE, 'Z': Z_SHAPE_TEMPLATE, 'J': J_SHAPE_TEMPLATE, 'L': L_SHAPE_TEMPLATE, 'I': I_SHAPE_TEMPLATE, 'O': O_SHAPE_TEMPLATE, 'T': T_SHAPE_TEMPLATE}


效果如上图,仅仅训练了5秒的模型:

完整代码获取,后台回复“AI游戏1”,欢迎大家挂住我的公众号“人工智能实战及常见代码分享”

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。