移动的同时 需要随时获取键盘事件 可以多线程
效果显示 如:正方形 使用了easyx第三方库 可直接百度 很好搭建
上代码
#include <graphics.h>
#include <iostream>
#include <conio.h>
#include <Windows.h>
#include <stdlib.h>
// #include <afx.h>
class Game
{
private:
//初始化
int screenWidth; //屏幕宽
int screenHeight; //屏幕高
int blockWidth; //砖块宽
int blockHeight; //砖块高
int boardwidth; //板子宽
int boardHeight; //板子高
int radis; //球半径
public:
//实际位置
int ball_x; //球圆心x
int ball_y; //球圆心y
int board_x; //板子横向位置
bool flag; //判断标志位
int v_x; //x轴状态
int v_y; //y轴状态
Game();
void get(char ch);
void ball_move(); //小球的动态移动
// friend DWORD WINAPI Game_getch(); //按键获取
bool judge(); //判断(砖块)
bool judge_1(); //判断 (墙壁)
void Init()
{
initgraph(screenWidth,screenHeight); //640行480列页面
for(int i=0;i<screenWidth;i+=blockWidth)
rectangle(i,0,i+blockWidth,blockWidth);
}
};
using namespace std;
DWORD WINAPI Game_getch(LPVOID lpParamter);
char CH;
int n = 0;
int main()
{
// cout << endl<<endl<<endl <<endl<<" -> 键向左移动" <<endl<<" -> 键向右移动" <<endl ;
// cout <<" 任意键开始"<<endl<<endl<<endl;
// getch();
Game Gam;
Sleep(1000*3);
HANDLE hThread = CreateThread(NULL, 0, Game_getch, NULL, 0, NULL);
CloseHandle(hThread);
while(1)
{
Gam.ball_move();
Gam.get(CH);
//CH=1;
}
getchar();
closegraph(); //关闭页面
return 0;
}
void Game::ball_move()
{
static int IC=0;
static int IB=0;
IC++;
if(IC==5)
{
//防止每次趋近板子都弹起 形成死循环(然而并无卵用)
IB=0;
IC=0;
}
rectangle(board_x,screenHeight-boardHeight\
,board_x+boardwidth,screenHeight);
clearcircle( ball_x,ball_y,radis+1); //清除
/*
if(v_x==-1) //判断是上方
{
if(judge()) //判断是砖块
{