如何用C语言做PONG游戏,游戏第一弹--pong游戏
已结贴√
问题点数:20 回复次数:8
游戏第一弹--pong游戏
#include
#include
#include
#include
void Button();
void Score(int s1,int s2);
typedef struct line{
int l1;
int l2;
struct line *next;
}LINE;
LINE *creat(LINE *head,int i,int x,int y);
void Huifang(LINE *head);
void Draw(int x1,int y1,int x2,int y2,int x,int y);
void Drawclear(int x1,int y1,int x2,int y2,int x,int y);
int Welcome();
void main()
{
initgraph(800, 480);
int x=200,y=200,x1=5,y1=120,x2=637,y2=120,s1=0,s2=0,dx,dy=3,i=1,j=5;
char c;
LINE *head=NULL;
MOUSEMSG m;
srand( (unsigned)time( NULL ) );
dx = rand() %3+2;
while(true){
j=Welcome();
if(j==3)
break;
}
setbkcolor(WHITE);
cleardevice();
Button();
while(c!=27)
{
BeginBatchDraw();
Drawclear(x1,y1,x2,y2,x,y);
if(x<=x1+20&&y>=y1&&y<=y1+100||x>=x2-10&&y>=y2&&y<=y2+100)
dx=-dx;
if(x>=631){
x=200;
s1++;
}
if(x<=16){
x=200;
s2++;
}
Score(s1,s2);
if(y<=50||y>=448)
dy=-dy;
x+=dx;
y+=dy;
while(MouseHit()){
m = GetMouseMsg();
if(m.uMsg==WM_LBUTTONDOWN&&m.x>=660&&m.x<=750&&m.y>=60&&m.y<=100){
j=1;
break;
}
if(m.uMsg==WM_LBUTTONDOWN&&m.x>=660&&m.x<=750&&m.y>=170&&m.y<=210){
j=0;
break;
}
if(m.uMsg==WM_LBUTTONDOWN&&m.x>=660&&m.x<=750&&m.y>=280&&m.y<=320){
Huifang(head);
break;
}
if(m.uMsg==WM_LBUTTONDOWN && m.x>=660 && m.x<=750 && m.y>=390 && m.y<=430)
closegraph();
}
if(j==1){
head=creat(head,i,x,y);
i++;
}
if (kbhit()){
c = getch();
switch(c)
{
case 'w': if(y1<=40)break;
else{
y1-=20;
break;
}
case 's': if(y1>=342)break;
else{
y1+=20;
break;
}
case 'i': if(y2<=40)break;
else{
y2-=20;
break;
}
case 'k': if(y2>=342)break;
else{
y2+=20;
break;
}
case 27: break;
}
}
Draw(x1,y1,x2,y2,x,y);
FlushBatchDraw();
Sleep(20);
}
EndBatchDraw();
getch();
closegraph();
}
int Welcome()
{
MOUSEMSG m;
IMAGE img;
loadimage(&img, "d:\\6.jpg");
putimage(0, 0, &img);
Sleep(30);
while(MouseHit()){
m = GetMouseMsg();
if(m.uMsg==WM_LBUTTONDOWN&&m.x>=390&&m.x<=460&&m.y>=410&&m.y<=440)
return 3;
}
return 5;
}
void Huifang(LINE *head)
{
while(head->next!=NULL){
setcolor(GREEN);
circle(head->l1,head->l2, 10);
Sleep(20);
setcolor(WHITE);
circle(head->l1, head->l2, 10);
FlushBatchDraw();
head=head->next;
EndBatchDraw();
}
}
LINE* creat(LINE *head,int i,int x,int y)
{
LINE *p, *s;
s = (LINE*)malloc(sizeof(LINE));
s->l1 = x;
s->l2 = y;
if (i==1)
{
s->next = head;
head=s;
return head;
}
for (p=head; p->next!=NULL; p=p->next);
s->next = p->next;
p->next = s;
return head;
}
void Button()
{
char s1[]="记录轨迹",
s2[]="停止记录",
s3[]="回放轨迹",
s4[]="结束游戏";
setcolor(BLACK);
line(3,39,3,462);
line(3,39,650,39);
line(650,39,650,462);
line(3,462,650,462);
rectangle(660,60,750,100);
rectangle(660,170,750,210);
rectangle(660,280,750,320);
rectangle(660,390,750,430);
outtextxy(670,70,s1);
outtextxy(670,180,s2);
outtextxy(670,290,s3);
outtextxy(670,400,s4);
}
void Score(int s1,int s2)
{
char s[5],
s3[]="姓名",
s4[]="分数";
setcolor(BLACK);
outtextxy(100,13,s3);
outtextxy(190,13,s4);
outtextxy(420,13,s3);
outtextxy(510,13,s4);
sprintf(s,"%d",s1);
outtextxy(225,13,s);
sprintf(s,"%d",s2);
outtextxy(545,13,s);
}
void Drawclear(int x1,int y1,int x2,int y2,int x,int y)
{
setcolor(WHITE);
setfillcolor(WHITE);
fillrectangle(x1,y1,x1+10,y1+100);
setcolor(WHITE);
setfillcolor(WHITE);
fillrectangle(x2,y2,x2+10,y2+100);
setcolor(WHITE);
circle(x, y,10);
}
void Draw(int x1,int y1,int x2,int y2,int x,int y)
{
setcolor(YELLOW);
setfillcolor(YELLOW);
fillrectangle(x1,y1,x1+10,y1+100);
setcolor(YELLOW);
setfillcolor(YELLOW);
fillrectangle(x2,y2,x2+10,y2+100);
setcolor(GREEN);
circle(x, y, 10);
}
如何用C语言做PONG游戏,游戏第一弹--pong游戏相关推荐
- 项目实训(十一)——FPS游戏(第一人称射击游戏)初步开发
一.前言 我与另外两个组员合作进行了FPS游戏(第一人称射击游戏)的开发,这个游戏对应于我们在项目开始设想的PVP玩家对战游戏.玩家之间的之间对战会让游戏变得更加紧张刺激,还能够增强玩家之间的感情. ...
- 我们月光工作室和我们的3款游戏被国内Unity3D游戏引擎第一技术论坛--“游戏蛮牛” 报道啦!...
注明:目前月光工作室已经停止更新,因为创业伙伴回国,小编自己忙于<程序员联盟>社区的各样事务.以后也许会重拾App开发吧.谨以此文纪念那段美好的时光!以下的某些链接也已失效. 我们月光工作 ...
- 用C语言做一个横板过关类型的控制台游戏
前言:本教程是写给刚学会C语言基本语法不久的新生们. 因为在学习C语言途中,往往只能写控制台代码,而还能没接触到图形,也就基本碰不到游戏开发. 所以本教程希望可以给仍在学习C语言的新生们能提前感受到游 ...
- 教你如何用C语言设计一个有趣的猜数字小游戏
目录 前言 猜数字游戏 打印菜单 处理玩家选择的操作 编写猜数字游戏函数 游戏中要猜数字从哪来?(配置随机数生成器) 时间戳 开始生成随机数 game函数内部编写 完整代码 总结 前言 好久不见,今天 ...
- 如何用C语言做PONG游戏,[Unity 3d] 如何优雅的写一个PingPong效果
PingPong效果在 Unity 真的是随处可见:来回运动啦,呼吸灯啦,活塞运动啦,渐隐渐显啦,今天笔者就用两种方式教大家写下这个简单而常见的动画效果. 1. DoTween 借助Dotween,我 ...
- unity3d,跟着大佬做自己的第一个游戏(第一步,游戏模型制作)
网址http://www.bilibili.com/video/av5814699/当然我不会全部按照他的来 首先下载了一个magicavoxel 某乎介绍https://zhuanlan.zhihu ...
- 如何用C语言做离散傅里叶变化
1 离散傅里叶变换 此图大家都再熟悉不过了,任何周期信号都可以看作是一系列不同频率正弦信号叠加的结果. 信号从时域变换到频域的过程,可以借助傅里叶变换(Fourier transform)完成.我们知 ...
- 如何用c语言做高精度计算原理,C语言羁绊之高精度乘法计算
很大一部分借鉴了(C语言的高精度算法)这一博客,你们可以去看看.欢迎指正!!! 1,定义 对于计算机无法用普通数据类型(如:longint)表示的大整数进行乘法运算,称为高精度算法.这里的高精度乘法主 ...
- 如何用R语言做Vintage分析
一.背景 Vintage一词源自葡萄酒业,意思是葡萄酒酿造年份.因为每年的天气.温度.湿度.病虫害等情况不同,而这些因素都会对葡萄酒的品质产生很大的影响,所以人们对葡萄酒以葡萄当年的采摘年份进行标识来 ...
- 如何用R语言做工具变量回归(未完工版本
在计量经济学中的回归中,可能会遇到遗漏变量偏误.测量误差.双向因果等问题,那么工具变量是解决此类内生性问题的几大利器之一.本文用Stock&Waston课本章节为例,展示如何在R语言中进行工具 ...
最新文章
- OpenCV数据结构与基本绘图(Mat 类、Point类、Scalar类等)
- 【宝,我去读书了。读的什么书,给你的情书】《数据结构(c++)邓俊晖》-绪论篇
- 对The Curse of Dimensionality(维度灾难)的理解
- ubuntu 14.04中文显示乱码问题
- Java工作笔记-AJAX实现整体不变,局部更新(与整体刷新比较)
- day-01(html)
- java发送html附件_Java发送邮件(图片、附件、HTML)
- match和exec的对比
- 2020-06-05 原始套接字/AF_PACKET链路层访问
- netbeasn支持php7吗,php7+nginx+netbeans使用debug配置注意
- java 回文素数_java实现回文质数
- USB 公,母头接口
- 4.1 模拟低通滤波器设计
- 霍尔增量式编码器左右车轮线速度的计算
- 四川大学计算机专业贵州分数线,四川大学2019贵州录取分数线
- k8s-某视频课命令问题排查了解
- 优质的国外程序员网站
- 区块链+金融潜力有多大?透视这30家金融机构的布局!
- 寒冬之下持续吸金,蛰伏30年的国产数据库终迎黄金时代?
- 【C语言】基础练习题
热门文章
- 1.Head First Java --- 进入Java的世界
- 26.TCP/IP 详解卷1 --- Telnet 和 Rlogin : 远程登录
- 52. yii create webapp
- matlab中删除照片_照片也有隐私,教你如何批量删除数码照片中的相机、光圈和地理位置等 EXIF 信息...
- OpenStack组件——Nova计算资源管理
- SlidingMenu第三篇 --- SlidingMenu使用介绍
- navicate备份与还原数据库
- Hibernate的表之间的关系
- jerasure 2.0译文
- ubuntu12.04安装翻译软件stardict及卸载