PDA

View Full Version : ساعت عقربه دار به زبان C یا‍ ‍‍++C یا JAVA



majid zamani
یک شنبه 08 خرداد 1384, 14:29 عصر
سلام دوستان
من برای نوشتن برنامه ساعت عقربه دار نیاز به کمک دوستان دارم :mrgreen:
لطفاً دوستان به من کمک کنن :flower: :موفق:

Pars Giga
جمعه 13 خرداد 1384, 08:54 صبح
حالت گرافیکی یا متن
در داس یا ویندوز
با سی یا سی++
:confy2:

Monster
جمعه 13 خرداد 1384, 12:32 عصر
سلام
اگه بخوای با جاوا بنویسی:
http://java.sun.com/openstudio/applets/clock.html
http://www.freewarejava.com/applets/clock.shtml

Pars Giga
شنبه 14 خرداد 1384, 07:54 صبح
من یه ساده را با سی نوشتم
برای اینکه ایده بگیری

sasan_vm
شنبه 14 خرداد 1384, 11:14 صبح
#include <dos.h>
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <graphics.h>

//----------------------------------------------------------------------------------

class Clock
{
private:
unsigned XCentr;
unsigned YCentr;
unsigned Raduis;
unsigned FrgCol;
unsigned BkgCol;
unsigned ColSec;
unsigned ColMin;
unsigned ColHor;
unsigned RadSec;
unsigned RadMin;
unsigned RadHor;
struct time Time;

public:
Clock(int, char *);
~Clock();
void Show(void);

private:
void UpdateSec(void);
void UpdateMin(void);
void UpdateHor(void);

double DegToRad(int Deg) { return ( Deg * M_PI / 180.0 ); }

void Draw(int Red, double Teta, int Color)
{
int x, y;
x = XCentr + ( Red * cos( Teta - M_PI_2 ) );
y = YCentr + ( Red * sin( Teta - M_PI_2 ) );
setcolor( Color );
line( XCentr, YCentr, x, y );
}
};

//----------------------------------------------------------------------------------

Clock::Clock(int NumCommand, char *Red)
{
int gDriver=DETECT, gMode, errorcode;

errorcode = registerbgidriver(EGAVGA_driver);
if ( errorcode < 0 )
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
initgraph(&gDriver, &gMode,"");
errorcode = graphresult();
if ( errorcode != grOk ) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

switch ( NumCommand )
{
case 1:
Raduis = 200;
break;

case 2:
Raduis = atoi(Red);
break;
}

RadSec = 29/30. * Raduis;
RadMin = 25/30. * Raduis;
RadHor = 21/30. * Raduis;
XCentr = getmaxx() / 2;
YCentr = getmaxy() / 2;

FrgCol = LIGHTGREEN;
BkgCol = BLACK;
ColSec = RED;
ColMin = LIGHTBLUE;
ColHor = BLUE;

{
int i, j, x, y;
setcolor(FrgCol);
for (i=0; i<=360; i += 30)
{
x = XCentr + ( Raduis * cos( DegToRad( i ) - M_PI_2 ) );
y = YCentr + ( Raduis * sin( DegToRad( i ) - M_PI_2 ) );
for (j=1; j<4; j++) circle(x, y, j);
}
setcolor(WHITE);
settextstyle(DEFAULT_FONT, HORIZ_DIR, 0);
y = getmaxy() - textheight("My Clock"); // any text your name
outtextxy(2 , y, "Mansoor Tanhaey");
setlinestyle(SOLID_LINE, 0 ,THICK_WIDTH);
}
}

Clock::~Clock()
{
while ( kbhit() ) getch();
closegraph();
}

//----------------------------------------------------------------------------------

void Clock::UpdateSec(void)
{
static double SecTeta;

Draw( RadSec, SecTeta, BkgCol );
SecTeta = DegToRad( Time.ti_sec * 6 );
Draw( RadSec, SecTeta, ColSec );
UpdateMin();
UpdateHor();
}

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@

void Clock::UpdateMin(void)
{
static double MinTeta;

Draw( RadMin, MinTeta, BkgCol );
MinTeta = DegToRad( Time.ti_min * 6 );
Draw( RadMin, MinTeta, ColMin );
if ( Time.ti_min==1 && Time.ti_sec==0 ) UpdateSec();
}

//----------------------------------------------------------------------------------

void Clock::UpdateHor(void)
{
static double HorTeta;

Draw( RadHor, HorTeta, BkgCol );
HorTeta = DegToRad( Time.ti_hour * 30 + Time.ti_min / 2 );
Draw( RadHor, HorTeta, ColHor );
}

//----------------------------------------------------------------------------------

void Clock::Show(void)
{
static unsigned char OldSec; // for any PC that CLOCK is fast
OldSec = Time.ti_sec;
gettime(&Time);
Time.ti_hour = ( Time.ti_hour >= 12 ) ? Time.ti_hour-12 : Time.ti_hour;
if ( Time.ti_sec != OldSec )
UpdateSec();
}

//----------------------------------------------------------------------------------

void main(int argc, char **argv)
{
Clock * Rado = new Clock(argc, argv[1]);

do
Rado->Show();
while ( !kbhit() );
delete Rado;
}

//----------------------------------------------------------------------------------