Visual Studio 控制台程序世界杯足球C语言版

  • 程序之美
  • 前言
  • 主体
    • 运行效果
    • 核心代码
    • 逻辑分析
  • 结束语

程序之美

前言

一年一度的世界杯如期而至,相信很多球迷小伙伴们一定不会错过这个难得的好机会,大饱眼福,美美的看上几场。
说起国际足联世界杯(FIFA World Cup),简称“世界杯”,我相信很多小伙伴们都一定不陌生,下面是百度百科中对世界杯的相关介绍:世界杯是由全世界国家级别球队参与,象征足球界最高荣誉,并具有最大知名度和影响力的足球赛事。 世界杯全球电视转播观众超过35亿 [1] 。 世界杯每四年举办一次,任何 国际足联 会员国(地区)都可以派出代表队报名参加这项赛事。 巴西国家队 是夺得世界杯冠军最多的球队(5次),并且在3夺世界杯后永久地保留了前任世界杯冠军奖杯 雷米特杯 。 现代足球发源地为英格兰 [2] ,其代表队在1966年首夺世界杯。 而现在的 世界杯奖杯 是 大力神杯 ,由4夺世界杯冠军的德国在1974年首次捧杯并一直沿用。 2002年韩日世界杯,中国国家队首次晋级世界杯决赛圈 [3] 。 2022年卡塔尔世界杯于北京时间2022年11月21日至12月18日举行。
作为一名程序员,为了能够表达出对世界杯的钦慕和爱意,我们只能够拿起手中的键盘,绘制出生动的足球,为足球喝彩,为世界杯喝彩!
故此,整理出一个世界杯的C语言测试程序,希望能够帮助到各位初学C语言的小伙伴,避免走弯路,费时费力。

主体

本篇我们先看下基于Visual Studio 控制台程序世界杯足球C语言版。话不多说,先看下效果图。

运行效果

静态的足球:

旋转的球体:

C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元,可以用来写系统软件。
C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

核心代码

静态的足球:

#include<graphics.h>
#include<math.h>
#include<conio.h>
#define PI acos(-1.0)int main()
{initgraph(640, 480);setbkcolor(BLUE);setlinecolor(BLACK);cleardevice();setlinestyle(PS_SOLID, 4);setfillcolor(WHITE);fillcircle(320, 240, 150);    // 绘制一个球形状setlinestyle(PS_SOLID, 2);POINT pts[5];POINT Fpts[5];POINT Zpts[5];// 计算五边形的五个顶点坐标double a = PI / 2;for (int i = 0; i < 5; i++){pts[i].x = int(320 + cos(a) * 60);pts[i].y = int(240 - sin(a) * 60);Zpts[i].x = int(320 + cos(a) * 100);Zpts[i].y = int(240 - sin(a) * 100);Fpts[i].x = int(320 + cos(a) * 110);Fpts[i].y = int(240 - sin(a) * 110);a += PI * 2 / 5;}setlinecolor(BLACK);setfillcolor(RED);solidpolygon(pts, 5);for (int i = 0; i < 5; i++){line(pts[i].x, pts[i].y, Zpts[i].x, Zpts[i].y);}POINT Spts[10];POINT Wpts[20];a = PI / 2 + PI / 20;for (int i = 0; i < 20; i++){Wpts[i].x = int(320 + cos(a) * 150);Wpts[i].y = int(240 - sin(a) * 150);a += PI * 1 / 10;}a = PI / 2 + PI / 10;for (int i = 0; i < 10; i++){Spts[i].x = int(320 + cos(a) * 128);Spts[i].y = int(240 - sin(a) * 128);a += PI * 1 / 5;}int P = 9;for (int i = 0; i < 5; i++){line(Zpts[i].x, Zpts[i].y, Spts[P].x, Spts[P].y);P++;if (P == 10){P = 0;}line(Zpts[i].x, Zpts[i].y, Spts[P].x, Spts[P].y);P++;}for (int i = 0; i < 9; i++){line(Spts[i].x, Spts[i].y, Spts[i + 1].x, Spts[i + 1].y);i++;}int PS = 0;for (int i = 0; i < 20; i++){if (i % 2 == 0){if (PS % 2 == 0){line(Wpts[i].x, Wpts[i].y, Spts[i / 2].x, Spts[i / 2].y);}else{line(Wpts[i + 1].x, Wpts[i + 1].y, Spts[i / 2].x, Spts[i / 2].y);}PS++;}}polygon(Wpts, 20);setlinestyle(PS_SOLID, 3);circle(320, 240, 150);setfillcolor(RED);for (int i = 0; i < 5; i++){floodfill(Fpts[i].x, Fpts[i].y, BLACK);}_getch();return 0;
}

旋转的球体:

#include <math.h>
#include <windows.h>
#define PI 3.1415926
#define SX 8
#define SY 16
#define DX PI / SX
#define DY PI * 2 / SY
#define X(a, b) (cx + v[a][b].x * r), (cy + v[a][b].y * r)
typedef struct { double x, y; } Vec;
void calc(double i, double j, double rot, Vec* v) {double x = sin(i) * cos(j), y = sin(i) * sin(j), z = cos(i),s = sin(rot), c = cos(rot), c1 = 1 - c, u = 1 / sqrt(3), u2 = u * u;v->x = x * (c + u2 * c1) + y * (u2 * c1 - u * s) + z * (u2 * c1 + u * s);v->y = x * (u2 * c1 + u * s) + y * (c + u2 * c1) + z * (u2 * c1 - u * s);
}
int main() {HWND hwnd = GetConsoleWindow(); HDC hdc1 = GetDC(hwnd);double rot = 0;while (1) {RECT rect; GetClientRect(hwnd, &rect); int w = rect.right, h = rect.bottom, cx = w / 2, cy = h / 2, r = h * 0.375;HDC hdc2 = CreateCompatibleDC(hdc1); HBITMAP bmp = CreateCompatibleBitmap(hdc1, w, h); SelectObject(hdc2, bmp);SelectObject(hdc2, GetStockObject(WHITE_PEN));Vec v[SX + 1][SY + 1];for (int i = 0; i <= SX; ++i) for (int j = 0; j <= SY; ++j) calc(i * DX, j * DY, rot, &v[i][j]);for (int i = 0; i < SX; ++i) for (int j = 0; j < SY; ++j) {MoveToEx(hdc2, X(i, j), NULL); LineTo(hdc2, X(i + 1, j));MoveToEx(hdc2, X(i, j), NULL); LineTo(hdc2, X(i, j + 1));}BitBlt(hdc1, 0, 0, w, h, hdc2, 0, 0, SRCCOPY); DeleteObject(bmp); DeleteDC(hdc2);rot += 0.01; Sleep(5);}
}

逻辑分析

结束语

好了,今天就说这么多了,希望小伙伴们能从这篇文章中学到东西,也真心希望能够帮助正在苦学Visual Studio 程序设计的小伙伴们,你们的成长是我最大的幸福。很感谢您能够在百忙之中浏览我的文章,有需要源码的小伙伴可以私信我。
源码地址:https://download.csdn.net/download/hnjzfwy/87296180

Visual Studio 控制台程序世界杯足球C语言版(附源码)相关推荐

  1. Visual Studio 控制台程序世界杯足球C语言版

    Visual Studio 控制台程序世界杯足球C语言版 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 一年一度的世界杯如期而至,相信很多球迷小伙伴们一定不会错过这个难得 ...

  2. Visual Studio控制台程序输出窗口一闪而过的解决方法

    Visual Studio控制台程序输出窗口一闪而过的解决方法 参考文章: (1)Visual Studio控制台程序输出窗口一闪而过的解决方法 (2)https://www.cnblogs.com/ ...

  3. C语言丨整蛊必备小程序,好玩炸翻天(附源码)

    前言 感觉学了c语言后仍然一无是处?!!想要整蛊一下朋友仍然不会?!! 别慌,看完这篇文章,你就会了. 下面给大家分享两个基础的整蛊小程序 1.我是猪关机程序 2.无限弹窗程序 一.我是猪关机程序 效 ...

  4. Springboot校园在线打印预约系统小程序【纯干货分享,附源码91740】

    摘 要 本文设计了一种基于微信支付的校园在线打印预约系统小程序,系统为人们提供了方便快捷的线上打印服务,包括打印预约.注册登录.打印平台.校园资讯等,用户不仅能够方便快捷在线搜索打印方式.还能进行打印 ...

  5. uniapp开发——微信小程序获取上传图片的拍摄时间(附源码)

    如果是单纯地使用uniapp做app或者h5开发,可以直接在上传的时候 uni.chooseImage 获取到图片的最后修改日期,那么可以使用其作为拍摄日期. 但是,一切的一切都源于微信小程序的接口封 ...

  6. 情人节又到了 程序员高逼格表白套路 附源码

    又到了每月都有的情人节了(笑) 一个相当重要的日子:214,不知道是从啥时候开始兴起来的,单身的羡慕着有对象的,有对象的羡慕着单身的, 但也有很大一部分单身人士等待着表白的好机会,毕竟天时地利,这么好 ...

  7. 微信小程序富文本编辑器editor+rich-text(附源码)

    之前小程序一直都是使用自己写的接口,小程序远程获取使用富文本编辑器的内容,比如UEditor,wangEditor等.我们可以选择插件wxparse和自带的rich-text,但是这些并不能完全转义他 ...

  8. 2020最新款影视小程序后端+前端搭建详细教程附源码

    准备工作 教程很详细一步步操作都可以上线,教程都是亲自发布的,希望各位要搬运的时候备注来自哪里 购买云服务器:教程等待更新 购买域名+配置ssl证书:教程待更新 常见问题: 问:域名需要备案吗? 回: ...

  9. 贪吃蛇c语言程序 简书,C语言/C++项目源码分享—贪吃蛇

    /* 项目内容:贪吃蛇 开发环境:vs2013+easyx */ 这个项目是一个小游戏-贪吃蛇项目,代码如下 #include #include //包含easyx图形库,可以使用给我们提供的一些函数 ...

最新文章

  1. 清除messages
  2. 服务器主板开机无显维修,电脑主板开机无显示的维修方法-1
  3. python爬虫代码模板_Python:学习Python爬虫的第一天
  4. ASP.NET中MVC编程模式简介与搭建HelloWorld项目
  5. python processpoolexector 释放内存_使用Python的multiprocessing.pool,内存使用量不断增长...
  6. C#用Zlib压缩或解压缩字节数组
  7. HaProxy+Keepalived+Mycat高可用群集配置
  8. winform 分页控件分享(二)
  9. 跳转到系统默认的Home
  10. CIF、QCIF、HD1、D1格式介绍
  11. SQL文件导入数据库【保姆级教程】
  12. 天正电气lisp是什么文件_电气CAD绘图基础幻灯片
  13. java服务端监控平台设计
  14. 各种光纤接口类型介绍
  15. pdf文档页码怎么添加
  16. modis 通道简介
  17. 正则表达式判断是否符合USD格
  18. AspectJ in Action(2)
  19. 基于GBT28181:SIP协议组件开发-----------第三篇SIP注册流程分析实现
  20. NNDL 实验五 前馈神经网络(1)二分类任务

热门文章

  1. 【Thrift】Thrift框架和使用教程-- C/S框架使用教程
  2. Flash CS5中文帮助文档CHM版
  3. RIP 此篇用来记录日常工作中使用到的正则表达式
  4. 大数据金融行业企业应用几点思考
  5. UVALive - 4380 Javanese Cryptoanalysis
  6. 抖音上炫酷的网红文字时钟
  7. 豆邮windows客户端(第三方)开发详解
  8. 读者变为用户,别掉进算法的“陷阱”
  9. emplace_back和push_back对比分析
  10. 双环形图表_(双圆环图表)如何用excel制作多层圆环对比图