iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python怎么实现简单2048小游戏
  • 799
分享到

Python怎么实现简单2048小游戏

2023-06-15 07:06:23 799人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了python怎么实现简单2048小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简单的2048小游戏不多说,直接上图,这里并未实现GUI之类的,需要的话

这篇文章主要介绍了python怎么实现简单2048小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

简单的2048小游戏

不多说,直接上图,这里并未实现GUI之类的,需要的话,可自行实现:

Python怎么实现简单2048小游戏

接下来就是代码模块,其中的2048游戏原来网络上有很多,我就不详细写上去了,都写在注释里面了。唯一要注意的就是需要先去了解一下矩阵的转置,这里会用到

import randomboard = [[0, 0, 0, 0],         [0, 0, 0, 0],         [0, 0, 0, 0],         [0, 0, 0, 0]]# 打印游戏界面def display(board, score):    print('{0:4} {1:4} {2:4} {3:4}'.fORMat(board[0][0], board[0][1], board[0][2], board[0][3]))    print('{0:4} {1:4} {2:4} {3:4}'.format(board[1][0], board[1][1], board[1][2], board[1][3]))    print('{0:4} {1:4} {2:4} {3:4}'.format(board[2][0], board[2][1], board[2][2], board[2][3]))    print('{0:4} {1:4} {2:4} {3:4}'.format(board[3][0], board[3][1], board[3][2], board[3][3]), '      分数:', score)# 初始化游戏,在4*4里面随机生成两个2def init(board):    # 游戏先都重置为0    for i in range(4):        for j in range(4):            board[i][j] = 0    # 随机生成两个2保存的位置    randomposition = random.sample(range(0, 15), 2)    board[int(randomposition[0] / 4)][randomposition[0] % 4] = 2    board[int(randomposition[1] / 4)][randomposition[1] % 4] = 2def addSameNumber(boardList, direction):    '''需要在列表中查找相邻相同的数字相加,返回增加的分数    :param boardList: 经过对齐非零的数字处理过后的二维数组    :param direction: direction == 'left'从右向左查找,找到相同且相邻的两个数字,左侧数字翻倍,右侧数字置0                      direction == 'right'从左向右查找,找到相同且相邻的两个数字,右侧数字翻倍,左侧数字置0    :return:    '''    addNumber = 0    # 向左以及向上的操作    if direction == 'left':        for i in [0, 1, 2]:            if boardList[i] == boardList[i+1] != 0:                boardList[i] *= 2                boardList[i + 1] = 0                addNumber += boardList[i]                return {'continueRun': True, 'addNumber': addNumber}        return {'continueRun': False, 'addNumber': addNumber}    # 向右以及向下的操作    else:        for i in [3, 2, 1]:            if boardList[i] == boardList[i-1] != 0:                boardList[i] *= 2                boardList[i - 1] = 0                addNumber += boardList[i]                return {'continueRun': True, 'addNumber': addNumber}        return {'continueRun': False, 'addNumber': addNumber}def align(boardList, direction):    '''对齐非零的数字    direction == 'left':向左对齐,例如[8,0,0,2]左对齐后[8,2,0,0]    direction == 'right':向右对齐,例如[8,0,0,2]右对齐后[0,0,8,2]    '''    # 先移除列表里面的0,如[8,0,0,2]->[8,2],1.先找0的个数,然后依照个数进行清理    # boardList.remove(0):移除列表中的某个值的第一个匹配项,所以[8,0,0,2]会移除两次0    for x in range(boardList.count(0)):        boardList.remove(0)    # 移除的0重新补充回去,[8,2]->[8,2,0,0]    if direction == 'left':        boardList.extend([0 for x in range(4 - len(boardList))])    else:        boardList[:0] = [0 for x in range(4 - len(boardList))]def handle(boardList, direction):    '''    处理一行(列)中的数据,得到最终的该行(列)的数字状态值, 返回得分    :param boardList: 列表结构,存储了一行(列)中的数据    :param direction: 移动方向,向上和向左都使用方向'left',向右和向下都使用'right'    :return: 返回一行(列)处理后加的分数    '''    addscore = 0    # 先处理数据,把数据都往指定方向进行运动    align(boardList, direction)    result = addSameNumber(boardList, direction)    # 当result['continueRun'] 为True,代表需要再次执行    while result['continueRun']:        # 重新对其,然后重新执行合并,直到再也无法合并为止        addscore += result['addNumber']        align(boardList, direction)        result = addSameNumber(boardList, direction)    # 直到执行完毕,及一行的数据都不存在相同的    return {'addscore': addscore}# 游戏操作函数,根据移动方向重新计算矩阵状态值,并记录得分def operator(board):    # 每一次的操作所加的分数,以及操作后游戏是否触发结束状态(即数据占满位置)    addScore = 0    gameOver = False    # 默认向左    direction = 'left'    op = input("请输入您的操作:")    if op in ['a', 'A']:        # 方向向左        direction = 'left'        # 一行一行进行处理        for row in range(4):            addScore += handle(board[row], direction)['addscore']    elif op in ['d', 'D']:        direction = 'right'        for row in range(4):            addScore += handle(board[row], direction)['addscore']    elif op in ['w', 'W']:        # 向上相当于向左的转置处理        direction = 'left'        board = list(map(list, zip(*board)))        # 一行一行进行处理        for row in range(4):            addScore += handle(board[row], direction)['addscore']        board = list(map(list, zip(*board)))    elif op in ['s', 'S']:        # 向下相当于向右的转置处理        direction = 'right'        board = list(map(list, zip(*board)))        # 一行一行进行处理        for row in range(4):            addScore += handle(board[row], direction)['addscore']        board = list(map(list, zip(*board)))    else:        print("错误输入!请输入[W, S, A, D]或者对应小写")        return {'gameOver': gameOver, 'addScore': addScore, 'board': board}    # 每一次操作后都需要判断0的数量,如果满了,则游戏结束    number_0 = 0    for q in board:        # count(0)是指0出现的个数,是扫描每一行的        number_0 += q.count(0)    # 如果number_0为0,说明满了    if number_0 == 0:        gameOver = True        return {'gameOver': gameOver, 'addScore': addScore, 'board': board}    # 说明还没有满,则在空的位置上加上一个2或者4,概率为3:1    else:        addnum = random.choice([2,2,2,4])        position_0_list = []        # 找出0的位置,并保存起来        for i in range(4):            for j in range(4):                if board[i][j] == 0:                    position_0_list.append(i*4 + j)    # 在刚才记录的0的位置里面随便找一个,然后替换成生成的2或者4    randomposition = random.sample(position_0_list, 1)    board[int(randomposition[0] / 4)][randomposition[0] % 4] = addnum    return {'gameOver': gameOver, 'addScore': addScore, 'board': board}if __name__ == '__main__':    print('输入:W(上) S(下) A(左) D(右).')    # 初始化游戏界面,游戏分数    gameOver = False    init(board)    score = 0    # 游戏未结束,则一直运行    while gameOver != True:        display(board, score)        operator_result = operator(board)        board = operator_result['board']        if operator_result['gameOver'] == True:            print("游戏结束,你输了!")            print("你的最终得分:", score)            gameOver = operator_result['gameOver']            break        else:            # 加上这一步的分            score += operator_result['addScore']            if score >= 2048:                print("牛啊牛啊,你吊竟然赢了!")                print("你的最终得分:", score)                # 结束游戏                gameOver = True                break

感谢你能够认真阅读完这篇文章,希望小编分享的“Python怎么实现简单2048小游戏”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网Python频道,更多相关知识等着你来学习!

--结束END--

本文标题: Python怎么实现简单2048小游戏

本文链接: https://www.lsjlt.com/news/278585.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python怎么实现简单2048小游戏
    这篇文章主要介绍了Python怎么实现简单2048小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简单的2048小游戏不多说,直接上图,这里并未实现GUI之类的,需要的话...
    99+
    2023-06-15
  • 怎么用Python实现2048小游戏
    这篇文章主要介绍怎么用Python实现2048小游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、开发环境Python版本:3.6.4相关模块:pygame模块;以及一些Python自带的模块。二、环境搭建安装P...
    99+
    2023-06-15
  • 小程序怎么实现2048小游戏
    这篇文章主要介绍“小程序怎么实现2048小游戏”,在日常操作中,相信很多人在小程序怎么实现2048小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”小程序怎么实现2048小游戏”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-26
  • Python制作简易版2048小游戏
    目录目标效果设计开始步骤一步骤二步骤三步骤四步骤五今天我们来动手实现一款2048小游戏。这款游戏的精髓就玩家能够在于通过滑动屏幕合并相同数字,直到不能再合并为止。玩法可以说是非常的简...
    99+
    2024-04-02
  • Python+Pygame制作简易版2048小游戏
    目录导语正文主要代码效果图导语 哈喽!大家好,我是栗子,感谢大家的支持! 新的一天,新气象,程序猿们的日常开始敲敲敲,改改改——今天给大家来一款简单的小游戏...
    99+
    2024-04-02
  • 怎么用Python+Pygame制作简易版2048小游戏
    这篇文章主要介绍了怎么用Python+Pygame制作简易版2048小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python+Pygame制作简易版2048小游戏文章都会有所收获,下面我们一起来看...
    99+
    2023-06-29
  • java怎么实现2048游戏
    这篇文章主要介绍java怎么实现2048游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文实例讲述了java实现的2048游戏。分享给大家供大家参考,具体如下:先来看看运行效果:具体代码如下:package&nb...
    99+
    2023-05-30
  • python实现简单贪吃蛇小游戏
    本文实例为大家分享了python实现简单贪吃蛇的具体代码,供大家参考,具体内容如下 1. 导入游戏库 import pgzrun import random 2.游戏初始化 # 窗口...
    99+
    2024-04-02
  • python怎么实现简单的井字棋小游戏
    这篇文章主要讲解了“python怎么实现简单的井字棋小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么实现简单的井字棋小游戏”吧!窗口万能的窗口,实现窗口都可以进行简单的修...
    99+
    2023-06-30
  • python实现简单五子棋小游戏
    用python实现五子棋简单人机模式的练习过程,供大家参考,具体内容如下 最近在初学python,今天就用自己的一些粗浅理解,来记录一下这几天的python简单人机五子棋游戏的练习,...
    99+
    2024-04-02
  • 怎么使用Python+Pygame实现简单的单词小游戏
    本篇内容主要讲解“怎么使用Python+Pygame实现简单的单词小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Python+Pygame实现简单的单词小游戏”吧!一、环境准备1)...
    99+
    2023-07-05
  • java怎么实现简单猜拳小游戏
    本篇内容主要讲解“java怎么实现简单猜拳小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java怎么实现简单猜拳小游戏”吧!User.javaimport java.util.S...
    99+
    2023-06-25
  • java实现2048小游戏(含注释)
    本文实例为大家分享了java实现2048小游戏的具体代码,供大家参考,具体内容如下 实现文件 APP.java import javax.swing.*; public cla...
    99+
    2024-04-02
  • python实现简单的井字棋小游戏
    Python做三子棋游戏,这个是我刚开始了解做Python小游戏的时候第一个项目,因为简单好入手,实现它的过程是我开始摸索Python的GUI界面的入门之路。这个设计也都是按照自己对...
    99+
    2024-04-02
  • python实现简单飞机大战小游戏
    为了熟悉Python基础语法,学习了一个经典的案例:飞机大战,最后实现效果如下: 实现步骤: ①下载64位对应python版本的pygame:pygame-1.9.6-cp38-c...
    99+
    2024-04-02
  • python简单小游戏代码10行,python超简单小游戏代码
    大家好,小编为大家解答python编写的入门简单小游戏代码大全的问题。很多人还不知道python编写的入门简单小游戏代码,现在让我们一起来看看吧! 1、小恐龙 玩法:上下控制起跳躲避 import cfgimport sysi...
    99+
    2023-10-24
    pygame python 开发语言 人工智能
  • Python+Pygame实现简单的射击小游戏
    目录前言一、运行环境二、代码展示​三、效果展示1)游戏界面2)击中效果3)+3分前言 哈喽!哈喽。栗子上线啦~ 要说什么游戏能够获得大家的喜爱? 唯射击游戏莫属。此前大火手游的《刺激...
    99+
    2024-04-02
  • java怎么实现简单五子棋小游戏
    本篇文章为大家展示了java怎么实现简单五子棋小游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。讲解五子棋,实际上就是用一个数组来实现的。没有其他很复杂的结构。首先我们制作五子棋,先要有一个棋盘。...
    99+
    2023-06-26
  • java实现简单猜拳小游戏
    本文实例为大家分享了java实现猜拳小游戏的具体代码,供大家参考,具体内容如下 User.java import java.util.Scanner; public class ...
    99+
    2024-04-02
  • js实现简单翻牌小游戏
    本文实例为大家分享了js实现简单翻牌小游戏的具体代码,供大家参考,具体内容如下 1.简介 非常简单的一个网络消消乐翻牌小游戏的实现,代码量较少,不过遇到的bug和自行开发的步骤十分有...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作