一丶双人游戏

二丶实验项目功能描述

这次实验为双人游戏,首先实现双人的输入,一名玩家通过asdw控制方向,另一名玩家通过4568控制方向,利用函数实现两个按键同时被按下时的情况,最后实现球在两个挡板间的反弹操作。

三丶项目模块结构

游戏最终代码:

#include <conio.h>
#include <graphics.h>
#include<windows.h>
#define High 480  // 游戏画面尺寸
#define Width 640
// 全局变量
int ball_x,ball_y; // 小球的坐标
int ball_vx,ball_vy; // 小球的速度
int radius; // 小球的半径
int bar1_left,bar1_right,bar1_top,bar1_bottom; // 挡板1的上下左右位置坐标
int bar2_left,bar2_right,bar2_top,bar2_bottom; // 挡板2的上下左右位置坐标
int bar_height,bar_width; // 挡板的高度、宽度void startup()  // 数据初始化
{ball_x = Width/2;ball_y = High/2;ball_vx = 1;ball_vy = 1;radius = 20;bar_width = Width/30;bar_height = High/2;bar1_left = Width * 1/20;bar1_top = High/4;bar1_right = bar1_left + bar_width; bar1_bottom = bar1_top + bar_height;    bar2_left = Width * 18.5/20;bar2_top = High/4;bar2_right = bar2_left + bar_width; bar2_bottom = bar2_top + bar_height;initgraph(Width,High);BeginBatchDraw();
}void clean()  // 消除画面
{setcolor(BLACK);setfillcolor(BLACK);fillcircle(ball_x, ball_y, radius);     fillcircle(ball_x, ball_y, radius); bar(bar1_left,bar1_top,bar1_right,bar1_bottom); bar(bar2_left,bar2_top,bar2_right,bar2_bottom);
}   void show()  // 显示画面
{setcolor(GREEN);setfillcolor(GREEN);fillcircle(ball_x, ball_y, radius); // 绘制绿圆 setcolor(YELLOW);setfillcolor(YELLOW);bar(bar1_left,bar1_top,bar1_right,bar1_bottom); // 绘制黄色挡板bar(bar2_left,bar2_top,bar2_right,bar2_bottom); FlushBatchDraw();// 延时Sleep(3);
}   void updateWithoutInput()  // 与用户输入无关的更新
{// 挡板和小圆碰撞,小圆反弹if (ball_x+radius>=bar2_left && ball_y+radius>=bar2_top && ball_y+radius<=bar2_bottom)ball_vx = -ball_vx; else if (ball_x-radius<=bar1_right && ball_y+radius>=bar1_top && ball_y+radius<=bar1_bottom)ball_vx = -ball_vx; // 更新小圆坐标ball_x = ball_x + ball_vx;ball_y = ball_y + ball_vy;if ((ball_x<=radius)||(ball_x>=Width-radius))ball_vx = -ball_vx;if ((ball_y<=radius)||(ball_y>=High-radius))ball_vy = -ball_vy;
}void updateWithInput()  // 与用户输入有关的更新
{   int step = 1;if (GetAsyncKeyState(0x57) & 0x8000 )  // wbar1_top-=step;if ((GetAsyncKeyState(0x53) & 0x8000)) //sbar1_top+=step;if ((GetAsyncKeyState(VK_UP) & 0x8000))     // 上方向键bar2_top-=step;if ((GetAsyncKeyState(VK_DOWN) & 0x8000))  // 下方向键bar2_top+=step; bar1_bottom = bar1_top + bar_height;    bar2_bottom = bar2_top + bar_height;
}void gameover()
{EndBatchDraw();closegraph();
}int main()
{startup();  // 数据初始化    while (1)  //  游戏循环执行{clean();  // 把之前绘制的内容取消updateWithoutInput();  // 与用户输入无关的更新updateWithInput();     // 与用户输入有关的更新show();  // 显示新画面}gameover();     // 游戏结束、后续处理return 0;
}

四丶实验界面展示

五丶代码托管链接

https://gitee.com/Talent_Wei/c_language_warehouse

六丶实验总结

问题: 这次实验的游戏运行结果前面没成功
解决方法:重新敲了一次代码
感想:这次实验依然涉及到很多从未学过的知识,游戏越来越有趣,代码也越来越复杂。

转载于:https://www.cnblogs.com/tqw0728-Mars/p/11031959.html

2019年第四次课程设计实验报告相关推荐

  1. 2019年春第四次课程设计实验报告

    一.实验项目名称 项目名称:flappy bird. 二.实验项目功能描述 功能描述:通过空格键来控制小鸟飞行的位置以此来躲过障碍物. 三.项目模块结构介绍(文字+总体模型) 第一模块:游戏图片的导入 ...

  2. 2019春第二次课程设计实验报告

    2019春第二次课程设计实验报告 一.实验项目名称: 贪吃蛇游戏编写: 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制, 同时对小蛇数据的保存,如何实现转弯的效 ...

  3. 2019春第一次课程设计实验报告

    2019春第一次课程设计实验报告 一.实验项目名称 反弹球消砖块 二 .实验项目功能描述 用c语言编写一个反弹球小游戏,可以自己改变游戏的各项数据,可以通过键盘的 "a",&quo ...

  4. 2109春第一次课程设计实验报告

    2019春第一次课程设计实验报告 一.实验项目名称: 飞机游戏的编写 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现控制飞机的移动功能,增加其实用度, 同时还实现发射子弹和出现敌机的操 ...

  5. java课程设计实验报告_javaweb课程设计实验报告

    javaweb课程设计实验报告 1 湖南科技大学计算机科学与工程学院 WEB 编程课程设计报告 题目: 网上购物商店 学 号:1111111111 姓 名: 1 指导老师: 1 完成时间: 11111 ...

  6. 西工大计算机操作系统实验报告,西工大计算机操作系统课程设计实验报告bh05xh5...

    <西工大计算机操作系统课程设计实验报告bh05xh5>由会员分享,可在线阅读,更多相关<西工大计算机操作系统课程设计实验报告bh05xh5(7页珍藏版)>请在人人文库网上搜索. ...

  7. (MFC)广州大学大一下课程设计实验报告-学生成绩管理系统

    程序设计 课程设计实验报告 学院: 计算机科学与网络工程学院 专业班级: XXX 姓名: XXX 学号: 190XXXXXXX 指导老师:张艳玲 2020.6.29 目录 一.课程设计题目及内容 二. ...

  8. 微型计算机测控系统课程设计报告,微机原理课程设计实验报告--步进电机控制.docx...

    文档介绍: 2010-2011学年第一学期 微机原理课程设计实验报告 课题名:步进电机控制 一.课题内容和提示: 编程提示: (1)步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机做步进式旋 ...

  9. c语言课程设计实验报告模板,[C语言课程设计实验报告模板.doc

    [C语言课程设计实验报告模板 <程序设计基础> 课程设计报告 课程设计题目 通讯录管理系统 指导教师:____李 萍____ 班 级:__ 0903班_ _ __ 学生姓名:2009100 ...

  10. 计算机组成原理课程实验报告,计算机组成原理课程设计实验报告

    <计算机组成原理课程设计实验报告>由会员分享,可在线阅读,更多相关<计算机组成原理课程设计实验报告(18页珍藏版)>请在人人文库网上搜索. 1.计算机组成原理课程设计实验报告( ...

最新文章

  1. R语言绘图-常用参数
  2. 思科路由器MTU及ip tcp adjust-mss测试
  3. 添加类iOS cocos2d 2游戏开发实战(第3版)
  4. 编程软件python下载-python 2.7官方版
  5. castle之动态代理
  6. 王侠对话农民丰收节交易会 万祥军:解读供销社服务平台
  7. Linux物理内存初始化
  8. React Native Keyboard使用详解
  9. centos java7安装_Centos7 JDK7安装配置
  10. git学习笔记-(5-树对象)
  11. python嵌套字典的建立_python学习之第八篇——字典嵌套之字典中嵌套字典
  12. log4j2配置文件详解
  13. mac电脑投屏到小米盒子_苹果手机,小米盒子投屏,连接不上,什么情况?
  14. 市场、运营、销售什么区别?
  15. ios QQ下拉列表 UITableViewHeaderFooterView
  16. Matrix TraceCanary
  17. 关于勒索软件的硬道理:我们还没有准备好,这是一场与新规则的斗争,而且它的影响还没有接近顶峰。
  18. 伦敦银走势分析最新,十大国际黄金白银交易平台排名
  19. Android高德地图基本开发/在线高德离线地图开发/断网使用离线地图(Assets文件夹的使用)
  20. oracle00312,Oracle教程:ORA-16038 ORA-19809 ORA-00312 错误解决

热门文章

  1. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_17maven工程运行环境修改...
  2. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_9_字节输入流读取字节数据...
  3. python进行接口请求,第一个接口返回的数据作为第二个参数的入参
  4. Spark standalone运行模式(图文详解)
  5. 第一百六十四节,jQuery,常规选择器
  6. ios判断点击的坐标点
  7. 第6章 人口城市化
  8. 批量给hive的表加分区
  9. 存储过程从入门到熟练(多个存储过程完整实例及调用方法)
  10. ajax表单提交post(错误400) 序列化表单(post表单转换json(序列化))