已结贴√

问题点数: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游戏相关推荐

  1. 项目实训(十一)——FPS游戏(第一人称射击游戏)初步开发

    一.前言 我与另外两个组员合作进行了FPS游戏(第一人称射击游戏)的开发,这个游戏对应于我们在项目开始设想的PVP玩家对战游戏.玩家之间的之间对战会让游戏变得更加紧张刺激,还能够增强玩家之间的感情. ...

  2. 我们月光工作室和我们的3款游戏被国内Unity3D游戏引擎第一技术论坛--“游戏蛮牛” 报道啦!...

    注明:目前月光工作室已经停止更新,因为创业伙伴回国,小编自己忙于<程序员联盟>社区的各样事务.以后也许会重拾App开发吧.谨以此文纪念那段美好的时光!以下的某些链接也已失效. 我们月光工作 ...

  3. 用C语言做一个横板过关类型的控制台游戏

    前言:本教程是写给刚学会C语言基本语法不久的新生们. 因为在学习C语言途中,往往只能写控制台代码,而还能没接触到图形,也就基本碰不到游戏开发. 所以本教程希望可以给仍在学习C语言的新生们能提前感受到游 ...

  4. 教你如何用C语言设计一个有趣的猜数字小游戏

    目录 前言 猜数字游戏 打印菜单 处理玩家选择的操作 编写猜数字游戏函数 游戏中要猜数字从哪来?(配置随机数生成器) 时间戳 开始生成随机数 game函数内部编写 完整代码 总结 前言 好久不见,今天 ...

  5. 如何用C语言做PONG游戏,[Unity 3d] 如何优雅的写一个PingPong效果

    PingPong效果在 Unity 真的是随处可见:来回运动啦,呼吸灯啦,活塞运动啦,渐隐渐显啦,今天笔者就用两种方式教大家写下这个简单而常见的动画效果. 1. DoTween 借助Dotween,我 ...

  6. unity3d,跟着大佬做自己的第一个游戏(第一步,游戏模型制作)

    网址http://www.bilibili.com/video/av5814699/当然我不会全部按照他的来 首先下载了一个magicavoxel 某乎介绍https://zhuanlan.zhihu ...

  7. 如何用C语言做离散傅里叶变化

    1 离散傅里叶变换 此图大家都再熟悉不过了,任何周期信号都可以看作是一系列不同频率正弦信号叠加的结果. 信号从时域变换到频域的过程,可以借助傅里叶变换(Fourier transform)完成.我们知 ...

  8. 如何用c语言做高精度计算原理,C语言羁绊之高精度乘法计算

    很大一部分借鉴了(C语言的高精度算法)这一博客,你们可以去看看.欢迎指正!!! 1,定义 对于计算机无法用普通数据类型(如:longint)表示的大整数进行乘法运算,称为高精度算法.这里的高精度乘法主 ...

  9. 如何用R语言做Vintage分析

    一.背景 Vintage一词源自葡萄酒业,意思是葡萄酒酿造年份.因为每年的天气.温度.湿度.病虫害等情况不同,而这些因素都会对葡萄酒的品质产生很大的影响,所以人们对葡萄酒以葡萄当年的采摘年份进行标识来 ...

  10. 如何用R语言做工具变量回归(未完工版本

    在计量经济学中的回归中,可能会遇到遗漏变量偏误.测量误差.双向因果等问题,那么工具变量是解决此类内生性问题的几大利器之一.本文用Stock&Waston课本章节为例,展示如何在R语言中进行工具 ...

最新文章

  1. OpenCV数据结构与基本绘图(Mat 类、Point类、Scalar类等)
  2. 【宝,我去读书了。读的什么书,给你的情书】《数据结构(c++)邓俊晖》-绪论篇
  3. 对The Curse of Dimensionality(维度灾难)的理解
  4. ubuntu 14.04中文显示乱码问题
  5. Java工作笔记-AJAX实现整体不变,局部更新(与整体刷新比较)
  6. day-01(html)
  7. java发送html附件_Java发送邮件(图片、附件、HTML)
  8. match和exec的对比
  9. 2020-06-05 原始套接字/AF_PACKET链路层访问
  10. netbeasn支持php7吗,php7+nginx+netbeans使用debug配置注意
  11. java 回文素数_java实现回文质数
  12. USB 公,母头接口
  13. 4.1 模拟低通滤波器设计
  14. 霍尔增量式编码器左右车轮线速度的计算
  15. 四川大学计算机专业贵州分数线,四川大学2019贵州录取分数线
  16. k8s-某视频课命令问题排查了解
  17. 优质的国外程序员网站
  18. 区块链+金融潜力有多大?透视这30家金融机构的布局!
  19. 寒冬之下持续吸金,蛰伏30年的国产数据库终迎黄金时代?
  20. 【C语言】基础练习题

热门文章

  1. 1.Head First Java --- 进入Java的世界
  2. 26.TCP/IP 详解卷1 --- Telnet 和 Rlogin : 远程登录
  3. 52. yii create webapp
  4. matlab中删除照片_照片也有隐私,教你如何批量删除数码照片中的相机、光圈和地理位置等 EXIF 信息...
  5. OpenStack组件——Nova计算资源管理
  6. SlidingMenu第三篇 --- SlidingMenu使用介绍
  7. navicate备份与还原数据库
  8. Hibernate的表之间的关系
  9. jerasure 2.0译文
  10. ubuntu12.04安装翻译软件stardict及卸载