easyx 制作C++计时器
Posted 计算机知识杂谈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了easyx 制作C++计时器相关的知识,希望对你有一定的参考价值。
本文仅在博客园发布,若在其他网站发现均为盗取,请认准原文链接:
https://www.cnblogs.com/jisuanjizhishizatan/p/15521112.html
先上效果:
输入设定时间后,会出现时间。
如果时间结束,则显示time\'s up。
代码的实现很简单,就是每间隔1秒刷新一次时间。间隔1秒可以使用Sleep(1000)实现。
关于输出时间和输入设定时间,我们可以使用easyx的inputbox来实现。
对于时间的60进制,我们可以判断当前的seconds是否为0,如果为0,那么把minutes减去一,然后把seconds重置为59.
代码:
// Timer.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<windows.h>
#include<conio.h>
int main(void){
initgraph(300,200);
setbkcolor(WHITE);
settextcolor(BLACK);
cleardevice();
settextstyle(48,0,"Consolas");
char s[100],t[100];
InputBox(s,sizeof(s),"输入设定时间:(分钟为单位)","设定时间");
int minutes=0,seconds=0;
sscanf(s,"%d",&minutes);
while(minutes!=0 || seconds!=0){
if(seconds==0){
minutes--;seconds=59;
}
else seconds--;
Sleep(1000);
sprintf(t,"%02d:%02d",minutes,seconds);
cleardevice();
outtextxy(50,50,t);
}
cleardevice();
outtextxy(50,50,"Time\'s up!");
_getch();
closegraph();
return 0;
}
注意需要提前把项目设置为使用多字节字符集而不是Unicode,否则会出编译错误。
C++ easyx制作打砖块游戏
#include<graphics.h>
#include<conio.h>
#include<cstdio>
#include<time.h>
#include<cmath>
#include<stdio.h>
#include <string>
#define HEIGHT 700
#define WIDTH 400
int ball_x, ball_y;
int ball_vx, ball_vy;
int radius;
int left, right, top, bottom;
int baffle_x, baffle_y;
int baffle_size;
int baffle_move;
int brick_x, brick_y;
int brick_r;
int score;
int sleep_time;
bool isExit;
bool isLose;
void initBall() {
left = 0;
top = 0;
right = WIDTH;
bottom = HEIGHT;
ball_x = (right - left) / 2;
ball_y = (bottom - top) / 2;
ball_vx = 1;
ball_vy = 1;
radius = 15;
brick_x = 30;
brick_y = 30;
brick_r = 20;
score = 0;
sleep_time = 5;
baffle_move = 8;
isExit = false;
isLose = false;
}
void initBaffle() {
baffle_x = (right - left) / 2;
baffle_y = bottom - HEIGHT/8;
baffle_size = WIDTH/2;
}
void drawBall() {
setfillcolor(RGB(0,255, 0));
fillcircle(ball_x, ball_y, radius);
}
void drawBrick() {
if (isExit == true) {
setfillcolor(RGB(255, 255, 0));
fillcircle(brick_x, brick_y, brick_r);
}
if (isExit == false) {
isExit = 1;
brick_x = rand() % WIDTH;
brick_y = rand() % HEIGHT / 2;
}
printf("score :%d", score);
}
void drawBaffle() {
setfillcolor(RGB(255,0, 0));
line(baffle_x, baffle_y, baffle_x + baffle_size, baffle_y);
}
void updataWithInput() {
//交互
char input;
//根据键盘输入判断平台的移动
if (_kbhit()) {
input = _getch();
switch (input)
{
case 'a':
if (baffle_x > 0)
baffle_x -= baffle_move;
break;
/*case 'w':
if (baffle_y > 0)
baffle_y -= baffle_move;
break;
case 's':
if (baffle_y < bottom - 1)
baffle_y += baffle_move;
break;*/
case 'd':
if (baffle_x < right - baffle_size)
baffle_x += baffle_move;
break;
default:
break;
}
}
}
void updateBall() {
static int count = 0;
count++;
if (count == 5) {
count = 0;
ball_x += ball_vx;
ball_y += ball_vy;
}
if (ball_x <= left + radius || ball_x >= right - radius) {
ball_vx = -ball_vx;
}
if (ball_y <= top + radius) {
ball_vy = -ball_vy;
}
if (ball_y >= bottom - radius) {
isLose = true;
}
if (ball_y == baffle_y - radius && ball_x >= baffle_x && ball_x <= baffle_x + baffle_size) {
ball_vy = -ball_vy;
}
if (pow((ball_x - brick_x), 2) + pow((ball_y - brick_y), 2) <= pow((brick_r + radius), 2)) {
ball_vx = -ball_vx;
ball_vy = -ball_vy;
isExit = 0;
score++;
}
}
//void print_score() {
//
// char a[20] = "score";
// int t = 1;
// int tmp = score;
// while (score > 0) {
// t*=10;
// tmp /= 10;
// }
// for (int i = 5; i < 15 && t!=0; i++, t /= 10) {
// a[i] = score%t;
// t %= 10;
// }
// sprintf_s(a, "%d",score);
// TCHAR s[] = _T("score:");
//
// settextcolor(GREEN);
// const char* ca = a;
// outtextxy(WIDTH/2,HEIGHT/2,ca);
// outtextxy(WIDTH / 2, HEIGHT / 2,score);
//}
int main() {
initgraph(WIDTH, HEIGHT);
BeginBatchDraw();
initBall();
initBaffle();
while (1)
{
if (isLose == true) {
cleardevice();
TCHAR s[] = _T("LOSE");
outtextxy(WIDTH/2,HEIGHT/2, s);
}
FlushBatchDraw();
cleardevice();
drawBall();
drawBrick();
drawBaffle();
updataWithInput();
updateBall();
//print_score();
//Sleep(sleep_time);
}
EndBatchDraw();
closegraph();
return 0;
}
以上是关于easyx 制作C++计时器的主要内容,如果未能解决你的问题,请参考以下文章