球球大作战

2024-09-07 05:44
文章标签 作战 球球

本文主要是介绍球球大作战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码: 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdbool.h>
#include<graphics.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>//随机数库文件
#include<math.h>
#include<tchar.h>/*
注重的是思路 思路 思路游戏有哪些元素?
玩家 食物 背景音乐坐标:x,y; 球体 :r
*///定义属性
#define FOOD_NUM 100
#define WIDTH 1024
#define HEIGHT 620
struct Ball
{int x;int y;int r;bool flag;//状态 true:活着; false:死了DWORD color;//无符号long
};//玩家
struct Ball player;//食物
struct Ball food[FOOD_NUM];//定义一个结构体数组//初始化属性
void gameInit()
{//随机数种子srand((unsigned)time(NULL));//强转为unsignedplayer.x = 100;player.y = 100;player.r = 10;//半径为10player.flag = true;//初始化食物for (int i = 0; i < FOOD_NUM; i++){//食物在画面上是随机的food[i].x = rand() % WIDTH;food[i].y = rand() % WIDTH;//圆的半径不可以为0food[i].r = rand() % 5 + 1;food[i].flag = true;//食物上色好看food[i].color = RGB(rand() % 256, rand() % 256, rand() % 256, );}
}//移动玩家 
void movePlayer()
{char key = _getch();//switch (key)//{//case 72://	player.y -= 2;//	break;//上//case 80://	player.y += 2;//	break;//下//case 75://	player.x -= 2;//	break;//左//case 77://	player.x += 2;//	break;//右//default://	break;//}   //switch case语句只能上下左右,手感不好//异步按键  //获取异步状态 监听按键//球一闪一闪的,是因为双缓冲机制if (GetAsyncKeyState(VK_UP)) {player.y -= 2;}if (GetAsyncKeyState(VK_DOWN)) {player.y += 2;}if (GetAsyncKeyState(VK_LEFT)) {player.x -= 2;}if (GetAsyncKeyState(VK_RIGHT)) {player.x += 2;}
}
//设置游戏界面
void gameDraw()
{//设置一个游戏的背景颜色setbkcolor(WHITE);//清理一下设备cleardevice();//画格子setlinecolor(RGB(230, 231, 239));for (int i = 0; i < WIDTH; i+=10){line(i, 0, i, HEIGHT);//竖线line(0, i, WIDTH,i);//横线}//画食物for (int i = 0; i < FOOD_NUM; i++){if (!food[i].flag)//食物不存在了那么就跳过本次循环continue;//绘制食物颜色setfillcolor(food[i].color);//颜色已经初始化好了,直接绘制填充//绘制食物本体solidcircle(food[i].x, food[i].y, food[i].r);}//玩家是一个圆形setfillcolor(RED);//画在哪里solidcircle(player.x, player.y, player.r);//显示玩家名字TCHAR playername[20] = _T("player");settextcolor(BLACK);settextstyle(20, 0, L"楷体");setbkmode(TRANSPARENT);outtextxy(player.x - textwidth(playername) / 2, player.y, playername);movePlayer();}double distans(struct Ball*b1, struct Ball* b2)
{//sqrt求距离函数 跟下x方+y方return sqrt((b1->x - b2->x) * (b1->x - b2->x) + (b1->y - b2->y )* (b1->y - b2->y));
}
void PlayerEatFood()
{for (int i = 0; i < FOOD_NUM; i++){if (food[i].flag && distans(&food[i],&player)< player.r){food[i].flag = false;//玩家变大player.r += food[i].r / 2;}}
}
int main()
{//创建一个游戏窗口//c/c++有一个窗口文件easyx//创建一个宽为1024 高为640的窗口initgraph(WIDTH, HEIGHT, EW_DBLCLKS);//EW_DBLCLKS参数是规定的//调用初始化结果gameInit();//printf("%d %d %d %d", player.x, player.y, player.r, player.flag);//清空屏幕system("cls");BeginBatchDraw();//窗口闪动,双缓冲机制while (1){gameDraw();FlushBatchDraw();//刷新PlayerEatFood();//暂停一下执行  线程控制速度Sleep(10);};//死循环一直显示窗口//清空屏幕closegraph();return 0;
}

效果:

 

 

思考总结: 

游戏体验感不够好,食物不够多,食物被吃掉后没有新的食物添加;边界处小球移动就看不到了;通过上下左右键移动时不够灵敏

这篇关于球球大作战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144218

相关文章

hihocoder1114 小Hi小Ho的惊天大作战:扫雷·一

1114 : 小Hi小Ho的惊天大作战:扫雷·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 故事背景:密室、监视器与充满危机的广场 “我们还是循序渐进,先来考虑这样一个简单化问题:”小Hi思索片刻,道:“在一个大小为2*N的广场,其中第一行里的某一些格子里可能会有至多一个地雷,而第二行的格子里全都为数字,表示第一行中距离与这个格子不超过2的格子里总共有多少个

[创业之路-145] :做项目做产品,50米/100米短跑与马拉松长跑,跑法不同,几人的小分队作战与兵团战役,打法不同

目录 一、做项目做产品类同于跑步,50米/100米短跑与马拉松长跑,跑法不同 1. 50米/100米短跑与项目/产品短周期开发的类比 2. 马拉松长跑与长期项目/产品开发的类比 3. 跑法不同的核心差异 二、做项目做产品类同于打仗,几人的小分队作战与兵团战役,打法不同 1. 规模与复杂度 2. 战略与战术 3. 沟通与协作 4. 领导力与执行力 5. 风险评估与应对 一、

Linux性能调优大作战:从零到英雄,手把手教你打造极速系统!让你的服务器快如闪电!

第一章 引言 Linux系统性能调优在信息技术领域具有不可忽视的重要性。随着Linux操作系统的广泛应用,从桌面环境到大型服务器集群,其性能优化变得尤为关键。调优不仅可以提升系统的响应速度和吞吐量,还能降低资源消耗,从而延长硬件使用寿命,减少总体拥有成本。本文研究旨在深入探讨Linux系统性能调优的技巧,以期为系统管理员、开发者和研究人员提供实用的参考指南。 在当前的技术背景下,Linux系统

SQLite Insert 语句:一场数据“移民”大作战

SQLite Insert 语句:一场数据“移民”大作战 嘿,各位数据库的“移民官”们!今天咱们来聊聊SQLite里的一场有趣活动——Insert语句,也就是数据“移民”。没错,就像国家与国家之间有移民,我们的数据也可以在SQLite数据库的各个表之间“移民”。 一、Insert语句的“移民签证” 在SQLite这个“国家”里,想要让数据“移民”到另一个表,你需要给它们办理一张“移民签证”,

赛场上,教练作战计划迅速Get!编码时,巨量复杂代码轻松掌握!

🎁👉点击进入文心快码 Baidu Comate 官网,体验智能编码之旅,还有超多福利!🎁 赛场上,教练作战计划迅速Get!编码时,巨量复杂代码轻松掌握!与文心快码一起为再次夺冠蓄力! 赛场上,教练作战计划迅速Get!编码时,巨量复杂代码轻松掌握 在赛场上,教练以敏锐的洞察力,超强的理解力,迅速制定作战计划。同样,在编程的浩瀚宇宙里,面对巨量而复杂的代码海洋,文心

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 披萨大作战(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 https://app5938.acapp.acwing.com.cn/contest/2/problem/OD1067 🌍 评测功能需要 ⇒ 订阅专栏 ⇐

FAFU-1198 小三大作战 多重匹配

http://acm.fafu.edu.cn/problem.php?id=1198 #include "stdio.h"#include "string.h"const int maxn = 105;int map[maxn][maxn],cap[maxn],data[maxn][maxn],flow[maxn];;int n,m;bool vis[maxn];bool dfs

LeetCode contest 182 5369. 统计作战单位数

Table of Contents 一、中文版 二、英文版 三、My answer 四、解题报告 一、中文版  n 名士兵站成一排。每个士兵都有一个 独一无二 的评分 rating 。 每 3 个士兵可以组成一个作战单位,分组规则如下: 从队伍中选出下标分别为 i、j、k 的 3 名士兵,他们的评分分别为 rating[i]、rating[j]、rating[k]作战单位需满足

【转】nbsp;软件开发人员的作战手册nbsp;-nbsp;…

1.  程序员的职业准则是:诚实(如实的报告你的状态,风险和出现的问题),守信(承诺完成的任务就要按时完成),尊重(尊重给你的代码提建议的同事,对事不对人)。 2.  写有BUG 的代码和写没有 BUG 的代码花费的时间是一样的。 3.  BUG是会成长的,存活时间越长生命力越顽强。 4.  如果一个笨方法可以解决问题,那它就不是笨方法。 5.  把你的工作分割成小时级的目标任务,你会

美国空军出版物:网络空间作战

这份文件是《AIR FORCE DOCTRINE PUBLICATION 3-12: CYBERSPACE OPERATIONS》,即美国空军教义出版物3-12,关于网络空间作战。 该文件详细阐述了美国空军在网络空间领域的组织、规划、执行、评估以及相关的政策、角色和责任。 以下是其核心内容的概述: 网络空间作战的理解:网络空间被定义为一个全球性的领域,包含信息技术基础设施的互相依赖网络