Discuz! Board

 找回密码
 立即注册
查看: 385|回复: 0

ball 7.0

[复制链接]

27

主题

29

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
14147
发表于 2023-1-13 19:11:11 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
#include <graphics.h>//包含EGE的头文件
#include <time.h>//包含随机数,时间函数 
#include<bits/stdc++.h>
using namespace std;

int block[40][30]={0};
//int width =400;
//int height =600;
//int num=0;
//int count1,temp=0xffff;
//int time_count=0;
//int mousePosX = -1, mousePosY = -1;//鼠标位置 
//mouse_msg msgRecord = { 0 };//鼠标结构体初始化 
struct snake_2
{
	int x;
	int y;
	int color;
};
struct snake_1{
        char direct;
        int len;
        int vx;//x向速度 
        snake_2 body[1000];
}snake; 


//float randx(float min,float max)
//{
//        float r =(((float)rand())/32767)*(max-min)+min;
//        return r;        
//} 
 
void startup()//初始化 函数 
{
        //cout<<"请输入总人数(不大于1000):"; 
        //cin>>num;
        srand(time(0));//随机种子函数
        snake.direct='d';
        snake.vx=20;
        snake.len=4;
        for(int i=0;i<snake.len;i++)
        {
        	snake.body[i].x=20-i;
        	snake.body[i].y=15;
		}
         
         
        initgraph(800,600);                                //初始化图形界面
        setcolor(RED);        //设置画图线为红色 
        setbkcolor(WHITE);//设置背景颜色为白色
        setfillcolor(RED);//设置填充颜色为红色 
        setfont(25,0,"幼圆");//(字体高度,字体宽度(为0即为自适应),字形)设置字体为25,幼圆字体
        setbkmode(TRANSPARENT); //设置文字背景色为透明(默认为有背景色)        
}




void snake_move()
{
	for(int i=snake.len;i>0;i--)
	{
		snake.body[i].x=snake.body[i-1].x;
		snake.body[i].y=snake.body[i-1].y;
	}
	switch(snake.direct)
	{
		case 'w':snake.body[0].y=snake.body[1].y-1;
				 snake.body[0].x=snake.body[1].x;
				 break;
		case 's':snake.body[0].y=snake.body[1].y+1;
				 snake.body[0].x=snake.body[1].x;
				 break;
		case 'd':snake.body[0].x=snake.body[1].x+1;
				 snake.body[0].y=snake.body[1].y;
				 break;
		case 'a':snake.body[0].x=snake.body[1].x-1;
				 snake.body[0].y=snake.body[1].y;
				 break;
	}
}
 
 
 
 
 
void update() //更新函数 
{
		if(kbhit())
    	{
			snake.direct=getch();
    		snake_move();
    	}      
        
}

 
void draw() //绘制小球 
{
	
		for(int i=0;i<40;i++)
		for(int j=0;j<30;j++)
		{
			setfillcolor(WHITE);
			bar(i*20,j*20,(i+1)*20,(j+1)*20);
		}
		for(int i=0;i<snake.len;i++)
		{
			setfillcolor(hsv2rgb(10*i%360, 1, 1));//设置填充颜色  参数(颜色,饱和度,明亮度) 
			bar(snake.body[i].x*20,snake.body[i].y*20,(snake.body[i].x+1)*20,(snake.body[i].y+1)*20);
		}
		Sleep(10);
        cleardevice();
         
                        
//        fillellipse(mousePosX, mousePosY, ball[0].radius, ball[0].radius); //画一个实心圆
//         
//        for(int i=1;i<=num;i++)
//        {
//                setfillcolor(RED);                
//                fillellipse(ball[i].x, ball[i].y, ball[i].radius, ball[i].radius); //画一个实心圆
//        }
//        //xyprintf(20,20,"距离:%d",temp);//格式化输出文字
//        xyprintf(20,20,"计时:%d",time_count/1000);//格式化输出文字
//        Sleep(10); 
//        time_count+=10;
}
 

 
int main()
{
        startup();//初始化 
        while(1)
        {
				draw();//绘制小球 
                update(); //更新数据
        } 
         
        setfont(100,0,"幼圆");
        xyprintf(10,200,"GAMEOVER");//格式化输出文字
        getch();
         
        return 0;
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-2-13 04:54 , Processed in 0.051396 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表