python学习一点 快乐一点(9)贪吃蛇

本文详细解析了贪吃蛇游戏中的路径决策与空间管理,涉及输入指令处理、边界检查、蛇身移动与食物处理,展示了如何通过算法实现游戏核心逻辑。

贪吃蛇

steps = input().split(" ")
MN = input().split(" ")
M=int(MN[0])
N=int(MN[1])
import sys
arr = [] ###定义空间
first=[] ##定义起始位置
for i in range(M):
    line = sys.stdin.readline().strip().split()
    arr.append(line)
print(arr)
for i in range(N):
    for j in range(N):
        if arr[i][j] == "H":
            first.append(i)
            first.append(j)
print(first)
direction = {
    'U':[-1,0],
    'D':[1,0],
    'L':[0,-1],
    'R':[0,1],
}
goStep = [0,-1]
snake = []
for s in range(len(steps)):
    item= steps[s]
    if item == 'G': ##当为G时
        step = [first[0]+goStep[0],first[1]+goStep[1]] ##下一个定点的坐标=初始位置+前进的位置
        if step[0] < 0 or step[1] < 0 or step[0] >= N or step[1] >= M: ##判断step是否超出边界
            break
        stepStr=arr[step[0]][step[1]] ##下一个定点的字符串
        if stepStr == "F": ##如果遇到食物
            arr[first[0]][first[1]] = "S" ##初始位置变蛇身
            arr[step[0]][step[1]]   = "H" ##走到F的位置变H
            snake.insert(0,first) ##加入蛇身
            first = step
        else:##如果遇到E/S
            length = len(snake)
            if length > 0 : ##至少有一个舌头
                tail = snake[length-1] ##snake里面最后一个左边
                arr[tail[0]][tail[1]] = "E" ##将蛇尾变成空
                snake.pop()
                arr[first[0]][first[1]] = "H" ##将原先的蛇头变蛇身
                snake.insert(0,first)
            else:
                arr[first[0]][first[1]] = "E"
            if stepStr == "S":
                break
            arr[step[0]][step[1]] = "H" ##将走过的地方变蛇头
            first = step
        print(arr)
    else:
        goStep = direction[item] ##如果不是G,进行转向
print(len(snake)+1)

在这里插入图片描述

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值