今天难得有空写了一下2048这个游戏,源码已经发上了,不喜勿碰.

#include<iostream>

#include<cstdlib>

#include<cstdio>

#include<map>

#include<string>

using namespace std;

map<int,string>zdy;

long long sum;

int x,y,dt[5][5],fx,cl[5],zsjs,djs,dx;

bool bh=false;

char d,dj[10]={};

int cx(int i){ //查询函数,用来查找下一个有数字空间(包括本个)

if(i==dx) return 998;

if(cl[i]!=0) return i;

if(cl[i]==0) return cx(i+1);

}

void sx(){

for(int i=0;i<=(dx-1);i++){

if(cx(i+1)!=998){

if((cl[i]!=0)&&(cl[i]==cl[cx(i+1)])){

cl[i]*=2;

sum+=cl[i];

cl[cx(i+1)]=0;

bh=true;

}

}

}

bool bd=false;

do{

bd=false;

for(int ii=(dx-1);ii>=1;ii--)

if((cl[ii-1]==0)&&(cl[ii]!=0)){

cl[ii-1]=cl[ii];

cl[ii]=0;

bh=true;

bd=true;

}

}while(bd==true);

}

int main(){

// freopen("您的游戏积分结果.txt","w",stdout);

cout<<"这是荀彧先生制作的2048作死版"<<endl;

cout<<"目前存在很多不周,请大家见谅"<<endl;

cout<<"游戏按键操作如下:\n W A S D或8 4 2 6代表上 下 左 右滑动\n 如果在游戏过程中暂停,则使用p\n 如果想要结束游戏,则使用e"<<endl;

system("pause");

system("cls");

cout<<"请输入您想要自定义的等级数,若为0,则运行数字版(第一等级为空即数字0对应等级)"<<endl;

cin>>djs;

cout<<"请输入您想要的棋盘大小"<<endl;

cin>>dx;

zdy[0]=‘0‘; zdy[2]=‘2‘; zdy[4]=‘4‘; zdy[8]=‘8‘; zdy[16]=‘16‘; zdy[32]=‘32‘; zdy[64]=‘64‘; zdy[128]=‘128‘; zdy[256]=‘256‘; zdy[512]=‘512‘;

int oop=0;

for(int i=1;i<=djs;i++){

string ppo;

cin>>ppo;

zdy[oop]=ppo;

oop=(oop==0)?2:(oop*2);

}

for(int i=0;i<=(dx-1);i++)

for(int ii=0;ii<=(dx-1);ii++)

dt[i][ii]=0;

for(;;){

for(bool hg=true;hg==true;){

x=rand()%dx;

y=rand()%dx;

if(dt[x][y]==0){

cout<<"此次产生点的坐标是:"<<x<<" "<<y<<endl;

dt[x][y]=2;

hg=false;

}

}

bool jg=false;

for(int i=0;i<=(dx-1);i++)

for(int ii=0;ii<=(dx-1);ii++)

if(dt[i][ii]==0)

jg=true;

if(jg==false){

system("cls");

cout<<"游戏结束!您目前的积分是:"<<sum<<"感谢使用荀彧制作2048"<<endl;

return 0;

}

cout<<"现在的积分是:"<<sum<<endl<<endl<<endl<<endl;

for(int i=0;i<=(dx-1);i++){

for(int ii=0;ii<=(dx-1);ii++)

cout<<zdy[dt[i][ii]]<<" ";

cout<<endl<<endl<<endl<<endl;

}

do{

bh=false;

cout<<"请输入移动方向:2,4,6,8(s a d w)分别代表下,左,右,上"<<endl;

cin>>d;

switch(d){

case ‘8‘:

case ‘w‘:

for(int i=0;i<=(dx-1);i++){

zsjs=0;

for(int ii=0;ii<=(dx-1);ii++)

cl[zsjs++]=dt[ii][i];

sx();

zsjs=0;

for(int ii=0;ii<=(dx-1);ii++)

dt[ii][i]=cl[zsjs++];

}

break;

case ‘4‘:

case ‘a‘:

for(int ii=0;ii<=(dx-1);ii++){

zsjs=0;

for(int i=0;i<=(dx-1);i++)

cl[zsjs++]=dt[ii][i];

sx();

zsjs=0;

for(int i=0;i<=(dx-1);i++)

dt[ii][i]=cl[zsjs++];

}

break;

case ‘6‘:

case ‘d‘:

for(int ii=0;ii<=(dx-1);ii++){

zsjs=0;

for(int i=(dx-1);i>=0;i--)

cl[zsjs++]=dt[ii][i];

sx();

zsjs=0;

for(int i=(dx-1);i>=0;i--)

dt[ii][i]=cl[zsjs++];

}

break;

case ‘2‘:

case ‘s‘:

for(int i=0;i<=(dx-1);i++){

zsjs=0;

for(int ii=(dx-1);ii>=0;ii--)

cl[zsjs++]=dt[ii][i];

sx();

zsjs=0;

for(int ii=(dx-1);ii>=0;ii--)

dt[ii][i]=cl[zsjs++];

}

break;

case ‘p‘:

cout<<"暂停"<<endl;

system("pause");

case ‘5‘:

int o;

cout<<"确认退出?确认请点击5,取消点其余按键"<<endl;

cin>>o;

if(o==5){

system("cls");

cout<<"游戏结束!您目前的积分是:"<<sum<<"感谢使用荀彧制作2048"<<endl;

}

cout<<"取消成功"<<endl;

system("pause");

}

}while(!bh);

system("cls");

}

return 0;

}

时间: 2024-10-06 14:28:28

今天难得有空写了一下2048这个游戏,源码已经发上了,不喜勿碰.的相关文章

2048小游戏源码

2048小游戏 下载地址:http://www.devstore.cn/code/info/737.html 运行截图:   

安卓2048小游戏源码

http://git.oschina.net/scimence/sci_2048/wikis/home package com.example.sci_2048; import java.util.Random; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.graphics.Color; import andr

用控制台写类窗体2048小游戏

原文地址:用控制台写类窗体2048小游戏作者:余文 2048是一个很简单的小游戏,这是我自己实现的一个版本. 这个版本有两个特色 这是一个高仿窗体程序的控制台程序. 通过使用指针将四个方向的移动简化成了一个方向的移动. 当初刚出来2048小游戏的时候,玩的不亦乐乎.之后根据游戏规则自己花了一下午时间用控制台写了一个玩,没有参考源码. 当时只实现了游戏的移动逻辑和胜负判定逻辑,界面很简单,但已经可以玩玩了. 这是当初刚写完发空间说说得瑟的时候. 今年5月有段时候比较闲,对程序做了较大更新. 实时显

【Linux学习】 写一个简单的Makefile编译源码获取当前系统时间

打算学习一下Linux,这两天先看了一下gcc的简单用法以及makefile的写法,今天是周末,天气闷热超市,早晨突然发现住处的冰箱可以用了,于是先出去吃了点东西,然后去超市买了一坨冰棍,老冰棍居多,5毛钱一根,还有几根1.5的. 嗯 接着说gcc的事 先把源代码贴上来 //gettime.h #ifndef _GET_TIME_H_ #define _GET_TIME_H_ void PrintCurrentTime(); #endif //gettime.c #include <stdio.

教你如何赚取你的第一桶金 - 2048(含源码)

引言 程序猿们,是否还在为你的老板辛辛苦苦的打工而拿着微薄的薪水呢,还是不知道如何用自己的应用或游戏 来赚钱呢! 在这里IQuick将教您如何同过自己的应用来赚取自己的第一桶金! 你是说自己的应用还没有做出来? 不,在這里已经为你提供好了一个完整的游戏应用了,在文章的下面有源码的地址哦.你只要稍做修改就可以 变成一个完全属于自己的应用了,比如将4*4换成5*5,甚至是其它的.如果你实在是慵懒至极的话,你只要将本应 用的包名及广告换成自己的,就可以上传到市场上轻轻松松赚取自己的第一桶金了. 如果你

OpenCV2.3的cvCalcHist函数有问题?255级值总为0,索性自己写一个直方图计算函数,附源码!

欢迎大家加入图像识别技术交流群:271891601,另外,特别欢迎成都从事图像识别工作的朋友交流,我的QQ号248787278 ------------------------------------------- 我在写直方图规定化的代码过程中,发现OpenCV自带的cvCalcHist函数计算出的直方图的第255分量总是为0,测试了几张图都是这样,代码如下: #include <opencv2/opencv.hpp> #include <opencv2/legacy/compat.h

[置顶] 教你如何赚取你的第一桶金 - 2048(含源码)

程序猿们,是否还在为你的老板辛辛苦苦的打工而拿着微薄的薪水呢,还是不知道如何用自己的应用或游戏 来赚钱呢! 在这里IQuick将教您如何同过自己的应用来赚取自己的第一桶金! 你是说自己的应用还没有做出来? 不,在這里已经为你提供好了一个完整的游戏应用了,在文章的下面有源码的地址哦.你只要稍做修改就可以 变成一个完全属于自己的应用了,比如将4*4换成5*5,甚至是其它的.如果你实在是慵懒至极的话,你只要将本应 用的包名及广告换成自己的,就可以上传到市场上轻轻松松赚取自己的第一桶金了. 如果你觉得本

使用JS实现2048小游戏

JS实现2048小游戏源码 效果图: 代码如下,复制即可使用: (适用浏览器:360.FireFox.Chrome.Opera.傲游.搜狗.世界之窗. 不支持Safari.IE8及以下浏览器.) <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name=&

JQuery实现2048小游戏

最近用Jqery写了一个2048小游戏,由于是第一次写小游戏,所以就选了一个基础的没什么难度游戏.具体实现如下: 首先在开发时将整个游戏分成两层(自认为),底层是游戏的数据结构以及对数据的操作,上层是显示出来的用户界面.底层选择使用一个4x4的二维数组,整个游戏的数据操作都围绕着这个二维数组进行. [一]游戏基础界面 1 <div id="game"> 2 <div id="header"> 3 <h1>1024</h1&g