不要问我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. [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)

    使用暴风魔镜SDK来操作 将魔镜的摄像头拖放到项目中: 将MoJingVrHead的Script剪切到CamRoot中: 这个时候能看到显示2个物体了,不过使用的Canvas还是显示一个: 调整Can ...

  2. 数据库性能优化常用sql脚本总结

    最近闲来无事,正好抽出时间,来总结总结 sql性能优化方面的一下小技巧,小工具.虽然都是些很杂的东西,但是我个人觉得,如果真的清楚了里面的一下指标,或许真的能抵半个DBA. 有些时候,找不到DBA或者 ...

  3. php如何防止图片盗用/盗链的两种方法

    如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文章向大家介绍php如何防止图片盗用/盗链的两种方 ...

  4. PHP系统声明式事务处理

    转自:http://www.jianshu.com/p/34261804bc45 1.数据库事务 事务(Transaction)是并发控制的基本单位.所谓的事务,它是一个操作序列,这些操作要么都执行, ...

  5. XHTML的规则

    以正确的DOCTYPE和命名空间开始文档 使用meta内容元素声明你的字符编码 用小写字母写所有元素和属性名称 给所有属性值加引号 给所有属性赋一个值 关闭所有标签 用空格和斜杠关闭“空”标签 不要在 ...

  6. PHP如何将session保存到memcached中?如何分布式保存PHP session

    session_set_save_handler无关的memcached保存session的方法 在memcached服务器上 1)下载memcached #wget http://memcached ...

  7. PHP中常见的五种设计模式

    设计模式只是为 Java架构师准备的 — 至少您可能一直这样认为.实际上,设计模式对于每个人都非常有用.如果这些工具不是 “架构太空人” 的专利,那么它们又是什么?为什么说它们在 PHP 应用程序中非 ...

  8. MongoDB Windows环境安装及配置

    MongoDB一般安装 1.首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,目前的最新版本为2.6 安装包有zip和msi格式的,这里推荐下载zip格 ...

  9. webview滑动事件 与内部html左右滑动事件冲突问题的解决办法

    最近在做个混合app , 用html做页面,然后通过webview嵌套在activity中,效果是这样: 开始还是比较顺利,增加了菜单退出按钮,返回键页面回退功能,页面加载显示加载图标(在app端实现 ...

  10. MySQL 常用SQL技巧和常见问题

    一.巧用正则表达式 二.巧用RAND() 提取随机行 利用rand() 的随机数功能,结合 order by 子句完成随机抽取某些行的功能. 三.利用 group by 的 with rollup 子 ...