不要问我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. epoll ET模式陷阱分析

    0. 前言 这篇文章主要记录在使用epoll实现NIO接入时所遇到的问题. 1. epoll简介 epoll是Linux下提供的NIO,其主要有两种模式,ET(Edge trige)和LT(Level ...

  2. Git 学习笔记参考

    1.参考学习资料 网上资料: http://www.cnblogs.com/aoguren/p/4189086.html http://www.liaoxuefeng.com/wiki/0013739 ...

  3. sql语句修改列

    1.修改列名的常用语句 exec sp_rename '[dbo].[Table_1].[birthday]','birth'  --将表中列名为birthday改为birdh 属性不变,用的是数据库 ...

  4. 【Alpha】Daily Scrum Meeting第一次

    一.本次Daily Scrum Meeting主要内容 代码任务细分 服务器搭建 每个人时间分配及安排 二.项目进展 学号尾数 今天做的任务 任务完成度 明天要做的任务 612 写代码框架 30% 主 ...

  5. Alpha总结

    一.预期计划 1.时间:11月7日--11月17日 2.小组分工 角色:程序员.美工.文档.测试 这个阶段以编码为主,每个组员参与编码,同时各自根据自己擅长的方面主要负责一个部分. 项目编码工作分工: ...

  6. java7

    1:Eclipse的概述使用(掌握) 请参照ppt和课堂练习.txt 2:API的概述(了解) (1)应用程序编程接口. (2)就是JDK提供给我们的一些提高编程效率的java类. 3:Object类 ...

  7. ffmpeg-20160828-bin.7z

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 5 屏幕横向放大 20 像素 6 屏幕横向缩小 20 像素 S 下一帧 [ -2秒 ] +2 ...

  8. objccn-iOS上的相机捕捉

    在第一台iPhone时,在app里面整合相机的唯一方法就是使用UIImagePickerController.到了iOS4,发布了更灵活的AVFoundation框架. UIImagePickerCo ...

  9. nfs部署和优化

    nfs--网络文件系统 1.说明:允许一个系统在网络上与他人共享目录和文件 2.好处:通过nfs服务,就可以让这个机器访问远程的文件,像访问自己的文件一样,属于cs通信   3.原理说明:假设有A,B ...

  10. hyperV中修改centos分辨率

    grubby --update-kernel=ALL --args="video=hyperv_fb:1366x768"