不要问我ege怎么装

http://tieba.baidu.com/p/2227018541

好,现在我们装好了ege

开始写2048吧

没有算法,单纯模拟,不用讲解——这才叫【水】的含义

界面极度简单,不喜勿喷

 #include<iostream>
#include <math.h>
#include <cstdlib>
#include <fstream>
#include <Windows.h>
#include <direct.h>
#include <graphics.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <string.h>
using namespace std;
int a[][];
int size;
int zj;
int jg;
int _lb;
int tou;
int han;
int sd;
int yc;
int bkr,bkg,bkb,wzr,wzg,wzb,btr,btg,btb;
color_t bk;
color_t wz;
color_t bt;
bool bo;
unsigned long long score=;
bool p[];
PIMAGE bl[];
unsigned int see;
int GetDirection() //读取方向
{
int ret = ; do
{
int ch = getch();
switch(ch)
{
case 'w':
ret = ; // top
break;
case 'a':
ret = ; // left
break;
case 'd':
ret = ; // right
break;
case 's':
ret = ; // down
break;
default:
break;
}
} while (ret == ); return ret;
}
int ha(int k)
{
int j=,i=;
for(;j!=k;i++)
j*=;
return i;
}
void print()
{
cleardevice();
setcolor(bt);
setfont(tou,tou/,"楷体");
xyprintf(,,"分数%llu",-score);
xyprintf(,tou,"种子%d",see);
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(a[i][j]!=)
putimage(j*(size+jg)-size-jg+_lb,*tou+han+i*(size+jg)-size-jg,bl[ha(abs(a[i][j]))],SRCCOPY);
}
int add()//增加数
{
int sum=;
int x[],y[];//空的格子的列表
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(!a[i][j])
{
x[++sum]=i;
y[sum]=j;
}
int p=(rand()%==)?:;//生成的数
int q=rand()%sum+;//列表里挑一个
a[x[q]][y[q]]=p;
print();
delay_ms();
return ;
}
bool over()
{
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if((a[i][j]==)||(a[i][j]==a[i-][j])||(a[i][j]==a[i+][j])||(a[i][j]==a[i][j+])||(a[i][j]==a[i][j-]))
return ;
if(MessageBox(NULL,"就喜欢你看不惯我又**不到我的感觉","你跪了",MB_RETRYCANCEL)==)
{
for(int i=;i<=;i++)
for(int j=;j<=;j++)
a[i][j]=;
score=;
add();
return ;
}
else
{
closegraph();
return ;
}
}
int _up()
{
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if((a[i][j]!=)&&((a[i-][j]==a[i][j])||(a[i-][j]==)))
{
bo=;
int ii=i;
while((ii>)&&(a[--ii][j]==));
if(a[ii][j]==a[i][j])
{
int ls=a[i][j];
a[i][j]=;
cleardevice();
for(int zh=;zh<=(i-ii)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb,*tou+han+i*(size+jg)-size-jg+_lb-zh,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[ii][j]*=;
a[ii][j]=-a[ii][j];
score+=a[ii][j];
print();
}
else
{
int ls=a[i][j];
a[i][j]=;
ii++;
for(int zh=;zh<=(i-ii)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb,*tou+han+i*(size+jg)-size-jg+_lb-zh,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[ii][j]=ls;
print();
}
}
return ;
}
int _down()
{
for(int i=;i>=;i--)
for(int j=;j<=;j++)
if((a[i][j]!=)&&((a[i+][j]==a[i][j])||(a[i+][j]==)))
{
bo=;
int ii=i;
while((ii<)&&(a[++ii][j]==));
if(a[ii][j]==a[i][j])
{
int ls=a[i][j];
a[i][j]=;
for(int zh=;zh<=(ii-i)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb,*tou+han+i*(size+jg)-size-jg+_lb+zh,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[ii][j]*=;
a[ii][j]=-a[ii][j];
score+=a[ii][j];
print();
}
else
{
int ls=a[i][j];
a[i][j]=;
ii--;
for(int zh=;zh<=(ii-i)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb,*tou+han+i*(size+jg)-size-jg+_lb+zh,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[ii][j]=ls;
print();
}
}
return ;
}
int _left()
{
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if((a[i][j]!=)&&((a[i][j-]==a[i][j])||(a[i][j-]==)))
{
bo=;
int ii=j;
while((ii>)&&(a[i][--ii]==));
if(a[i][ii]==a[i][j])
{
int ls=a[i][j];
a[i][j]=;
for(int zh=;zh<=(j-ii)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb-zh,*tou+han+i*(size+jg)-size-jg+_lb,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[i][ii]*=;
a[i][ii]=-a[i][ii];
score+=a[i][ii];
print();
}
else
{
int ls=a[i][j];
a[i][j]=;
ii++;
for(int zh=;zh<=(j-ii)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb-zh,*tou+han+i*(size+jg)-size-jg+_lb,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[i][ii]=ls;
print();
}
}
return ;
}
int _right()
{
for(int i=;i<=;i++)
for(int j=;j>=;j--)
if((a[i][j]!=)&&((a[i][j+]==a[i][j])||(a[i][j+]==)))
{
bo=;
int ii=j;
while((ii<)&&(a[i][++ii]==));
if(a[i][ii]==a[i][j])
{
int ls=a[i][j];
a[i][j]=;
for(int zh=;zh<=(ii-j)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb+zh,*tou+han+i*(size+jg)-size-jg+_lb,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[i][ii]*=;
a[i][ii]=-a[i][ii];
score+=a[i][ii];
print();
}
else
{
int ls=a[i][j];
a[i][j]=;
ii--;
for(int zh=;zh<=(ii-j)*size;zh+=sd)
{
print();
putimage(j*(size+jg)-size-jg+_lb+zh,*tou+han+i*(size+jg)-size-jg+_lb,bl[ha(ls)],SRCCOPY);
delay_ms(yc);
}
a[i][ii]=ls;
print();
}
}
return ;
}
color_t gc(int k)
{
if(k<=)
return EGERGB(+*k,+*k,);//0x9999FF;102 204 153
else
return EGERGB(,-*(k-),-*(k-));
}
int initblock(int k)
{
setbkcolor(gc(k),bl[k]);
setcolor(bk,bl[k]);
for(int i=;i<size;i++)
if(i<zj)
{
line(,i,zj-(int)sqrt(zj*zj-(zj-i)*(zj-i)),i,bl[k]);
line(size-zj+(int)sqrt(zj*zj-(zj-i)*(zj-i)),i,size,i,bl[k]);
}
else
if(i>=size-zj)
{
line(,i,zj-(int)sqrt(zj*zj-(size-zj-i)*(size-zj-i)),i,bl[k]);
line(size-zj+(int)sqrt(zj*zj-(size-zj-i)*(size-zj-i)),i,size,i,bl[k]);
}
char poi[];
itoa( << k,poi,);
setcolor(wz,bl[k]);
int _k=,__k=<<k;
while(__k>)
{
_k++;
__k/=;
}
setfont(-size/,size/(_k+),"宋体",bl[k]);
outtextxy(size/(_k+),size/,poi,bl[k]);
return ;
}
void init()
{
initgraph(size*+jg*+_lb*,*tou+jg*+han+size*);
setcaption("");
SetTransparent(getHWnd,,BLACK);
setrendermode(RENDER_MANUAL);
for(int i=;i<=;i+=)
{
bl[i]=newimage(size,size);
initblock(i);
}
setbkcolor(bk);
}
int main()
{
scanf("%d",&see);
srand(see);
fstream _file;
_file.open("set.txt",ios::in);
if(!_file)
{
freopen("set.txt","w",stdout);
if(MessageBox(NULL,"你还没建配置文件,是否自动创建\nUnless you know exactly what you're doing,\nis is recommended that you click 确定","我**你妈",MB_OKCANCEL)==)
printf("100\n20\n20\n10\n100\n10\n10\n1\n102\n204\n255\n0\n0\n0\n248\n217\n111\n");
else
system("notepad set.txt");
fclose(stdout);
}
freopen("set.txt","r",stdin);
scanf("%d%d%d%d%d",&size,&zj,&jg,&_lb,&tou);
scanf("%d%d%d%d%d",&han,&sd,&yc,&bkr,&bkg);
scanf("%d%d%d%d%d",&bkb,&wzr,&wzg,&wzb,&btr);
scanf("%d%d",&btg,&btb);
fclose(stdin);
bk=EGERGB(bkr,bkg,bkb);
wz=EGERGB(wzr,wzg,wzb);
bt=EGERGB(btr,btg,btb);
init();
add();
while(true)
{
if(over())
return ;
if(bo)
add();
bo=;
int c=GetDirection();
switch(c)
{
case :
_left();
if(!bo)
p[]=;
break;
case :
_up();
if(!bo)
p[]=;
break;
case :
_right();
if(!bo)
p[]=;
break;
case :
_down();
if(!bo)
p[]=;
break;
}
for(int i=;i<=;i++)
for(int j=;j<=;j++)
a[i][j]=abs(a[i][j]);
}
return ;
}

【水】基于ege的2048的更多相关文章

  1. 【水】基于ege的简单3D模拟

    我们模拟从被观察物体射出光线,在眼球焦点交汇,然后打到视网膜上成像 ——足够了吧,剩下的难度应该是普及- 只是有一些常数可以自己调一下,看着顺眼就好 #include <graphics.h&g ...

  2. 基于jQuery的2048小游戏设计(网页版)

    上周模仿一个2048小游戏,总结一下自己在编写代码的时候遇到的一些坑. 游戏规则:省略,我想大部分人都玩过,不写了 源码地址:https://github.com/xinhua6/2048game.g ...

  3. 基于linux 的2048

    在 debian 下写了一个 2048, 效果如下: 感兴趣的朋友可以在这里(http://download.csdn.net/download/kamsau/7330933)下载. 版权声明:本文为 ...

  4. D4下午

    开始学图论辣 图的基本模型 图是点和边组成的集合体,G = <V, E> v是点集,e是边集 还有就是有向图无向图啥的 算了太水了不写了 提几个没大见过的吧 环 环上任意两点间可以随意到达 ...

  5. 基于Monte Carlo方法的2048 A.I.

    2048 A.I. 在 stackoverflow 上有个讨论:http://stackoverflow.com/questions/22342854/what-is-the-optimal-algo ...

  6. 从零开始的DIY智能家居 - 基于 ESP32 的智能水浊度传感器

    前言 家里有个鱼缸养了几条鱼来玩玩,但是换水的问题着实头疼,经常一个不注意就忘记换水,鱼儿就没了.o(╥﹏╥)o 在获得 Spirit 1 边缘计算机 后就相当于有了一个人智能设备服务器,可以自己开发 ...

  7. (原创)基于FPGA的调光流水灯(Verilog,CPLD/FPGA)

    1.Abstract     前几天做了一个呼吸灯,觉得确实挺有意思的:可惜的是只有一个灯管亮,板子上有四个灯,要是能让这些灯有序地亮起来,那应该更有趣味了!跟传统的一样,逻辑上做成一个流水灯的样式, ...

  8. 2048聚合版开源代码,cocos2d-js编写,基于CocosEditor开发工具,可运行Android,ios,html5等

    1. [代码][JavaScript]代码         /** * @GameName : * 2048 * * @DevelopTool: * Cocos2d-x Editor (CocosEd ...

  9. 基于MFC对话框的2048游戏

    在之前一篇<简单数字拼板游戏学习>基础上修改,地址:http://www.cnblogs.com/fwst/p/3706483.html 开发环境:Windows 7/ Visual St ...

随机推荐

  1. 如何优化用SQL语句INSERT INTO … SELECT插入数据时锁全表的问题

    1.binlog format 启用Row Based Replication(行复制)模式: SET GLOBAL binlog_format = 'ROW'; 如果你想永久的启用这个模式,请修改m ...

  2. PHP变量入门教程(2)超全局变量,总共9个

    PHP 超全局变量 $GLOBALS 包含一个引用指向每个当前脚本的全局范围内有效的变量.该数组的键标为全局变量的 名称.从 PHP 3 开始存在 $GLOBALS 数组. $_SERVER 变量由 ...

  3. 混合开发 webview 中file 控件 点击后无反应解决方法

    最近在做个项目 ,需要 使用 file 控件上传 图片到服务器 ,在手机浏览器中 可以正常选择照片,但是放到 android 应用中的webview中,file 控件点击后就没有反应. 百度了一番后, ...

  4. Wireshark抓包工具

    首先下载并安装Wireshark软件,最好选择中文版,因为会使你用的更顺手. 安装完毕之后,双击打开Wireshark软件,主界面还是比较清晰明了的,可是怎么用还是稀里糊涂的吧. 点击菜单栏红圈中的选 ...

  5. Unity3D代码旋转

    subGameObject.transform.Rotate (,,,Space.Self); 一行代码

  6. AlertDialog错误

    Unable to add window token null is not for an application AlertDialog.Builder localBuilder = new Ale ...

  7. Java的native方法

    一. 什么是Native Method   简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非j ...

  8. [Linux]使用PHP编写Gearman的Worker守护进程

    在我之前的文章中,介绍过Gearman的使用.在我的项目中,我使用了PHP来编写一直运行的Worker.如果按照Gearman官方推荐的例子,只是简单的一个循环来等待任务,会有一些问题,包括:1.当代 ...

  9. ACM/ICPC 之 网络流入门-EK算法(参考模板)(POJ1273)

    基于残留网络与FF算法的改进-EK算法,核心是将一条边的单向残留容量的减少看做反向残留流量的增加. //网络流 //EK算法 //Time:16Ms Memory:348K #include<i ...

  10. Dictionary读取键值的快捷方法

    对泛型集合Dictionary<T,T> 进行读取键值是经常的操作,一般情况下,都是通过keys 和values进行键值的读取操作: eg: foreach (var item in di ...