void main() { initgraph(640, 480); setcaption("贪吃蛇游戏 作者;电子141丶赵磊"); setfont(100,80,"宋体"); xyprintf(90,100,"贪吃蛇"); setfont(20,10,"宋体"); xyprintf(90,350,"暂停:空格键 方向:上 下 左 右"); xyprintf(90,300,"按任意键开始游戏!!! 通关有奖励!!!"); getch(); closegraph(); initgraph(640, 480); rectangle(10,10,500,470); gameplay(); getch(); closegraph(); }
static void drawsettings_content(int x, int y, int w, int height) { setcolor(C_TITLE); setfont(FONT_TEXT); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 5, "Name"); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 29, "Status Message"); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 123, "Audio Input Device"); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 147, "Audio Output Device"); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 171, "Video Input Device"); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 228, "NOT YET"); setfont(FONT_SELF_NAME); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 54, "Tox ID"); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 76, "Preview"); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 113, "Device Selection"); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 195, "DPI Settings"); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 218, "Save Settings"); }
int main(void) { int i; LOGFONT f; int where_table[] = {2, 3, 4, 6, 8, 10, 12, 15, 16, 20}; initgraph(640, 480); loadimage(&welcome_bk, "images/welcome_bk.jpg"); getfont(&f); f.lfHeight = 16; strcpy(f.lfFaceName, "宋体"); f.lfQuality = ANTIALIASED_QUALITY; setfont(&f); // 设置字体样式 welcome(); for(i = 0; i < 10; i++) { cleardevice(); draw_map(where_table[i]); game(where_table[i], i); fflush(stdin); getch(); } cleardevice(); f.lfHeight = 72; setfont(&f); outtextxy(150, 180, "通关训练!"); f.lfHeight = 12; setfont(&f); outtextxy(180, 400, "恭喜您获得了“点灯”挑战资格,敬请期待后序内容!"); Sleep(5000); closegraph(); return 0; }
void world_display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3ub(255, 255, 255); setfont("helvetica", 18); if (mode == GL_LINEAR) { drawstr(100, 80, "end - z"); drawstr(30, 95, "f = "); drawstr(90, 110, "end - start"); glBegin(GL_LINE_STRIP); glVertex2i(85, 90); glVertex2i(185, 90); glEnd(); } else { drawstr(90, 80, "- (density * z)"); drawstr(30, 95, "f = e"); if (mode == GL_EXP2) drawstr(208, 68, "2"); } setfont("helvetica", 12); drawstr(20, 180, "z is the distance in eye coordinates"); drawstr(20, 195, "from origin to fragment being fogged."); glutSwapBuffers(); }
void rules() { initgraph(850,600); setbkcolor(DARKGRAY); cleardevice(); setcolor(LIGHTGREEN); setfont(60,0,"华文隶书"); outtextxy(270,1,"游戏介绍"); setcolor(LIGHTCYAN); setfont(40,0,"华文行楷"); outtextxy(20,65,"1.黄颜色的小方块表示美味的食物。"); outtextxy(20,110,"2.紫色的实心小圆表示可恶的地雷。"); outtextxy(20,160,"3.绿色的实心小圆表示可恨的毒草。"); outtextxy(20,210,"4.小蛇每吃到一个食物,身体便会增加一节。"); outtextxy(20,260,"5.小蛇碰到地雷,身体会被炸掉一半。要小心哦!!"); outtextxy(20,310,"6,小蛇碰到毒草,身体会变短一节。要小心哦!!"); outtextxy(20,360,"7.小蛇的头撞到四周的墙会死。"); outtextxy(20,410,"8.小蛇的头撞到自己的身体也会死亡。"); outtextxy(20,460,"9.用鼠标点击下面的“→”区域,回到主页面。"); outtextxy(20,510,"10.祝您好运!!!"); setcolor(BROWN); setfont(60,0,"华文隶书"); outtextxy(580,520,"→主页面"); MOUSEMSG m; while(true) { m=GetMouseMsg(); switch(m.uMsg) { case WM_LBUTTONDOWN: if(m.x>=580&&m.y>=520&&m.y<=580&&m.x<=820) main(); } } }
static void drawfriend(int x, int y, int w, int height) { FRIEND *f = sitem->data; drawalpha(BM_CONTACT, LIST_RIGHT + SCALE * 5, SCALE * 5, BM_CONTACT_WIDTH, BM_CONTACT_WIDTH, LIST_MAIN); setcolor(C_TITLE); setfont(FONT_TITLE); drawtextrange(LIST_RIGHT + 30 * SCALE, width - 62 * SCALE, 9 * SCALE, f->name, f->name_length); setcolor(LIST_MAIN); setfont(FONT_STATUS); drawtextrange(LIST_RIGHT + 30 * SCALE, width - 62 * SCALE, 16 * SCALE, f->status_message, f->status_length); if(!f->calling) { button_call.c1 = C_GREEN; button_call.c2 = C_GREEN_LIGHT; button_call.c3 = C_GREEN_LIGHT; button_video.c1 = C_GREEN; button_video.c2 = C_GREEN_LIGHT; button_video.c3 = C_GREEN_LIGHT; return; } button_call.c1 = C_GRAY; button_call.c2 = C_GRAY; button_call.c3 = C_GRAY; button_video.c1 = C_GRAY; button_video.c2 = C_GRAY; button_video.c3 = C_GRAY; BUTTON *b; if(f->calling & 4) { b = &button_video; } else { b = &button_call; } switch(f->calling & 3) { case CALL_INVITED: { b->c1 = C_YELLOW; b->c2 = C_YELLOW_LIGHT; break; } case CALL_RINGING: { b->c1 = C_GRAY; b->c2 = C_GRAY; break; } case CALL_OK: { b->c1 = C_RED; b->c2 = C_RED_LIGHT; break; } } }
void lighting_display(void) { setfont("helvetica", 18); drawstr(10, light_pos[0].y, "GLfloat light_pos[ ] = {"); drawstr(10, light_Ka[0].y, "GLfloat light_Ka[ ] = {"); drawstr(10, light_Kd[0].y, "GLfloat light_Kd[ ] = {"); drawstr(10, light_Ks[0].y, "GLfloat light_Ks[ ] = {"); drawstr(light_pos[0].x+50, light_pos[0].y, ","); drawstr(light_pos[1].x+50, light_pos[1].y, ","); drawstr(light_pos[2].x+50, light_pos[2].y, ","); drawstr(light_pos[3].x+50, light_pos[3].y, "};"); drawstr(light_Ka[0].x+50, light_Ka[0].y, ","); drawstr(light_Ka[1].x+50, light_Ka[1].y, ","); drawstr(light_Ka[2].x+50, light_Ka[2].y, ","); drawstr(light_Ka[3].x+50, light_Ka[3].y, "};"); drawstr(light_Kd[0].x+50, light_Kd[0].y, ","); drawstr(light_Kd[1].x+50, light_Kd[1].y, ","); drawstr(light_Kd[2].x+50, light_Kd[2].y, ","); drawstr(light_Kd[3].x+50, light_Kd[3].y, "};"); drawstr(light_Ks[0].x+50, light_Ks[0].y, ","); drawstr(light_Ks[1].x+50, light_Ks[1].y, ","); drawstr(light_Ks[2].x+50, light_Ks[2].y, ","); drawstr(light_Ks[3].x+50, light_Ks[3].y, "};"); setfont("helvetica", 12); drawstr(10, light_Ks[0].y+30, "glLightfv(GL_LIGHT0, GL_POSITION, light_pos);"); drawstr(10, light_Ks[1].y+50, "glLightfv(GL_LIGHT0, GL_AMBIENT, light_Ka);"); drawstr(10, light_Ks[2].y+70, "glLightfv(GL_LIGHT0, GL_DIFFUSE, light_Kd);"); drawstr(10, light_Ks[3].y+90, "glLightfv(GL_LIGHT0, GL_SPECULAR, light_Ks);"); setfont("helvetica", 18); cell_draw(&light_pos[0]); cell_draw(&light_pos[1]); cell_draw(&light_pos[2]); cell_draw(&light_pos[3]); cell_draw(&light_Ka[0]); cell_draw(&light_Ka[1]); cell_draw(&light_Ka[2]); cell_draw(&light_Ka[3]); cell_draw(&light_Kd[0]); cell_draw(&light_Kd[1]); cell_draw(&light_Kd[2]); cell_draw(&light_Kd[3]); cell_draw(&light_Ks[0]); cell_draw(&light_Ks[1]); cell_draw(&light_Ks[2]); cell_draw(&light_Ks[3]); glColor3ub(255, 255, 255); }
void drawcalendarBG(void) { int i; setcolor(RGB(255,0,0)); setfont(60,30,"黑体"); outtextxy(30,30,"Perpetual Calendar"); setcolor(RGB(140,140,140)); rectangle(50,150,540,500); for(i=0;i<6;i++){ line(50,200+i*HEIT,540,200+i*HEIT); line(120+i*WEIT,150,120+i*WEIT,500); } setfillcolor(RGB(54,197,233)); for(i=0;i<7;i++) fillrectangle(50+i*WEIT,150,120+i*WEIT,200); setcolor(RGB(255,255,0)); setfont(30,15,"黑体"); outtextxy(70,160,"日"); outtextxy(140,160,"一"); outtextxy(210,160,"二"); outtextxy(280,160,"三"); outtextxy(350,160,"四"); outtextxy(420,160,"五"); outtextxy(490,160,"六"); setcolor(RGB(140,140,140)); rectangle(INFX,INFY,690,390); for(i=0;i<5;i++) line(INFX,INFY+(i+1)*HEII,INFX+WEII,INFY+(i+1)*HEII); setfillcolor(RGB(54,197,233)); fillrectangle(INFX,INFY,INFX+WEII,INFY+HEII); setcolor(RGB(255,255,0)); setfont(30,15,"黑体"); outtextxy(INFX+25,INFY+10,"Today"); setcolor(RGB(255,10,10)); setfillcolor(RGB(255,10,10)); fillrectangle(INFX+10,INFY+HEII*6+10,INFX+20,INFY+HEII*6+20); setcolor(RGB(50,245,55)); setfillcolor(RGB(50,245,55)); fillrectangle(INFX+10,INFY+HEII*6+30,INFX+20,INFY+HEII*6+40); setcolor(RGB(45,45,250)); setfillcolor(RGB(45,45,250)); fillrectangle(INFX+10,INFY+HEII*6+50,INFX+20,INFY+HEII*6+60); setcolor(RGB(140,140,140)); setfont(10,7,""); outtextxy(INFX+30,INFY+HEII*6+10,"YOU CHOOSE"); outtextxy(INFX+30,INFY+HEII*6+30,"TODAY"); outtextxy(INFX+30,INFY+HEII*6+50,"GENERAL"); }
void spotlight_display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3ub(255, 255, 255); lighting_display(); setfont("helvetica", 18); drawstr(10, spot_direction[0].y, "GLfloat spot_direction[ ] = {"); drawstr(10, spot_exponent.y, "GLint spot_exponent = " "spot_cutoff = "); drawstr(spot_direction[0].x+50, spot_direction[0].y, ","); drawstr(spot_direction[1].x+50, spot_direction[1].y, ","); drawstr(spot_direction[2].x+50, spot_direction[2].y, "};"); drawstr(spot_exponent.x+40, spot_cutoff.y, ","); drawstr(spot_cutoff.x+40, spot_cutoff.y, ";"); setfont("helvetica", 12); drawstr(10, spot_cutoff.y+30, "glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction);"); drawstr(10, spot_cutoff.y+50, "glLighti(GL_LIGHT0, GL_SPOT_EXPONENT, spot_exponent);"); drawstr(10, spot_cutoff.y+70, "glLighti(GL_LIGHT0, GL_SPOT_CUTOFF, spot_cutoff);"); setfont("helvetica", 18); drawstr(10, Kc.y, "GLfloat Kc = , Kl = , Kq = ;"); setfont("helvetica", 12); drawstr(10, Kq.y+30, "glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, Kc);"); drawstr(10, Kq.y+50, "glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, Kl);"); drawstr(10, Kq.y+70, "glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, Kq);"); setfont("helvetica", 18); cell_draw(&spot_direction[0]); cell_draw(&spot_direction[1]); cell_draw(&spot_direction[2]); cell_draw(&spot_exponent); cell_draw(&spot_cutoff); cell_draw(&Kc); cell_draw(&Kl); cell_draw(&Kq); if (!selection) { glColor3ub(255, 255, 0); drawstr(10, 525, "Click on the arguments and move the mouse to modify values."); } glutSwapBuffers(); }
_Bool edit_mmove(EDIT *edit, int px, int py, int width, int height, int x, int y, int dx, int dy) { if(utox_window_baseline && py > utox_window_baseline - font_small_lineheight - 4 * SCALE) { y += py - (utox_window_baseline - font_small_lineheight - 4 * SCALE); py = utox_window_baseline - font_small_lineheight - 4 * SCALE; } _Bool need_redraw = 0; _Bool mouseover = inrect(x, y, 0, 0, width - (edit->multiline ? SCROLL_WIDTH : 0), height); if(mouseover) { cursor = CURSOR_TEXT; } if(mouseover != edit->mouseover) { edit->mouseover = mouseover; if(edit != active_edit) { need_redraw = 1; } } if(edit->multiline) { need_redraw |= scroll_mmove(edit->scroll, px, py, width, height, x, y, dx, dy); y += scroll_gety(edit->scroll, height); } if(edit == active_edit && edit_select) { if (edit->select_completely) { edit_setfocus(edit); need_redraw = 1; return need_redraw; } setfont(FONT_TEXT); edit_sel.p2 = hittextmultiline(x - 2 * SCALE, width - 4 * SCALE - (edit->multiline ? SCROLL_WIDTH : 0), y - 2 * SCALE, INT_MAX, font_small_lineheight, edit->data, edit->length, edit->multiline); STRING_IDX start, length; if(edit_sel.p2 > edit_sel.p1) { start = edit_sel.p1; length = edit_sel.p2 - edit_sel.p1; } else { start = edit_sel.p2; length = edit_sel.p1 - edit_sel.p2; } if(start != edit_sel.start || length != edit_sel.length) { edit_sel.start = start; edit_sel.length = length; need_redraw = 1; } } else if(mouseover) { setfont(FONT_TEXT); edit->mouseover_char = hittextmultiline(x - 2 * SCALE, width - 4 * SCALE - (edit->multiline ? SCROLL_WIDTH : 0), y - 2 * SCALE, INT_MAX, font_small_lineheight, edit->data, edit->length, edit->multiline); } return need_redraw; }
static void drawgroup(int UNUSED(x), int UNUSED(y), int UNUSED(w), int UNUSED(height)) { GROUPCHAT *g = sitem->data; drawalpha(BM_GROUP, LIST_RIGHT + SCALE * 5, SCALE * 5, BM_CONTACT_WIDTH, BM_CONTACT_WIDTH, LIST_MAIN); setcolor(C_TITLE); setfont(FONT_TITLE); drawtext(LIST_RIGHT + 30 * SCALE, 1 * SCALE, g->name, g->name_length); setcolor(LIST_MAIN); setfont(FONT_STATUS); drawtext(LIST_RIGHT + 30 * SCALE, 8 * SCALE, g->topic, g->topic_length); setcolor(GRAY(150)); uint32_t i = 0; int k = LIST_RIGHT + 30 * SCALE; uint64_t time = get_time(); unsigned int pos_y = 15; while(i < g->peers) { uint8_t *name = g->peername[i]; if(name) { uint8_t buf[134]; memcpy(buf, name + 1, name[0]); memcpy(buf + name[0], ", ", 2); int w = textwidth(buf, name[0] + 2); if (i == g->our_peer_number) { setcolor(C_GREEN); } else if (time - g->last_recv_audio[i] <= (uint64_t)1 * 1000 * 1000 * 1000) { setcolor(C_RED); } else { setcolor(GRAY(150)); } if(k + w >= (utox_window_width - 32 * SCALE)) { if (pos_y == 15) { pos_y += 6; k = LIST_RIGHT + 30 * SCALE; } else { drawtext(k, pos_y * SCALE, (uint8_t*)"...", 3); break; } } drawtext(k, pos_y * SCALE, buf, name[0] + 2); k += w; } i++; } }
/* Draw an invite to be a friend window */ static void drawfriendreq(int UNUSED(x), int UNUSED(y), int UNUSED(w), int UNUSED(height)) { FRIENDREQ *req = sitem->data; setcolor(C_TITLE); setfont(FONT_SELF_NAME); drawstr(LIST_RIGHT + SCALE * 5, SCALE * 10, FRIENDREQUEST); setcolor(LIST_MAIN); setfont(FONT_STATUS); drawtextrange(LIST_RIGHT + 5 * SCALE, utox_window_width, 20 * SCALE, req->msg, req->length); }
static void draw_group(int x, int UNUSED(y), int UNUSED(w), int UNUSED(height)) { GROUPCHAT *g = flist_get_groupchat(); if (!g) { LOG_ERR("Group", "Could not get selected groupchat."); return; } drawalpha(BM_GROUP, x + SCALE(10), SCALE(10), BM_CONTACT_WIDTH, BM_CONTACT_WIDTH, COLOR_MAIN_TEXT); setcolor(COLOR_MAIN_TEXT); setfont(FONT_TITLE); drawtextrange(x + SCALE(60), settings.window_width - SCALE(64), SCALE(2), g->name, g->name_length); setcolor(COLOR_MAIN_TEXT_SUBTEXT); setfont(FONT_STATUS); drawtextrange(x + SCALE(60), settings.window_width - SCALE(64), SCALE(16), g->topic, g->topic_length); uint32_t i = 0; unsigned k = x + SCALE(60); unsigned int pos_y = 15; while (i < g->peer_count) { GROUP_PEER *peer = g->peer[i]; if (peer && peer->name_length) { char buf[TOX_MAX_NAME_LENGTH]; int text_length = snprintf((char *)buf, TOX_MAX_NAME_LENGTH, "%.*s, ", (int)peer->name_length, peer->name); unsigned w = textwidth(buf, text_length); if (peer->name_color) { setcolor(peer->name_color); } else { setcolor(COLOR_GROUP_PEER); } if (k + w >= (settings.window_width - SCALE(64))) { if (pos_y == 15) { pos_y += 6; k = x + SCALE(60); } else { drawtext(k, SCALE(pos_y * 2), "...", 3); break; } } drawtext(k, SCALE(pos_y * 2), buf, text_length); k += w; } i++; } }
static void drawadd_content(int x, int y, int width, int height) { setcolor(C_TITLE); setfont(FONT_TEXT); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 5, "Tox ID"); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 29, "Message"); if(addfriend_status) { setfont(FONT_MISC); setcolor(C_RED); drawtext(LIST_RIGHT + SCALE * 5, y + SCALE * 83, addstatus[addfriend_status - 1].str, addstatus[addfriend_status - 1].length); } }
/* Header for friend chat window */ static void drawfriend(int UNUSED(x), int UNUSED(y), int UNUSED(w), int UNUSED(height)) { FRIEND *f = sitem->data; drawalpha(BM_CONTACT, LIST_RIGHT + SCALE * 5, SCALE * 5, BM_CONTACT_WIDTH, BM_CONTACT_WIDTH, LIST_MAIN); setcolor(C_TITLE); setfont(FONT_TITLE); drawtextrange(LIST_RIGHT + 30 * SCALE, utox_window_width - 92 * SCALE, 9 * SCALE, f->name, f->name_length); setcolor(LIST_MAIN); setfont(FONT_STATUS); drawtextrange(LIST_RIGHT + 30 * SCALE, utox_window_width - 92 * SCALE, 16 * SCALE, f->status_message, f->status_length); }
/* Draw add a friend window */ static void drawadd(int UNUSED(x), int UNUSED(y), int UNUSED(w), int height) { setcolor(C_TITLE); setfont(FONT_SELF_NAME); drawstr(LIST_RIGHT + SCALE * 5, SCALE * 10, ADDFRIENDS); setcolor(C_TITLE); setfont(FONT_TEXT); drawstr(LIST_RIGHT + SCALE * 5, LIST_Y + SCALE * 5, TOXID); drawstr(LIST_RIGHT + SCALE * 5, LIST_Y + SCALE * 29, MESSAGE); if(addfriend_status) { setfont(FONT_MISC); setcolor(C_RED); STRING *str; switch(addfriend_status) { case ADDF_SENT: str = SPTR(REQ_SENT); break; case ADDF_DISCOVER: str = SPTR(REQ_RESOLVE); break; case ADDF_BADNAME: str = SPTR(REQ_INVALID_ID); break; case ADDF_NONAME: str = SPTR(REQ_EMPTY_ID); break; case ADDF_TOOLONG: //if message length is too long. str = SPTR(REQ_LONG_MSG); break; case ADDF_NOMESSAGE: //if no message (message length must be >= 1 byte). str = SPTR(REQ_NO_MSG); break; case ADDF_OWNKEY: //if user's own key. str = SPTR(REQ_SELF_ID); break; case ADDF_ALREADYSENT: //if friend request already sent or already a friend. str = SPTR(REQ_ALREADY_FRIENDS); break; case ADDF_BADCHECKSUM: //if bad checksum in address. str = SPTR(REQ_BAD_CHECKSUM); break; case ADDF_SETNEWNOSPAM: //if the friend was already there but the nospam was different. str = SPTR(REQ_BAD_NOSPAM); break; case ADDF_NOMEM: //if increasing the friend list size fails. str = SPTR(REQ_NO_MEMORY); break; case ADDF_UNKNOWN: //for unknown error. case ADDF_NONE: //this case must never be rendered, but if it does, assume it's an error default: str = SPTR(REQ_UNKNOWN); break; } drawtextmultiline(LIST_RIGHT + SCALE * 5, utox_window_width - BM_SBUTTON_WIDTH - 5 * SCALE, LIST_Y + SCALE * 83, 0, height, font_small_lineheight, str->str, str->length, 0xFFFF, 0, 1); } }
static void drawsettings_content(int x, int y, int w, int height) { setcolor(C_TITLE); setfont(FONT_TEXT); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 5, "Name"); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 29, "Status Message"); drawtextrange(LIST_RIGHT + SCALE * 5, width - SCALE * 5, y + SCALE * 64, self.id, sizeof(self.id)); setfont(FONT_SELF_NAME); drawstr(LIST_RIGHT + SCALE * 5, y + SCALE * 54, "Tox ID"); }
int main() { initgraph(640, 480); //设置视口矩形区域为(200,100) - (330, 130) //最后一个参数为1表示出了这个区域的图形会被裁剪 //后面所绘画的图形的原点坐标(0,0),会映射到(200,100) setviewport(200, 100, 330, 130, 1); //画一些文字,注意文字会因区域被裁剪的效果 setcolor(EGERGB(0x0, 0xFF, 0x0)); setfontbkcolor(RGB(0x80, 0x00, 0x80)); setfont(18, 0, "宋体"); outtextxy(0, 0, "Hello EGE Graphics"); setbkmode(TRANSPARENT); outtextxy(0, 20, "Hello EGE Graphics"); //还原视口 setviewport(0, 0, getwidth(), getheight(), 1); outtextxy(0, 0, "Hello EGE Graphics"); getch(); closegraph(); return 0; }
int info_scene() { cleardevice(); setcolor(0xFFFFFF); Mira mira(640, 300); auto p_imagetext(newimage(440, 130)); char infostr[] = "欢迎使用Easy Graphics Enginge (EGE) V0.3.8 ,本库是一个面向新手,或者面向快速图形程序开发的图形库,使用方便快捷,容易上手,特别适合于新手学习图形程序设计。本程序为安装程序,如果你要继续安装,请按'y'键继续"; setcolor(0xFFFF, p_imagetext); setfont(18, 0, "宋体", p_imagetext); setbkmode(TRANSPARENT, p_imagetext); for(int i = 0; i < 8; ++i) { outtextrect(5, 5, 440, 280, infostr, p_imagetext); imagefilter_blurring(p_imagetext, 0xF0, 0x100); } setcolor(0xFF, p_imagetext); outtextrect(5, 5, 440, 280, infostr, p_imagetext); for(; kbhit() == 0; delay_fps(60)) { mira.update(); mira.render(0, 480 - 300); putimage(100, 50, p_imagetext); } delimage(p_imagetext); return getch(); }
void select() { initgraph(640,480); setbkcolor(GREEN); cleardevice(); setcolor(YELLOW); setfont(80,0,"华文行楷"); outtextxy(200,40,"第一关"); outtextxy(200,200,"第二关"); outtextxy(200,360,"第三关"); MOUSEMSG m; while(true) { m=GetMouseMsg(); switch(m.uMsg) { case WM_LBUTTONDOWN: if(m.x>=200&&m.y>=40&&m.y<=120&&m.x<=440) design_cp1(); if(m.x>=200&&m.y>=200&&m.y<=280&&m.x<=440) design_cp2(); if(m.x>=200&&m.y>=360&&m.y<=4400&&m.x<=440) design_cp3(); } } }
_Bool button_mmove(BUTTON *b, int UNUSED(x), int UNUSED(y), int width, int height, int mx, int my, int UNUSED(dx), int UNUSED(dy)) { // Ensure that font is set before calculating position and width. setfont(FONT_SELF_NAME); int real_x = 0, real_w = width; calculate_pos_and_width(b, &real_x, &real_w); _Bool mouseover = inrect(mx, my, real_x, 0, real_w, height); if(mouseover) { if(!b->disabled) { cursor = CURSOR_HAND; } if(maybe_i18nal_string_is_valid(&b->tooltip_text)) { tooltip_new(&b->tooltip_text); } } if(mouseover != b->mouseover) { b->mouseover = mouseover; return 1; } return 0; }
static void hint(void) { BEGIN_2D_OVERLAY (gw, gh); glPushAttrib (GL_ENABLE_BIT); glDisable (GL_LIGHTING); glColor3f (0.88, 0.02, 0.89); setfont ("9x15",0); drawstr (10,gh-20, "r : switch raytrace"); drawstr (10,gh-40, "t : show the trace"); drawstr (10,gh-80, "Press '1' or '2' to change mode "); drawstr (10,gh-100, "a : AUTO ON/OFF MODE %d", mode); if( _auto ) { drawstr (10,gh-60, "+ : SPEED++ / - : SPEED--"); glColor3f (1, 0.02, 0.02); drawstr (10, gh-120, "AUTO : ON / SPEED = %.3f", omega); } else { drawstr (10,gh-60, "+ : clockwise - : counter clockwise"); glColor3f (.5, 0.5, 0.5); drawstr (10, gh-120, "AUTO : OFF"); } glPopAttrib(); END_2D_OVERLAY(); }
int main() { initgraph(640, 480); setfont(18, 0, "宋体"); int k = 0; // 这个循环,is_run判断窗口是否还在,delay_fps是延时 // 后面讲动画的时候会详细讲解,现不要在此纠结 for ( ; is_run(); delay_fps(60)) { char str[32]; int x, y; //获取鼠标坐标,此函数不等待。若鼠标移出了窗口,那么坐标值不会更新 //特殊情况是,你按着鼠标键不放,拖出窗口,这样坐标值会依然更新 mousepos(&x, &y); //格式化输出为字符串,用于后面输出 sprintf(str, "%4d %4d", x, y); outtextxy(0, 0, str); } closegraph(); return 0; }
void contextmenu_draw(void) { CONTEXTMENU *b = &context_menu; if(!b->open) { return; } int x, w, active_h; calculate_pos_and_width(b, &x, &w); draw_rect_fill(x, b->y, w, b->height, COLOR_BACKGROUND_MAIN); active_h = b->y + b->over * CONTEXT_HEIGHT; draw_rect_fill(x, active_h, w, CONTEXT_HEIGHT, COLOR_ACTIVEOPTION_BACKGROUND); int i; for(i = 0; i != b->count; i++) { // Ensure that font is set before calculating position and width. STRING *name = b->ondisplay(i, b); setfont(FONT_TEXT); setcolor((active_h == b->y + i * CONTEXT_HEIGHT) ? COLOR_ACTIVEOPTION_TEXT : COLOR_MAIN_TEXT); drawtext(x + UTOX_SCALE(2), b->y + UTOX_SCALE(2) + i * CONTEXT_HEIGHT, name->str, name->length); } draw_rect_frame(x, b->y, w, b->height, COLOR_EDGE_ACTIVE); }
int getpath_scene() { //HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio char strpath[MAX_PATH]; HKEY key; int it; cleardevice(); setfont(18, 0, "宋体"); outtextrect(100, 30, 440, 280, "以下显示本程序所搜索到的IDE安装路径,如果有找不到的,请把本程序连同子文件夹一起复制到安装目录下,然后再在那个目录下运行本程序。例如如果你使用的是VC6的绿色版,那就可能会找不到,假如你安装在'D:\\Program Files\\Microsoft Visual Studio\\',那你只需要把本程序目录下的include, lib目录复制到'D:\\Program Files\\Microsoft Visual Studio\\VC98\\',并确认文件夹合并就可以了。\n如果你要继续安装,请按Y键继续"); for(it = 0; ver[it][0]; ++it) { std::sprintf(strpath, "%s%s", strbasepath, ver[it]); if(::RegOpenKeyExA(HKEY_LOCAL_MACHINE, strpath, 0, KEY_READ, &key) == ERROR_SUCCESS) { unsigned long dwtype = REG_SZ; unsigned long dwsize = MAX_PATH; if(::RegQueryValueExA(key, "ProductDir", {}, &dwtype, (unsigned char*)(installpath[it]), &dwsize)) { ::RegQueryValueExA(key, "InstallDir", {}, &dwtype, (unsigned char*)(installpath[it]), &dwsize); strcat(installpath[it], "\\mingw"); } ::RegCloseKey(key); } outtextxy(100, it * 20 + 250, installpath[it]); } //::GetCurrentDirectory(MAX_PATH, installpath[it]); //outtextxy(100, it * 20 + 250, installpath[it]); return getch(); }
int setup_scene() { cleardevice(); int it; g_output[0] = 0; setfont(14, 0, "宋体"); for(it = 0; ver[it][0]; ++it) { if(installpath[it][0] == 0) continue; copyfile(".\\", installpath[it], "include", "graphics.h"); if(it == 0) copyfile(".\\", installpath[it], "lib", "graphics.lib"); if(it == 1) copyfile(".\\", installpath[it], "lib", "graphics05.lib"); if(it == 2 || it == 3) copyfile(".\\", installpath[it], "lib", "graphics08.lib"); if(it == 4) copyfile(".\\", installpath[it], "lib", "libgraphics.a"); } if(g_output[0]) { outtextxy(10, 10, "以下为复制记录列表,如果有发生错误的话,可能需要你手工安装"); } outtextrect(10, 30, 600, 400, g_output); outtextxy(10, 400, "安装步骤执行完成,按任意键退出本程序"); return getch(); }
void drawcalendar(void) { int i; int num; int x,y; DAY_NUM T_day; T_day=CO_day; T_day.day=1; x=T_day.week=count_week(T_day.year%100,T_day.year/100,T_day.month,T_day.day); y=1; num=month[leap_year(T_day.year)][T_day.month-1]; setfont(40,20,""); for(i=0;i<num;i++,T_day.day++){ if(T_day.year==CO_day.year&&T_day.month==CO_day.month&&T_day.day==CO_day.day) setfillcolor(RGB(255,40,40)); else if(T_day.year==today.year&&T_day.month==today.month&&T_day.day==today.day) setfillcolor(RGB(50,245,55)); else setfillcolor(RGB(45,45,250)); setcolor(RGB(140,140,140)); fillrectangle(PCOX+x*WEIT,PCOY+y*HEIT,PCOX+x*WEIT+WEIT,PCOY+y*HEIT+HEIT); char str[3]={0}; sprintf(str,"%02d",i+1); setcolor(RGB(255,255,255)); outtextxy(PCOX+x*WEIT+15,PCOY+y*HEIT+5,str); x++; if(x%7==0){ y++; x=0; } } }
void messages_updateheight(MESSAGES *m) { MSG_DATA *data = m->data; if(!data) { return; } setfont(FONT_TEXT); uint32_t height = 0; MSG_IDX i = 0; while(i < data->n) { MESSAGE *msg = data->data[i]; msg->height = msgheight(msg, m->width); height += msg->height; i++; } if(get_typers(m)) { // Add space for typing notification height += font_small_lineheight + MESSAGES_SPACING; } m->height = height; data->height = height; data->width = m->width; m->panel.content_scroll->content_height = height; }
static void draw_group_settings(int x, int y, int UNUSED(width), int UNUSED(height)) { setcolor(COLOR_MAIN_TEXT); setfont(FONT_SELF_NAME); drawstr(x + SCALE(10), y + MAIN_TOP + SCALE(10), GROUP_TOPIC); drawstr(x + SCALE(10), y + MAIN_TOP + SCALE(70), GROUP_NOTIFICATIONS); }
/* * Hack to set font. */ void linemod(char *s) { char *tit; char *nam; int siz = 0; nam = s; for(tit = "charset="; *tit; ) if (*tit++ != *nam++) return; s = nam; while(*nam) switch(*nam++) { case ',': case '\n': *--nam = 0; } siz = atoi(++nam); if (siz == 0) { while (*--nam >= '0' && *nam <= '9') ; siz = (atoi(++nam)*4)/3; } if (siz == 0) siz = imPcsize; setfont(s, siz); }