2048(游戏)

2048小游戏----嵌入式系统实训 本次嵌入式系统实训式设计一款2048小游戏,在Linux编译环境下及ARM Cortex-A8开发平台下的,实现2048游戏的开发,且对其进行性能分析。《2048》是一款比较流行的数字游戏,最早于2014年3月20日发行。原版2048首先在GitHub上发布,原作者是Gabriele Cirulli,后被移植到各个平台。这款游戏是基于《1024》和《小3传奇》的玩法开发而成的新型数字游戏。《2048》这款小游戏是一款流行的数字游戏,游戏设计初衷是一款益智类的游戏,其特点在于轻松、简单、有趣。在此次实训报告的 阅读详情

玩法:

即模仿市场上的2048游戏。


效果图:

这里写图片描述
这里写图片描述
这里写图片描述


实现原理:

  • 就当是一个非常复杂的模拟题,整理好思路,搭好大体结构不难写。
  • 重点是如何判断方块是否合并那里,还有检测是否游戏结束。
  • 分数用一个全局变量储存,每次更新出性方块时加分。
  • 为方块分数加了个等比例增加的#号,要不玩起来难受的要死。
    -

源代码:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>

int a[4][4], SCORE = 0, prt;

int num()
{
    return rand()%4;
}

int scan()
{
    int i, j, t = 0;
    for(i = 0; i < 4; i++)
    {
        for(j = 0; j < 4; j++)
        {
            if (a[i][j] == 0)
            {
                return 1;
            }
        }

    }
    return 0;
}

void crt()
{
    SCORE += 2;
    int i,j;
    for(;1;)
    {
        i = num();
        j = num();
        printf("%d %d", i, j);
        if (a[i][j] == 0)
        {
            a[i][j] = 2;
            break;
        }
    }
}

void frmt()
{
    int i, d;
    for (i = 0; i < 4; i++)
    {
        for (d = 0; d < 4; d++)
        {
            a[i][d] = 0;
        }
    }
}

void put()
{
    int i,d;
    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\tScode: \t%d\n\n\t\t\t┌──────┬──────┬──────┬──────┐\n\t\t\t", SCORE);
    for (i = 0; i < 4; i++)
    {

        for (d = 0; d < 4; d++)
        {
            if (a[i][d] == 2048)
                printf("│##########%d ", a[i][d]);
            else if (a[i][d] == 1024)
                printf("│#########%2d ", a[i][d]);
            else if (a[i][d] == 512)
                printf("│########%3d ", a[i][d]);
            else if (a[i][d] == 256)
                printf("│#######%4d ", a[i][d]);
            else if (a[i][d] == 128)
                printf("│######%5d ", a[i][d]);
            else if (a[i][d] == 64)
                printf("│#####%6d ", a[i][d]);
            else if (a[i][d] == 32)
                printf("│####%7d ", a[i][d]);
            else if (a[i][d] == 16)
                printf("│###%8d ", a[i][d]);
            else if (a[i][d] == 8)
                printf("│##%9d ", a[i][d]);
            else if (a[i][d] == 4)
                printf("│#%10d ", a[i][d]);
            else if (a[i][d] == 2)
                printf("│%11d ", a[i][d]);
            else
            printf("│            ", a[i][d]);
        }
        printf("│");

        if (i != 3)
        {
            printf("\n\t\t\t├──────┼──────┼──────┼──────┤\n\t\t\t");
        }
    }
    printf("\n\t\t\t└──────┴──────┴──────┴──────┘\n\n\n");
}


void A_()
{
    int i, j, t;
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            if (a[i][j] == 0)
                continue;
            else
            {
                for (t = j + 1; t < 4; t++)
                {
                    if (t != 0 && a[i][t] == a[i][j])
                    {
                        prt=1;
                        a[i][j] *= 2;
                        a[i][t] = 0;
                    }
                    else if (t != 0 && a[i][t] != a[i][j])
                        break;
                }
            }
        }
    }

    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            if (a[i][j] == 0)
            {
                for (t = j + 1; t < 4; t++)
                {
                    if (a[i][t] != 0)
                    {
                        prt=1;
                        a[i][j] = a[i][t];
                        a[i][t] = 0;
                        break;
                    }
                }
            }
        }
    }
}

void D_()
{
    int i, j, t;
    for (i = 0; i < 4; i++)
    {
        for (j = 3; j >= 0; j--)
        {
            if (a[i][j] == 0)
                continue;
            else
            {
                for (t = j - 1; t >= 0; t--)
                {
                    if (t != 0 && a[i][t] == a[i][j])
                    {
                        prt=1;
                        a[i][j] *= 2;
                        a[i][t] = 0;
                    }
                    else if (t != 0 && a[i][t] != a[i][j])
                        break;
                }
            }
        }
    }

    for (i = 0; i < 4; i++)
    {
        for (j = 3; j >= 0; j--)
        {
            if (a[i][j] == 0)
            {
                for (t = j - 1; t >= 0; t--)
                {
                    if (a[i][t] != 0)
                    {
                        prt=1;
                        a[i][j] = a[i][t];
                        a[i][t] = 0;
                        break;
                    }
                }
            }
        }
    }
}

void S_()
{
    int i, j, t;
    for (i = 0; i < 4; i++)
    {
        for (j = 3; j >= 0; j--)
        {
            if (a[j][i] == 0)
                continue;
            else
            {
                for (t = j - 1; t >= 0; t--)
                {
                    if (t != 0 && a[j][i] == a[t][i])
                    {
                        prt=1;
                        a[j][i] *= 2;
                        a[t][i] = 0;
                    }
                    else if (t != 0 && a[t][i] != a[j][i])
                        break;
                }
            }
        }
    }

    for (i = 0; i < 4; i++)
    {
        for (j = 3; j >= 0; j--)
        {
            if (a[j][i] == 0)
            {
                for (t = j - 1; t >= 0; t--)
                {
                    if (a[t][i] != 0)
                    {
                        prt=1;
                        a[j][i] = a[t][i];
                        a[t][i] = 0;
                        break;
                    }
                }
            }
        }
    }
}

void W_()
{
    int i, j, t;
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            if (a[j][i] == 0)
                continue;
            else
            {
                for (t = j + 1; t < 4; t++)
                {
                    if (t != 0 && a[j][i] == a[t][i])
                    {
                        prt=1;
                        a[j][i] *= 2;
                        a[t][i] = 0;
                    }
                    else if (t != 0 && a[t][i] != a[j][i])
                        break;
                }
            }
        }
    }

    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            if (a[j][i] == 0)
            {
                for (t = j + 1; t < 4; t++)
                {
                    if (a[t][i] != 0)
                    {
                        prt=1;
                        a[j][i] = a[t][i];
                        a[t][i] = 0;
                        break;
                    }
                }
            }
        }
    }
}

int main()
{
    int judge;
    char ch;
    srand((unsigned) time(NULL));

    printf("\n\n\n\n\n\n\t\t\tW S A D Control direction\n\n\n\n\t\t\tPress any key to start the game...\n");
    getch();

    frmt();
    crt();
    put();

    for (;1;)
    {
        prt = 0;
        for (;1;)
        {
            printf("\n\n\n\n\n\n\n\nPlease enter: ");
            ch = getch();
            putchar(ch);
            if(ch >= 'a' && ch <= 'z')
                ch -= 32;
            if(ch == 'W' || ch == 'A' || ch == 'D' || ch == 'S')
                break;
        }

        if (ch == 'A')
            A_();

        if (ch == 'D')
            D_();

        if (ch == 'S')
            S_();

        if (ch == 'W')
            W_();

        if (scan())
        {
            if (prt)
                crt();
            put();
        }
        else
        {
            printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\tGame Over\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
            break;
        }
    }
    getchar();
}

PS:

印象中好像是十月一刚开学时,非常无聊写的,当作是锻炼代码能力了,也是图个好玩,成就感也是有的,毕竟是第一个有点可玩性的游戏,有时候真的停不下来233。

2048游戏简单实现 前言 最近突然心血来潮想写一个网页小游戏,我看网上有很多人推荐写2048来练练手,遂开始写。目前为止,基本功能已经实现,只是没有添加相应的动画效果,待以后有机会补上(其实我就是动画这块太菜了 T_T) 前方长文预警!!! 游戏截图 项目结构 这个项目结构挺简单的,应该也都看得懂,在此仅对js文件夹进行描述,其余的就不再赘述啦 (main.js是入口文件,move.js主... 阅读详情

相关推荐

c++制作小游戏2048

2048小游戏完整代码

weixin_43116971的博客 6327

2048

package com.tedu.Game2048; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.Action

hyl52101314的博客 1万+

C++ 2048 游戏的实现。

最近无聊,就玩了几遍2048这款游戏,下面我们就用C++来实现。 首先我们来描述一下2048游戏的规则; 1.游戏开始的时候,在一个4*4的二维空间,随机产生2或者4; 2.可以选择上下左右的滑动,如果遇到相同的数字,该数字乘2; 3.滑动结束后,检测是否有剩余的空间,如果有,则在该位置随机生成2或者4; 4.然后继续步骤2. 5.如果检测到有数字2048,游戏胜利,则游戏结束;无法继续滑动,游戏...

weixin_43122883的博客 2684

【游戏】2048及各种变种大集合汇总【更新ing~新版Floppy2048 - 恒星聚变版 - 恶搞改数据】

【游戏】2048及各种变种大集合汇总 【更新】新版Floopy2048 http://flappy2048.com/ 【更新】恒星聚变版 http://newbrict.github.io/Fe26/

春光灿烂 1万+

【C++ 程序】 2048游戏

这个2048游戏是我编的第6个小游戏,历程相对比较顺利。 程序 请使用(C++/11)标准编译该程序。 //This is a simple 2048 game. #include <iostream> #include <vector> #include <Windows.h> #include <string> #include <random> #include <ctime> #include <conio.h>

Teddy van Jerry的博客 4391

基于C语言以及easyx的2048游戏代码

bool// 遍历游戏板以检查是否还有空格子forinti = 0;i

2402_82428821的博客 2337

基于6818粤嵌开发板的2048游戏项目

板子是6818粤嵌开发板,为800*480,触摸屏幕大小为1024*600需要自己配好相应数字图片,将其图片命名为数字.bmp的形式在VMware虚拟机下进行arm-linux-gcc bla进行编译,然后传输可执行文件和图片至开发板中,最后在开发板上运行。

acc_hoyh的博客 1万+

2048游戏素材images.rar

2048游戏素材images.rar

unity项目 2048

网盘:https://pan.baidu.com/s/1m3Q0_qLwKavULZ2y_8dCyA (请用unity2017及以上版本打开项目)

小白 2458

DreamerV3实战:如何用世界模型在Minecraft中自动挖钻石(附完整训练流程)

本文详细介绍了如何使用DreamerV3世界模型在Minecraft中训练AI智能体自动完成挖钻石的复杂任务。文章深入分析了该任务对强化学习的挑战,提供了从环境配置、模型训练到结果评估的完整实战流程,并分享了关键的调优技巧与问题解决方案,展示了基于模型的强化学习在解决稀疏奖励问题上的强大能力。

weixin_29050271的博客 189

PCIe扫盲(三)

需要特别注意的是,PCIe的Spec中明确规定只有Root有权限发起配置请求(Originate Configuration Requests),也就是说PCIe系统里面的其他设备是不允许去配置其他设备的配置空间的,即peer-to-peer的配置请求是不允许的。当配置请求进行BDF路由的时候,正是依靠这些信息来确定要找的设备的。前面的文章还介绍过,Root和Switch的每一个端口中都包含一个P2P桥,并且知道桥的配置空间头(Configuration Space Header)是Type1型的。

Liuqz2009的专栏 2398

JAVA 实现《2048游戏》游戏

JAVA 实现《2048游戏》游戏

毅慎的博客 1万+

实战指南:基于Windows Server构建企业级AAA认证体系

本文详细介绍了如何在Windows Server环境下构建企业级AAA认证体系,涵盖AD域服务部署、NPS服务器配置及华为设备对接实战。通过整合Radius协议与AD域账号管理,实现网络设备的统一认证与权限控制,提升企业IT安全管理效率。特别适用于需要零成本实现AAA认证的中大型企业。

weixin_28304023的博客 420

matlab 2048小游戏

对第一版的2048小游戏的改进,界面使用gui制作,各个组件的颜色由之前RGB颜色提取程序提取的原版。 游戏效果: 游戏改进: 1.该程序增添了快速截取游戏分数的功能,以及记录游戏最高分的功能。 2.更加美观的界面 完整代码: function game2048 clc;clear; global GUI; global score; global best; global gameover...

slandarer的博客 9293

AnyGrasp实战指南:从环境配置到抓取检测与跟踪

本文详细介绍了AnyGrasp从环境配置到抓取检测与跟踪的实战指南。涵盖硬件要求、关键依赖安装避坑、抓取检测与跟踪的实战技巧,以及常见问题解决方案和性能优化建议,帮助开发者快速掌握这一高精度物体抓取检测与跟踪技术。

weixin_33712987的博客 274

高频面波成像实战:从频散曲线到全波形反演

面波勘探是近地表工程勘察的重要手段,其核心原理在于不同频率的面波对地下介质的敏感深度不同,由此形成的频散曲线能够反映浅层剪切波速结构。相较于传统钻探与折射波法,高频面波成像具有无损、高效、对低速夹层敏感等优势,广泛应用于路基检测、空洞探测、滑坡调查等领域。在实际工程中,从野外采集的排列设计、震源选型,到频散谱提取与频散曲线反演,每一步都直接影响成像精度。然而频散反演受限于一维层状假设,难以刻画横向剧烈变化的地质体。全波形反演通过拟合完整波形信息,能够突破频散曲线的分辨率边界,获得更精细的近地表速度模型。本文

weixin_29090917的博客 270

用Python实现《2048》小游戏

用Python实现《2048》小游戏摘要1.引言。2.系统结构。游戏界面设计游戏规则实现实现代码。1.首先设计游戏窗口界面,对每个图形的位置进行确定(图2)。2.设置主窗口的位置,定义一个类,用来画出除了数字块以外的图形:3.定义数字块1)用字典的方法来存放数字方块的位置2)画出16个数字块:3)对每个数字的颜色进行分配:4)定义grow(),使得游戏开始时能随机出现数字2或者4,用update()方法进行界面刷新:4.数字块的移动1)设置四个游戏键位实现的功能,监听键盘的输入:2)定义move_move类

weixin_44674399的博客 1万+

【SWAT】SWAT中预定义河网及流域

平原圩区没有明显的海拔差异。DEM中包含的地形信息无法定义河段的位置和水文连接,SWAT模型Watershed Delineator中提供两种方法,帮助用户输入流域拓扑信息。第一种方法,“Burn-in”和手动绘制河段和子流域边界。首先,使用“Burn-in”功能导入数字河道网络(DCN),并根据DEM和DCN绘制河流和子流域。然后在ArcGIS中编辑“流域”和“河段”层,可以调整位置、范围和水文连接。第二种方法,可以手动绘制或重新编辑河流和子流域,预定义河网及流域。

```On Earth, Be Water, By Coding``` 3273

用python实现2048小游戏

2048游戏规则:简单的移动方向键让数字叠加,并且获得这些数字每次叠加后的得分,当出现2048这个数字时游戏胜利。同时每次移动方向键时,都会在这个4*4的方格矩阵的空白区域随机产生一个数字2或者4,如果方格被数字填满了,那么就GameOver了 import curses from itertools import chain from random import choice class ...

weixin_42668123的博客 2万+

手把手教你玩转服务器芯片架构​专栏--​​3.5 实战案例:用SystemC搭建一个多核服务器芯片的NoC模型(含流量分配与延迟仿真)​

通过SystemC搭建多核NoC模型,可深入验证流量分配策略与延迟特性。实际工程中需结合FPGA原型验证(如Xilinx Alveo)进行时序收敛分析,并通过参数化设计适配不同服务器芯片需求。

MHD0815的博客 3043

MATLAB GUI 水果成熟度分级系统设计与实现

本文基于 MATLAB GUI 设计并实现了一款水果成熟度分级系统,能够准确地评估水果的成熟程度。在实现过程中,我们运用了 MATLAB 中的函数实现对图像的处理和分析,同时使用 GUI 界面增加了系统的易用性。值得一提的是,在实际操作中,我们应该结合实际需求对系统进行相应的改进与完善,以满足不同领域和应用场景下的需求。实验结果表明,本系统可以有效地检测出水果的成熟度,并对其进行精准的评分。因此,本文设计并实现了一款基于 MATLAB GUI 的水果成熟度分级系统。三、MATLAB 代码实现。

uote_e的博客 707

python2048游戏设计

python 2048游戏 pygame

张树的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python 实现 2048 游戏

Python 实现 2048 游戏 一、实验介绍 2048 是 20 岁的 Gabriele Cirulli 开发的一款数字游戏,曾风靡一时。这次实验我们用 200 行 Python 代码,在终端环境中实现一个 2048 规则的小游戏。 二、实验知识点 本节实验中将学习和实践以下知识点: Python 基本知识 curses 终端图形编程库 random 随机数模块 collections 容器数据类型库 状态机的概念 三、适合人群 本课程通过 Python 实现了一个在终端上运行的 2048 小游戏,

less is more 5937

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

2048游戏小代码

#include<stdio.h> #include<conio.h> #include<stdlib.h> #include<time.h> int matrix[4][4]={0}; int flat=0; //当满屏再次移动时,无法移动的标志 int sum=0; //记录当前总分 void welcome(); //欢迎函数 int move(); //移动函数,同时起到重新开始游戏和结束游戏作用 void newcreat();

weixin_46962006的博客 2750

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

2048小游戏

闲暇时间写了一个2048 #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> #include<stdlib.h> #include<time.h> using namespace std; int p[4][4]; char st...

陈颜的博客 5319

2048Game/2048游戏(自制版)

2048Game Index of the project/项目主页 Donation/捐助 2048Game(self-produced) without GUI version 2048游戏(自制版) 无GUI版 About Version/版本说明 Version v.1.0 did not been interated, because of the difference betw...

dolor_059的博客 2688
上一篇: 自动走迷宫(DFS)
下一篇: UVA122 Trees on the level(二叉树建立与遍历)
ACM_Fish
博客等级 码龄10年 69粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值