没什么好讲的,具体原理就是定一个220x60的字符数组,把内容都写进数组,每时刻更新一次
display.c
#include "define.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
enum PARAMETERS{
RESOLUTION_X=220,RESOLUTION_Y=60,IMG_X=6,IMG_Y=3,
LEFT_JUSTIFYING=0,MID_JUSTIFYING=1,RIGHT_JUSTIFYING=2,
POLE_X=3*RESOLUTION_X/5,
SPLASH_Y=30,SPLASH_X=80,
DEFAULT_WATING_TIME=4,
};
//输出图像的参数
char screen[RESOLUTION_Y][RESOLUTION_X+1];
//图像存储的数组
//所有的坐标是行后列,X是横向伸展,Y是纵向伸展,所以看起来是先y后x
extern int isFileAvailable();
extern int OrderCnt;
extern Order *OrderListHead;
extern Rider *RiderListHead;
extern int CurrentTime;
extern int Balance;
extern int OrderTaken;
extern int OrderCompleted;
extern int OrderOverdue;
void initScreen();
void fillZone(int y1,int x1,int y2,int x2,char ch);
void drawStraightLine(int y1,int x1,int y2,int x2);
void printScreen();
void writeWord(char *src,int y1,int x1,int mode);
int xShift(int logic_x);
int yShift(int logic_y);
void pasteImg(Image from,int y,int x);
void drawRect(int y1,int x1,int y2,int x2);
void splash();
void displayAllElems();
void updateScreen();
Image Canteen={
"+____+|Shop|======",IMG_X,IMG_Y
};
Image Customer={
"+____+|Cust|======",IMG_X,IMG_Y
};
Image Normal={
"+____+| |======",IMG_X,IMG_Y
};
Image Road={
" ",IMG_X,IMG_Y
};
Image Man={
" Rider ",IMG_X,IMG_Y
};
Image Welcome={
" __ __ _ \\ \\ / / | | \\ \\ /\\ / /__| | ___ ___ _ __ ___ ___ \\ \\/ \\/ / _ \\ |/ __/ _ \\| '_ ` _ \\ / _ \\ \\ /\\ / __/ | (_| (_) | | | | | | __/ \\/ \\/ \\___|_|\\___\\___/|_| |_| |_|\\___|",44,6
};
Order *OrderClipDisplay=NULL;
void initScreen()
{
fillZone(0,0,RESOLUTION_Y-1,RESOLUTION_X-1,' ');
fillZone(0,RESOLUTION_X,RESOLUTION_Y-1,RESOLUTION_X,'\0');
//清理区域
drawRect(0,0,RESOLUTION_Y-1,RESOLUTION_X-1);
//画边框
drawStraightLine(2,0,2,RESOLUTION_X-1)