简单说两句,这个双人对战只是实现了两人的对分,并没有做出相应判断,感兴趣的小伙伴可以自己动手写写。玩家一按数字1键,玩家二按数字2键,而且随着插入的针越来越多,速度也会越来越快。不过,你们可以自己更改参数来控制加速度的大小。可以自己研究下如何来控制加速度,实在想不通代码中也有注释可以让其找到相应的地方。
1.所用头文件

#include "stdafx.h"
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <time.h>

主函数

int main()
{const float Pi = 3.1415926; // Pi常量int width = 800; // 画面宽度int height = 600;// 画面高度initgraph(width, height); // 新开一个画面setbkcolor(RGB(255, 255, 255)); // 背景为白色setlinestyle(PS_SOLID, 3); // 线宽为3,这样针看起来更明显float lineLength = 160; // 针的长度float xEnd, yEnd; // 针的终点位置坐标(针起始位置为圆心)float rotateSpeed = Pi / 360; // 针的旋转速度int lineNum = 0;  // 在旋转的针的个数float Angles[1000]; // 浮点数数组,存储所有针的旋转角度,最多1000根针int score1 = 0; // 得分int score2=0;int i;BeginBatchDraw(); // 开始批量绘制while (1) // 重复循环{cleardevice(); // 以背景色清空背景setlinecolor(RGB(0, 0, 0)); // 设置针颜色为黑色line(0, height / 2, lineLength, height / 2); // 左边发射区域的一根针line(640, height / 2, width, height / 2); // 右边发射区域的一根针for (i = 0; i < lineNum; i++) // 对所有旋转针进行遍历{Angles[i] = Angles[i] + rotateSpeed; // 角度增加if (Angles[i]>2 * Pi) // 如果超过2*Pi,就减去2*Pi,防止角度数据无限增加Angles[i] = Angles[i] - 2 * Pi; //xEnd = lineLength*cos(-Angles[i]) + width / 2; // 计算针的末端坐标yEnd = lineLength*sin(-Angles[i]) + height / 2;setlinecolor(RGB(0, 0, 255)); // 设定旋转针的颜色为蓝色if (i == lineNum - 1) // 最新发射的一根针,设定颜色为红色setlinecolor(RGB(255, 0, 0));line(width / 2, height / 2, xEnd, yEnd); // 绘制一根针}if (_kbhit() && rotateSpeed != 0) // 如果按键,并且旋转速度不等于0{char input = _getch(); // 获得用户按键输入if (input == '1') // 如果为1键{lineNum++; // 针的个数加1rotateSpeed += Pi / 720;//实现越来越快Angles[lineNum - 1] = Pi; // 这根新增加针的初始角度xEnd = lineLength*cos(-Angles[lineNum - 1]) + width  / 2; //新增针的末端坐标yEnd = lineLength*sin(-Angles[lineNum - 1]) + height / 2;line(width / 2, height / 2, xEnd, yEnd); // 绘制出这根新增加的针for (i = 0; i<lineNum - 1; i++) // 拿新增加的针和之前所有针比较{// 如果两根针之间角度接近,认为碰撞,游戏失败if (fabs(Angles[lineNum - 1] - Angles[i]) < Pi / 60){rotateSpeed = 0; // 旋转速度设为0break; // 不用再比较了,循环跳出}}score1 += 1; // 得分+1}if (input == '2') // 如果为2键{lineNum++; // 针的个数加1rotateSpeed += Pi / 720;//实现越来越快Angles[lineNum - 1] = 0; // 这根新增加针的初始角度xEnd = lineLength*cos(-Angles[lineNum - 1]) + width / 2; //新增针的末端坐标yEnd = lineLength*sin(-Angles[lineNum - 1]) + height/ 2;line(width / 2, height / 2 ,xEnd, yEnd); // 绘制出这根新增加的针for (i = 0; i<lineNum - 1; i++) // 拿新增加的针和之前所有针比较{// 如果两根针之间角度接近,认为碰撞,游戏失败if (fabs(Angles[lineNum - 1] - Angles[i]) < Pi / 60){rotateSpeed = 0; // 旋转速度设为0break; // 不用再比较了,循环跳出}}score2 += 1; // 得分+1}}setfillcolor(HSVtoRGB(0, lineNum / 60.0, 0.8)); // 绘制中间的圆盘,针越多,其颜色越鲜艳setlinecolor(HSVtoRGB(0, 0.9, 0.8)); // 设置圆盘线条颜色为红色int xEnd = 400; // 圆心坐标int yEnd = 300;int radius; // 圆半径   int j;float offset;  // 同一半径各组扇形之间的角度偏移量float totalOffset = 0; // 不同半径之间的角度偏移量for (radius = 60; radius > 0; radius = radius - 20) // 半径从大到小绘制{int left = xEnd - radius; // 圆外切矩形左上角x坐标int top = yEnd - radius; // 圆外切矩形左上角y坐标int right = xEnd + radius; // 圆外切矩形右下角x坐标int bottom = yEnd + radius; // 圆外切矩形右下角y坐标    for (j = 0; j < 20; j++) // 绕着旋转一周,绘制扇形区域{offset = j * Pi / 10 + totalOffset; // 各组扇形之间偏移的角度setfillcolor(RGB(0, 240, 220));// 设置填充颜色为青色solidpie(left, top, right, bottom, offset, 2 * Pi / 60 + offset); // 画填充扇形setfillcolor(RGB(255, 255, 255));// 设置填充颜色为白色solidpie(left, top, right, bottom, 2 * Pi / 60 + offset, 3 * Pi / 60 + offset);//画填充扇形setfillcolor(RGB(200, 0, 0));// 设置填充颜色为红色solidpie(left, top, right, bottom, 3 * Pi / 60 + offset, 5 * Pi / 60 + offset);//画填充扇形setfillcolor(RGB(0, 0, 0));// 设置填充颜色为黑色solidpie(left, top, right, bottom, 5 * Pi / 60 + offset, 6 * Pi / 60 + offset);//画填充扇形}totalOffset = totalOffset + Pi / 20; // 不同半径间角度偏移量为Pi/20}TCHAR s1[20]; // 定义字符串数组TCHAR s2[20]; // 定义字符串数组_stprintf(s1, _T("%d"), score1); // 将score1转换为字符串_stprintf(s2, _T("%d"), score2); // 将score2转换为字符串settextstyle(50, 0, _T("Times")); // 设置文字大小、字体settextcolor(RGB(50, 50, 50));  // 设置字体颜色outtextxy(65, 200, s1); // 输出得分文字outtextxy(665, 200, s2); // 输出得分文字FlushBatchDraw(); // 批量绘制Sleep(10); // 暂停10毫秒}closegraph();  // 关闭画面return 0;
}

3.实现效果

C++:见缝插针双人对战相关推荐

  1. 用python做双人五子棋_基于python的socket实现单机五子棋到双人对战

    基于python的socket实现单机五子棋到双人对战,供大家参考,具体内容如下 本次实验使用python语言.通过socket进行不同机器见的通信,具体可以分为以下四步:1.创建ServerSock ...

  2. java井字游戏_java井字棋源代码(双人对战版)

    [实例简介] [实例截图] [核心代码] package com.pan.ttt; import java.awt.*; import java.awt.event.*; import javax.s ...

  3. 400行代码实现双人对战五子棋(适合新手入门)

    400行代码实现双人对战五子棋(适合新手入门) 跟上一篇博客一样,都是看了慕课网的视频之后写的学习记录,记录一下实现的思路,大部分内容比较简单,但也从中学到了很多东西. 按惯例首先看一下效果:(素材都 ...

  4. C语言实现简易三子棋,支持双人对战,电脑可拦截

    在学习二维数组后我们加以应用能写出三子棋这样一个小游戏.具体实现并不复杂. 基本思路: 游戏首先打印菜单,由我们选择单人游戏,双人游戏或退出游戏. 三子棋需要一个棋盘,我们可以通过循环打印来构造一个简 ...

  5. N子棋(外加双人对战)详解!推荐!!!

    文章目录 准备工作 创建菜单 进入游戏 初始化棋盘.打印棋盘 玩家下棋.电脑下棋.生成随机数 判断输赢 大家好!时隔多天,我终于写博客了,真的是开心!这一次带来的是N子棋有双人对战和单人下棋,请认真看 ...

  6. c语言联机游戏,C/C++ 游戏 贪吃蛇双人对战版

    贪吃蛇双人对战版--C语言 最近写的,用于交最后一次结构化程序设计课的作业,闲暇之余传到网上,仅供参考,新手上路,请多指教. 话不多说,先附上下载链接.http://download.csdn.net ...

  7. Qt、C++实现五子棋人机对战与本地双人对战

    1.基本介绍 软件基于Qt5.6.1,利用C++语言进行编写. 五子棋有两种游戏模式:人机对战和双人对战. 在进入游戏时玩家选择游戏模式. 选择人机对战玩家会执黑棋.电脑执白棋进行对决.选择双人对战会 ...

  8. 51单片机系列(三)51 单片机游戏设计 —— 双人对战小游戏(石头剪刀布)

    本博客51单片机实训系列,旨在记录本人在大学上单片机技术这门课时所做的课程实训内容,并与大家分享基于51单片的课程作业,如果作业中的某些细节和代码能给大家一点启发那就更好了,希望大家能用51单片机做出 ...

  9. 五子棋双人对战c语言课程设计,五子棋(双人对战) C语言课程设计.doc

    五子棋(双人对战) C语言课程设计 C语言程序设计 题 目 五子棋(双人对战) 指导教师 曹东燕 学生姓名 夏文龙 于文杰 邢健 学 号 201000802032 201000802114 20100 ...

最新文章

  1. 一图看懂《中关村人工智能产业培育行动计划》
  2. win10系统定位服务器地址,win10系统定位服务器地址
  3. MySQL 5.1中IN查询不要用到NULL条件
  4. linux脚本中怎么直接替换,linux-如何快速替换IP
  5. 预处理器sass_Sass — Web的预处理器装饰
  6. 【Java 8 新特性】Java Stream.of()用法示例
  7. 微擎后端/知识付费阅读店铺小程序 V5.1.0 全套源码
  8. CSDN 博客 美化 个性化
  9. iOS 设计模式浅析 0 - 前言
  10. ffmpeg实现摄像头拉流_ffmpeg推流拉流的几种方式
  11. win7如何设置通电自动开机_WIN7自动开机怎么设置?
  12. 深入浅出Yolo系列之Yolov3Yolov4Yolov5Yolox核心基础知识完整讲解
  13. [Python Nonebot]QQ自动聊天机器人
  14. Oracle 对 JDK收费和.NET Core 给我们的机遇
  15. 5G mib和sib的意义
  16. Python初学者必须吃透的69个内置函数
  17. 一文搞懂如何兼容苹果HomeKit?智汀助你轻松打造智慧家庭
  18. Unity利用代码生成空心立方体(立方体挖走一个圆柱)
  19. 1253 Dungeon Master
  20. python输入esc退出循环_如何用Esc键停止GhPython或者RhinoPython脚本运行

热门文章

  1. 15 数据库基于中间件的读写分离
  2. 免疫学课件软件测试,免疫学检测法
  3. Adobe 也加入内卷战场,推出AI图像生成产品 Firefly,宣称自己是没有原罪的AI模型...
  4. 《DeepLearning.ai》第六课:优化算法(Optimization algorithms)
  5. 微服务系统之认证管理
  6. 网管内幕 — 服务器管理之不传之秘
  7. sql语句创建外键关联
  8. JAVA Spring Shiro mybaits 后台管理 二次开发框架 OA ERP CMS 微信 IM即时通讯(websocket)
  9. C语言练习——回文素数
  10. 字节、位、bit、byte、KB、B、字符