用户登录
用户注册

分享至

图形界面软件defin tc界面图形程序8

  • 作者: 人生如梦何必自恋
  • 来源: 51数据库
  • 2020-04-21

你看这个怎么样,不长吧。tc/win-tc运行通过.

#include<graphics.h>

#include<math.h>

#include<dos.h>

#define pi 3.1415926

#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;

#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;

#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)

void init()

{

int i,l,x1,x2,y1,y2;

setbkcolor(1);

circle(300,240,200);

circle(300,240,205);

circle(300,240,5);

for(i=0;i<60;i++)

{

if(i%5==0) l=15;

else l=5;

x1=200*cos(i*6*pi/180)+300;

y1=200*sin(i*6*pi/180)+240;

x2=(200-l)*cos(i*6*pi/180)+300;

y2=(200-l)*sin(i*6*pi/180)+240;

line(x1,y1,x2,y2);

}

}

main()

{

int x,y;

int gd=VGA,gm=2;

unsigned char h,m,s;

struct time t[1];

initgraph(&gd,&gm,"d:\\tc");

init();

setwritemode(1);

gettime(t);

h=t[0].ti_hour;

m=t[0].ti_min;

s=t[0].ti_sec;

setcolor(7);

d(150,h,30);

setcolor(14);

d(170,m,6);

setcolor(4);

d(190,s,6);

while(!kbhit())

{

while(t[0].ti_sec==s)

gettime(t);

sound(400);

delay(70);

sound(200);

delay(30);

nosound();

setcolor(4);

d(190,s,6);

s=t[0].ti_sec;

d(190,s,6);

if (t[0].ti_min!=m)

{

setcolor(14);

d(170,m,6);

m=t[0].ti_min;

d(170,m,6);

}

if(t[0].ti_hour!=h)

{

setcolor(7);

d(150,h,30);

h=t[0].ti_hour;

d(150,h,30);

sound(1000);

delay(240);

nosound();

delay(140);

sound(2000);

delay(240);

nosound();

}

}

getch();

closegraph();

}

请问fluent6.3.26怎么使用,打开那个图形编辑器

6.3就是这个界面,习惯就好,话说这个界面别小看他,很强大的,你敲一下回车,就会看到有一个列表共你选择,比如说选择define,如果你不知道define里包含什么,还可以继续敲回车,同样会给出列表供你选择,这个比菜单的内容丰富的多,所以说功能强大。。。

回到正题吧,你可以到流体中文网cfluid和傲雪论坛里学习,有很多资料,但是最基本的中文帮助,算例精选,6.3算例文件你必须有,这样才好入门。。。还有一个方法就是找本书,按照上面的做,也是很好的方法,因为一般软件类的书籍都会带光盘的,文件、视频都会有的,也是非常好的你找不到的可以email我,qq54320824@qq.com

图形界面是后处理是才用到的,只有你有一定计算结果(那怕是一步),那个display里的云图之类的才能用的。。。另外tecplot的处理能力也是相当的好,高版本的直接对cas和dat(是同时读进行读取),不用先从fluent里导出。。。有人说tcplot只能显示分速度,不能显示合速度,确实是这样的,不过往里面输入个公式就行了,网上有,找找去

求用c语言编写的贪吃蛇程序

#include <stdio.h>

#include <graphics.h>

#include <stdlib.h>

#include <dos.h> /*引用的库函数*/

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b/*宏定义键名*/

#define N 200

int i,key;

int level;/*游戏等级*/

int score=0;/*得分*/

int gamespeed;/*游戏速度*/

struct Food

{

int x;/*食物的横坐标*/

int y;/*食物的纵坐标*/

int yes;/*判断是否要出现食物的变量*/

}food;/*食物的结构体*/

struct Snake

{

int x[N];

int y[N];

int node;/*蛇的节数*/

int direction;/*蛇移动方向*/

int life;/* 蛇的生命,0活着,1死亡*/

}snake;/*蛇的结构体*/

void Choicelevle(void);/*选择游戏等级*/

void Init(void);/*图形驱动*/

void Close(void);/*图形结束*/

void DRAW(void);/*游戏区域*/

void GameOver(void);/*结束游戏*/

void GamePlay(void);/*玩游戏具体过程*/

void PrScore(void);/*输出成绩*/

/*主函数*/

void main(void)

{

Init();/*图形驱动*/

Choicelevle();/*选择游戏等级*/

DRAW();/*游戏区域*/

GamePlay();/*玩游戏具体过程*/

Close();/*图形结束*/

}

/*图形驱动*/

void Init(void)

{

int gd=DETECT,gm;

initgraph(&gd,&gm,"\\turboc2"); /*初始化图形系统*/

cleardevice(); /*清除图形界面*/

}

/*选择游戏等级*/

void Choicelevle(void)

{char name[20];

setcolor(YELLOW);

settextstyle(0,0,6);

outtextxy(150,150,"Snake");

setcolor(GREEN);

settextstyle(0,0,1);

outtextxy(200,250,"please put in your English name:");

outtextxy(200,270,"Choice levle from 1-9.");

outtextxy(300,320,"name:yangzilong");/*制作人姓名*/

outtextxy(300,350,"number:0902060226");/*制作人学号*/

outtextxy(300,380,"class:computer science 0602");/*制作人班级*/

getch();

printf("please putin your name:");

gets(name);

printf("please choice levle:");

scanf("%d",&level);

gamespeed=100000-400*level-300*level*level;

if(level>9||level<1)

{cleardevice(); /*清除图形界面*/

setcolor(YELLOW); /*设置字体颜色*/

settextstyle(0,0,2); /*设置字体类型*/

outtextxy(150,200,"level input error"); /*显示文本*/

getch();

level=1;

}

}

void DRAW(void)

{cleardevice(); /*清屏*/

setcolor(2);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/

rectangle(45,45,465,325);

}

/*玩游戏具体过程*/

void GamePlay(void)

{setcolor(5);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/

randomize();/*随机数发生器*/

food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/

snake.life=0;/*活着*/

snake.direction=1;/*方向往右*/

snake.x[0]=320;snake.y[0]=240;/*蛇头*/

snake.x[1]=330;snake.y[1]=240; /*蛇的第二节位置*/

snake.node=3;/*节数*/

PrScore();/*输出得分*/

while(1)/*可以重复玩游戏,压ESC键结束*/

{

while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/

{

if(food.yes==1)/*需要出现新食物*/

{

food.x=rand()%360+70;

food.y=rand()%250+60;

while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/

food.x++;

while(food.y%10!=0)

food.y++;

food.yes=0;/*画面上有食物了*/

}

if(food.yes==0)/*画面上有食物了就要显示*/

{

setcolor(GREEN);

rectangle(food.x,food.y,food.x+10,food.y-10);

}

for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动*/

{

snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1];

}

/*1,2,3,4表示右,左,上,下四个方向,通过这个控制来移动蛇头*/

switch(snake.direction)

{

case 1: snake.x[0]+=10;break;

case 2: snake.x[0]-=10;break;

case 3: snake.y[0]-=10;break;

case 4: snake.y[0]+=10;break;

}

for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/

{

if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])

{

GameOver();/*显示失败*/

snake.life=1; /*蛇死*/

break;

}

}

/*如果蛇头碰到墙壁,蛇头从对面墙出来*/

if(snake.x[0]<50)

{snake.x[0]=450;/*如果蛇头越过左边界,则从右边界进入*/

snake.y[0]=snake.y[0];/*纵坐标不变*/

for(i=snake.node-1;i>0;i--)

{snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/

}

{

setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色,0表示黑色*/

bar(50,55,455,315);/*bar是表示填充的范围的函数*/

}

}

else

if(snake.x[0]>450)

{snake.x[0]=50;/*如果蛇头越过右边界,则蛇头从左边界进入*/

snake.y[0]=snake.y[0];/*纵坐标不变*/

for(i=snake.node-1;i>0;i--)

{snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/

}

{

setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色,0表示黑色*/

bar(50,55,455,315);/*bar是表示填充的范围的函数*/

}

}

else

if(snake.y[0]<60)

{snake.y[0]=320;/*如果蛇头越过上边界,则从下边界进入*/

snake.x[0]=snake.x[0];/*横坐标不变*/

for(i=snake.node-1;i>0;i--)

{snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/

}

{

setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色,0表示黑色*/

bar(50,55,455,315);/*bar是表示填充的范围的函数*/

}

}

else

if(snake.y[0]>320)

{snake.y[0]=60;/*如果蛇头越过下边界,则从上边界进入*/

snake.x[0]=snake.x[0];/*横坐标不变*/

for(i=snake.node-1;i>0;i--)

{snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/

}

{

setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色,0表示黑色*/

bar(50,55,455,315);/*bar是表示填充的范围的函数*/

}

}

if(snake.life==1)/*如果蛇死就跳出内循环,重新开始*/

break;

if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/

{

setcolor(0);/*把画面上的食物东西去掉*/

rectangle(food.x,food.y,food.x+10,food.y-10); /*用当前线型和颜色画一矩形*/

snake.x[snake.node]=-20;snake.y[snake.node]=-20;

/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/

snake.node++;/*蛇的身体长一节*/

food.yes=1;/*画面上需要出现新的食物*/

score+=10; /*每吃掉一食物,得分累加10分*/

if(score%100==0)

{level++;gamespeed=100000-400*level-300*level*level;/*每吃掉10食物提升一级,速度加快*/

PrScore();/*输出新得分*/

setcolor(YELLOW); /*设置字体颜色*/

settextstyle(0,0,4); /*设置字体类型*/

outtextxy(150,200,"LEVEL UP"); /*显示文本*/

if(level==10)

{level=1,gamespeed=100000-400*level-300*level*level;}

delay(6000000);

delay(6000000);

delay(6000000);

delay(6000000);

delay(6000000);

delay(6000000);

delay(6000000);

bar(50,55,455,315);/*bar是表示填充的范围的函数*/

}

PrScore();/*输出新得分*/

}

setcolor(4);/*画出蛇*/

for(i=0;i<snake.node;i++)

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,

snake.y[i]-10);

delay(gamespeed); /*控制游戏速度*/

setcolor(0);

rectangle(snake.x[snake.node-1],snake.y[snake.node-1],

snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);

} /*endwhile(!kbhit)*/ /*用黑色去除蛇的的最后一节*/

if(snake.life==1)/*如果蛇死就跳出循环*/

break;

key=bioskey(0);/*接收按键*/

if(key==ESC)/*按ESC键退出*/

break;

else

if(key==UP&&snake.direction!=4)

/*判断是否往相反的方向移动*/

snake.direction=3;

else

if(key==RIGHT&&snake.direction!=2)

snake.direction=1;

else

if(key==LEFT&&snake.direction!=1)

snake.direction=2;

else

if(key==DOWN&&snake.direction!=3)

snake.direction=4;

}/*endwhile(1)*/

}

/*游戏结束*/

void GameOver(void)

{

cleardevice(); /*清屏*/

PrScore();

setcolor(RED); /*设置字体颜色*/

settextstyle(0,0,4); /*设置字体类型*/

outtextxy(200,200,"GAME OVER"); /*显示文本*/

getch();

}

/*输出成绩及游戏等级*/

void PrScore(void)

{

char str1[20];/*设置字符型数组*/

setfillstyle(SOLID_FILL,0);

bar(50,15,390,35); /*填充矩形框*/

setcolor(6); /*设置文本颜色*/

settextstyle(0,0,2); /*设置数组显示位置*/

sprintf(str1,"score %d level %d",score,level);/*显示数组内容*/

outtextxy(55,20,str1);

setcolor(YELLOW); /*设置字体颜色*/

settextstyle(0,0,2); /*设置字体类型*/

outtextxy(250,400,"EXIT=ESC ");/*显示文本*/

}

void Close(void)

{

closegraph();

}

001a

tc界面图形程序11

网上搜的,运行了一下,通过。呵呵。

#include "graphics.h"

#include "math.h"

#include "dos.h"

#include "conio.h"

#include "stdlib.h"

#include "stdio.h"

#include "stdarg.h"

#define MAXPTS 15

#define PI 3.1415926

struct PTS {

int x,y;

};

double AspectRatio=0.85;

void LineToDemo(void)

{

struct viewporttype vp;

struct PTS points[MAXPTS];

int i, j, h, w, xcenter, ycenter;

int radius, angle, step;

double rads;

printf(" MoveTo / LineTo Demonstration" );

getviewsettings( &vp );

h = vp.bottom - vp.top;

w = vp.right - vp.left;

xcenter = w / 2; /* Determine the center of circle */

ycenter = h / 2;

radius = (h - 30) / (AspectRatio * 2);

step = 360 / MAXPTS; /* Determine # of increments */

angle = 0; /* Begin at zero degrees */

for( i=0 ; i<MAXPTS ; ++i )

{ /* Determine circle intercepts */

rads = (double)angle * PI / 180.0; /* Convert angle to radians */

points[i].x = xcenter + (int)( cos(rads) * radius );

points[i].y = ycenter - (int)( sin(rads) * radius * AspectRatio );

angle += step; /* Move to next increment */

}

circle( xcenter, ycenter, radius ); /* Draw bounding circle */

for( i=0 ; i<MAXPTS ; ++i )

{ /* Draw the cords to the circle */

for( j=i ; j<MAXPTS ; ++j )

{ /* For each remaining intersect */

moveto(points[i].x, points[i].y); /* Move to beginning of cord */

lineto(points[j].x, points[j].y); /* Draw the cord */

}

}

}

main()

{

int driver,mode;

driver=VGA;mode=VGAHI;

initgraph(&driver,&mode,"");

setcolor(3);

setbkcolor(GREEN);

LineToDemo();

getch();

}

贪吃蛇 C语言 简易程序设计

#define N 200

#include <graphics.h>

#include <stdlib.h>

#include <dos.h>

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

int i,key;

int score=0;/*得分*/

int gamespeed=50000;/*游戏速度自己调整*/

struct Food

{

int x;/*食物的横坐标*/

int y;/*食物的纵坐标*/

int yes;/*判断是否要出现食物的变量*/

}food;/*食物的结构体*/

struct Snake

{

int x[N];

int y[N];

int node;/*蛇的节数*/

int direction;/*蛇移动方向*/

int life;/* 蛇的生命,0活着,1死亡*/

}snake;

void Init(void);/*图形驱动*/

void Close(void);/*图形结束*/

void DrawK(void);/*开始画面*/

void GameOver(void);/*结束游戏*/

void GamePlay(void);/*玩游戏具体过程*/

void PrScore(void);/*输出成绩*/

/*主函数*/

void main(void)

{

Init();/*图形驱动*/

DrawK();/*开始画面*/

GamePlay();/*玩游戏具体过程*/

Close();/*图形结束*/

}

/*图形驱动*/

void Init(void)

{

int gd=DETECT,gm;

initgraph(&gd,&gm,"c:\\tc");

cleardevice();

}

/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/

void DrawK(void)

{

/*setbkcolor(LIGHTGREEN);*/

setcolor(11);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/

for(i=50;i<=600;i+=10)/*画围墙*/

{

rectangle(i,40,i+10,49); /*上边*/

rectangle(i,451,i+10,460);/*下边*/

}

for(i=40;i<=450;i+=10)

{

rectangle(50,i,59,i+10); /*左边*/

rectangle(601,i,610,i+10);/*右边*/

}

}

/*玩游戏具体过程*/

void GamePlay(void)

{

randomize();/*随机数发生器*/

food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/

snake.life=0;/*活着*/

snake.direction=1;/*方向往右*/

snake.x[0]=100;snake.y[0]=100;/*蛇头*/

snake.x[1]=110;snake.y[1]=100;

snake.node=2;/*节数*/

PrScore();/*输出得分*/

while(1)/*可以重复玩游戏,压ESC键结束*/

{

while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/

{

if(food.yes==1)/*需要出现新食物*/

{

food.x=rand()%400+60;

food.y=rand()%350+60;

while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/

food.x++;

while(food.y%10!=0)

food.y++;

food.yes=0;/*画面上有食物了*/

}

if(food.yes==0)/*画面上有食物了就要显示*/

{

setcolor(GREEN);

rectangle(food.x,food.y,food.x+10,food.y-10);

}

for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/

{

snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1];

}

/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/

switch(snake.direction)

{

case 1:snake.x[0]+=10;break;

case 2: snake.x[0]-=10;break;

case 3: snake.y[0]-=10;break;

case 4: snake.y[0]+=10;break;

}

for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/

{

if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])

{

GameOver();/*显示失败*/

snake.life=1;

break;

}

}

if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||

snake.y[0]>455)/*蛇是否撞到墙壁*/

{

GameOver();/*本次游戏结束*/

snake.life=1; /*蛇死*/

}

if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/

break;

if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/

{

setcolor(0);/*把画面上的食物东西去掉*/

rectangle(food.x,food.y,food.x+10,food.y-10);

snake.x[snake.node]=-20;snake.y[snake.node]=-20;

/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/

snake.node++;/*蛇的身体长一节*/

food.yes=1;/*画面上需要出现新的食物*/

score+=10;

PrScore();/*输出新得分*/

}

setcolor(4);/*画出蛇*/

for(i=0;i<snake.node;i++)

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,

snake.y[i]-10);

delay(gamespeed);

setcolor(0);/*用黑色去除蛇的的最后一节*/

rectangle(snake.x[snake.node-1],snake.y[snake.node-1],

snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);

} /*endwhile(!kbhit)*/

if(snake.life==1)/*如果蛇死就跳出循环*/

break;

key=bioskey(0);/*接收按键*/

if(key==ESC)/*按ESC键退出*/

break;

else

if(key==UP&&snake.direction!=4)

/*判断是否往相反的方向移动*/

snake.direction=3;

else

if(key==RIGHT&&snake.direction!=2)

snake.direction=1;

else

if(key==LEFT&&snake.direction!=1)

snake.direction=2;

else

if(key==DOWN&&snake.direction!=3)

snake.direction=4;

}/*endwhile(1)*/

}

/*游戏结束*/

void GameOver(void)

{

cleardevice();

PrScore();

setcolor(RED);

settextstyle(0,0,4);

outtextxy(200,200,"GAME OVER");

getch();

}

/*输出成绩*/

void PrScore(void)

{

char str[10];

setfillstyle(SOLID_FILL,YELLOW);

bar(50,15,220,35);

setcolor(6);

settextstyle(0,0,2);

sprintf(str,"score:%d",score);

outtextxy(55,20,str);

}

/*图形结束*/

void Close(void)

{

getch();

closegraph();

}

c/c++ 求助 图形界面

/*把下面的代码保存为资源文件 然后在编译环境中调用DialogBoxParam函数就可以使用了*/

#define IDD_DLG1 1000

#define IDC_EDT1 1001

#define IDC_BTN1 1002

#define IDC_BTN2 1003

#define IDC_BTN3 1004

#define IDC_BTN4 1005

#define IDC_BTN5 1006

#define IDC_BTN6 1007

#define IDC_BTN7 1008

#define IDC_BTN8 1009

#define IDC_BTN9 1010

#define IDC_BTN10 1011

#define IDC_BTN11 1012

#define IDC_BTN12 1013

#define IDC_BTN13 1014

#define IDC_BTN14 1015

#define IDC_BTN15 1016

#define IDC_BTN16 1017

#define IDC_BTN17 1018

#define IDC_BTN18 1019

#define IDC_BTN19 1020

#define IDC_BTN20 1021

#define IDC_BTN21 1022

#define IDC_BTN22 1023

#define IDC_BTN23 1024

#define IDC_BTN24 1025

#define IDC_BTN25 1026

IDD_DLG1 DIALOGEX 6,6,202,140

LANGUAGE 4,2

CAPTION "计算器"

FONT 8,"MS Sans Serif",0,0

STYLE 0x90CA0000

BEGIN

CONTROL "",IDC_EDT1,"Edit",0x50010812,18,12,170,13,0x00000200

CONTROL "1",IDC_BTN1,"Button",0x50010000,18,35,26,13

CONTROL "2",IDC_BTN2,"Button",0x50010000,50,35,26,13

CONTROL "3",IDC_BTN3,"Button",0x50010000,84,35,28,13

CONTROL "i",IDC_BTN4,"Button",0x50010000,120,35,26,13

CONTROL "4",IDC_BTN5,"Button",0x50010000,18,55,26,13

CONTROL "5",IDC_BTN6,"Button",0x50010000,50,55,26,13

CONTROL "6",IDC_BTN7,"Button",0x50010000,84,55,28,13

CONTROL "+",IDC_BTN8,"Button",0x50010000,120,55,26,13

CONTROL "7",IDC_BTN9,"Button",0x50010000,18,75,26,13

CONTROL "8",IDC_BTN10,"Button",0x50010000,50,75,26,13

CONTROL "9",IDC_BTN11,"Button",0x50010000,84,75,28,13

CONTROL "-",IDC_BTN12,"Button",0x50010000,120,75,26,13

CONTROL "+/-",IDC_BTN13,"Button",0x50010000,18,97,26,13

CONTROL "0",IDC_BTN14,"Button",0x50010000,50,97,26,13

CONTROL ".",IDC_BTN15,"Button",0x50010000,84,97,28,13

CONTROL "×",IDC_BTN16,"Button",0x50010000,120,96,26,13

CONTROL "÷",IDC_BTN17,"Button",0x50010000,120,116,26,13

CONTROL "sin",IDC_BTN18,"Button",0x50010000,18,118,26,13

CONTROL "cos",IDC_BTN19,"Button",0x50010000,50,118,26,13

CONTROL "tan",IDC_BTN20,"Button",0x50010000,84,118,28,13

CONTROL "cot",IDC_BTN21,"Button",0x50010000,156,35,28,13

CONTROL "sec",IDC_BTN22,"Button",0x50010000,156,55,28,13

CONTROL "csc",IDC_BTN23,"Button",0x50010000,156,75,28,13

CONTROL "%",IDC_BTN24,"Button",0x50010000,156,96,28,13

CONTROL "=",IDC_BTN25,"Button",0x50010000,156,116,28,13

END

C语言屏幕上显示一个图形时钟用程序绘制一个与时钟样式相似即可

程序运行界面大致如此:

打包好的工程是默认要用VC打开的。如果不用vc的话,代码至少要在VS上进行编译最好。

// test_clock_again.cpp : Defines the entry point for the application.

//

#include"stdafx.h"

#include"resource.h"

#include<windows.h>

#include<math.h>

#defineID_TIMER1//计时器ID

#defineTWOPI(2*3.14159)

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);

intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRszCmdLine,intiCmdShow)

{

staticTCHARszAppName[]=TEXT("Clock");

HWNDhwnd;

MSGmsg;

WNDCLASSwndclass;

wndclass.cbClsExtra=0;

wndclass.cbWndExtra=0;

wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);

wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);

wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);

wndclass.hInstance=hInstance;

wndclass.lpfnWndProc=WndProc;

wndclass.lpszClassName=szAppName;

wndclass.lpszMenuName=NULL;

wndclass.style=CS_HREDRAW|CS_VREDRAW;

if(!RegisterClass(&wndclass))

{

MessageBox(NULL,TEXT("ThisprogramrequiresWindowsNT"),szAppName,MB_ICONERROR);

return0;

}

hwnd=CreateWindow(szAppName,TEXT("AnalogClock"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,iCmdShow);

UpdateWindow(hwnd);

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

returnmsg.wParam;

}

voidSetsotropic(HDChdc,intcxClient,intcyClient)

{

SetMapMode(hdc,MM_ISOTROPIC);

SetWindowExtEx(hdc,1000,1000,NULL);

SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);

SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL);

}

voidRotatePoint(POINTpt[],intiNum,intiAngle)

{

inti;

POINTptTemp;

for(i=0;i<iNum;i++)

{

ptTemp.x=(int)(pt[i].x*cos(TWOPI*iAngle/360)+pt[i].y*sin(TWOPI*iAngle/360));

ptTemp.y=(int)(pt[i].y*cos(TWOPI*iAngle/360)-pt[i].x*sin(TWOPI*iAngle/360));

pt[i]=ptTemp;

}

}

voidDrawClock(HDChdc)

{

intiAngle;

POINTpt[3];

for(iAngle=0;iAngle<360;iAngle+=6)

{

pt[0].x=0;

pt[0].y=900;

RotatePoint(pt,1,iAngle);

pt[2].x=pt[2].y=iAngle%5?33:100;

pt[0].x-=pt[2].x/2;

pt[0].y-=pt[2].y/2;

pt[1].x=pt[0].x+pt[2].x;

pt[1].y=pt[0].y+pt[2].y;

SelectObject(hdc,GetStockObject(BLACK_BRUSH));

Ellipse(hdc,pt[0].x,pt[0].y,pt[1].x,pt[1].y);

}

}

voidDrawHands(HDChdc,SYSTEMTIME*pst,BOOLfChange)

{

staticPOINTpt[3][5]={0,-150,100,0,0,600,-100,0,0,-150,

0,-200,50,0,0,800,-50,0,0,-200,

0,0,0,0,0,0,0,0,0,800

};

inti,iAngle[3];

POINTptTemp[3][5];

iAngle[0]=(pst->wHour*30)%360+pst->wMinute/2;

iAngle[1]=pst->wMinute*6;

iAngle[2]=pst->wSecond*6;

memcpy(ptTemp,pt,sizeof(pt));

for(i=fChange?0:2;i<3;i++)

{

RotatePoint(ptTemp[i],5,iAngle[i]);

Polyline(hdc,ptTemp[i],5);

}

}

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)

{

staticintcxClient,cyClient;

staticSYSTEMTIMEstPrevious;

BOOLfChange;

HDChdc;

PAINTSTRUCTps;

SYSTEMTIMEst;

switch(message)

{

caseWM_CREATE:

SetTimer(hwnd,ID_TIMER,1000,NULL);

GetLocalTime(&st);

stPrevious=st;

return0;

caseWM_SIZE:

cxClient=LOWORD(lParam);

cyClient=HIWORD(lParam);

return0;

caseWM_TIMER:

GetLocalTime(&st);

fChange=st.wHour!=stPrevious.wHour||st.wMinute!=stPrevious.wMinute;

hdc=GetDC(hwnd);

Setsotropic(hdc,cxClient,cyClient);

SelectObject(hdc,GetStockObject(WHITE_PEN));

DrawHands(hdc,&stPrevious,fChange);

SelectObject(hdc,GetStockObject(BLACK_PEN));

DrawHands(hdc,&st,TRUE);

stPrevious=st;

return0;

caseWM_PAINT:

hdc=BeginPaint(hwnd,&ps);

Setsotropic(hdc,cxClient,cyClient);

DrawClock(hdc);

DrawHands(hdc,&stPrevious,TRUE);

EndPaint(hwnd,&ps);

return0;

caseWM_DESTROY:

KillTimer(hwnd,ID_TIMER);

PostQuitMessage(0);

return0;

}

returnDefWindowProc(hwnd,message,wParam,lParam);

}

函数Setsotropic用来设置作图的原点 为窗体的中心点。

函数RotatePoint用来沿着原点0,0进行旋转一个多边形,旋转需要用到三角函数。

DrawHands函数用当前的时间计算出时针、分针、秒针的角度,然后根据预设点坐标来画图

0,-150,100,0,0,600,-100,0,0,-150, // 时针

0,-200,50,0,0,800,-50,0,0,-200, // 分针

0,0,0,0,0,0,0,0,0,800 //秒针

能使用C++语言吗 VC不会

里面有些方法是需要调用windows api的。

所以GNU GCC才无法直接编译出来,这跟用C语言还是用C++语言是没有关系的。你要弄清楚这一点。

而且VC并不是一门语言,VC只是一个编译器。它所用的编译库和codeblocks通用c语言编译器不一样罢了。VC用的也是C/C++语言。

怎么把C语言做成软件?

写好后运行就会生成一个.EXE文件啊

只是用C写的没有其他界面而已

转载请注明出处51数据库 » 图形界面软件defin tc界面图形程序8

软件
前端设计
程序设计
Java相关