当前位置:首页 » 编程语言 » c语言打地鼠游戏的图片
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言打地鼠游戏的图片

发布时间: 2023-08-08 22:34:24

c语言编程打地鼠

刚写好的,打地鼠小游戏。

功能:每三秒,会在游戏区域随机位置刷出地鼠,鼠标点击地鼠,无论点中与否,地鼠都会立即刷新。

点中地鼠按你要求计分,点不中记录失败次数,3次失败,游戏结束,显示GAME OVER!

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<string.h>
#include<malloc.h>
#definegSizek30//区域大小宽度
#definegSizeg20//区域大小高度
#definegBegin3//活动区域起始行
intmain()
{
intt=0,s0,s1,i,j,count=0,fen=0,row=0,clo=0;
chargameA[gSizeg][gSizek+1],fSave[10]={0};
SetConsoleTitle("打地鼠");
HANDLEhInput=GetStdHandle(STD_INPUT_HANDLE);//获取标准输入设备句柄
INPUT_RECORDinRec;
DWORDres;
COORDp0;
p0.X=0;
p0.Y=0;

srand(time(0));
s0=time(NULL);
strcpy(gameA[0],"GAME");
strcpy(gameA[1],"未命中次数:0,计分:000000");
for(i=gBegin-1;i<gSizeg;i++)
{
for(j=0;j<gSizek+1;j++)
{
if(i>gBegin-1&&i<gSizeg-1&&j>0&&j<gSizek-1)
gameA[i][j]='';
else
gameA[i][j]=4;
if(j==gSizek)
gameA[i][j]=0;
}
}
for(i=0;i<gSizeg;i++)
printf("%s ",gameA[i]);

while(1)
{

if(t>=3)
{
if(row>0&&clo>0)
gameA[row][clo]='';
row=rand()%(gSizeg-1);
clo=rand()%(gSizek-1);
s0=time(NULL);
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);

if(row<3)
row=4;
if(clo<1)
clo=1;
gameA[row][clo]=2;
for(i=0;i<gSizeg;i++)
{
//gameA[i][gSizeg+1]=0;
printf("%s ",gameA[i]);
}

}
if(count==3)
{
p0.X=10;
p0.Y=8;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);
printf("GAMEOVER!");
break;
}
s1=time(NULL);
t=s1-s0;
ReadConsoleInput(hInput,&inRec,1,&res);
if(inRec.EventType==MOUSE_EVENT&&inRec.Event.MouseEvent.dwButtonState==FROM_LEFT_1ST_BUTTON_PRESSED)//鼠标左键
{
if(inRec.Event.MouseEvent.dwMousePosition.X==clo&&inRec.Event.MouseEvent.dwMousePosition.Y==row)
{

if(fen==0)
fen=1;
if(fen>999999)
fen=999999;
else
fen=fen*2;

sprintf(fSave,"%06d",fen);
gameA[1][18]=0;
strcat(gameA[1],fSave);
}
else
{
count++;
fen=0;
gameA[1][11]=count+'0';
}
t=4;
}
}
while(1);
return0;
}

⑵ c语言中怎么写打地鼠的游戏

在一个二维数组中,存放标记。

设置难度:分:

  • 一次只显示一个

  • 一次只显示二个

  • 一次只显示三个

对应产生2*N个随机数,对应(x,y),设置为1,其它空的设置为0.



大概的游戏流程循环:

结束条件: 打到M个停止。

1,产生随机数,且不相同

2,在对应的坐标中,画出地鼠,

在N秒内,没有击中,地鼠消失;击中,加分。

(击中的坐标,要与用户点的坐标想比较即可,在这个范围就得分)


⑶ 怎么用game maker做打地鼠小游戏

去网络的gamemaker吧丫.置顶的帖子里有基础中文教程及GML语言手册下载的.这两本先看懂才算是了解GM的使用方法拉.接着就要找写范例来学习了.
当然如果你一些VB.C的基础语言都不会.那就得先补习那些东西拉...既然你是电脑课的.那应该会吧...

打地鼠游戏...我写下大致思路.GM吧里有很多教程.貌似够用的样子.
首先素材.
画几种地鼠钻出来的动态GIF.可以用FW做.也可以分别画出静态的几张然后分别导入GM``
画地鼠被砸后眩晕的动态GIF.
画砸中后会减生命的生物.
画表示生命的图像.如爱心什么的.
画有9个洞洞的背景.
画个锤子砸下的动态GIF.
然后导入成精灵.背景.再制作出锤子.地鼠的对象.
然后你要解决以下问题.
首先,让一个锤子的实例跟随鼠标.
具体方法可参考GM吧里的帖子"[脚本]鼠标拖拽实例"地址如下.
http://tieba..com/f?kz=575116883
当然还是得修改一些的.你得学会怎样参考别人的脚本拉.
你先把脚本复制粘贴到一个对象里.然后会发现有些字是黑色的细体字.有些是粗体.有些变成了蓝色...
黑色细字没有特殊含义.是制作人自定的变量.
粗体是一些本身在C语言中就有特殊作用的语句.蓝色字是GM里事先帮你定义好的特殊变量.贴吧资料贴里的GML语言手册有详细讲解.
绿色的句子是以//开头的.意思是备注.在语句中不起作用.
还有种是紫色的.上面的脚本里貌似没有会变成紫色的字.不过紫色字带表的是那些精灵.对象之类的素材名称.为了避免混淆各类素材.最好在每个素材前加上前缀.比如地鼠精灵素材可写成spr_hamster,地鼠的对象写成obj_hamster拉.
你要做的是先看懂脚本里所有语句的意思.然后就能按照自己需求改了.

接着要解决的是地鼠出现再消失的位置.这个用随机变量choose(x1,x2...)应该可以解决吧.就不多说拉0.0.

再然后要解决砸中地鼠后的图片效果.这个效果要在地鼠对象里做.
全局鼠标按下之后.锤子要作出砸下的样子.这个跟act游戏中按下某键后主角的腿踢出一记的算法应该差不多.可以参考一些act游戏制作的教程.
鼠标按在地鼠身上后.地鼠要作晕厥状.方法也是一样的.
会减生命的物种到此跟地鼠的制作方法一样.

再接着要算分.砸中什么地鼠得多少分.砸中什么生物扣一颗生命...
算分可以用脚本和变量赋值来控制.再定义一个全局累加变量.如global.score
扣生命可定一个全局计数器和解散实例.

剩下就是you win或game over了.
你可以决定之前定义的累加变量等于几的时候赢.
之前定义的计数器为0时game over.

嗯就是这么回事了~你要确定你要解决的问题是什么然后再一一解决.当然你也可以边做边发现问题边解决.
总之加油拉.不懂可以在贴吧里问.
当然如果你自己连做都不做.
那贴吧里就不会有人帮你咯.
我学GM还没几个星期...所以虽然以上问题貌似都能解决.但是经常兜圈子0.0`、、所以还是最好去贴吧里看看拉.免得你被我带坏了思路也绕弯子拉...

汗`、、别看这么多.都不是复制哒哦```
我耐心打的.希望你也耐心看下拉0.0``、、、

⑷ 教你如何使用C语言编写简单小游戏

编写程序,实现如下表所示的5-魔方阵。
17

24

1

8

15

23

5

7

14

16

4

6

13

20

22

10

12

19

21

3

11

18

25

2

9

5-魔方阵
问题分析
所谓“n-魔方阵”,指的是使用1〜n2共n2个自然数排列成一个n×n的方阵,其中n为奇数;该方阵的每行、每列及对角线元素之和都相等,并为一个只与n有关的常数,该常数为n×(n2+1)/2。
例如5-魔方阵,其第一行、第一列及主对角线上各元素之和如下:
第一行元素之和:17+24+1+8+15=65
第一列元素之和:17+23+4+10+11=65
主对角线上元素之和:17+5+13+21+9=65

n×(n2+1)/2=5×(52+1)/2=65
可以验证,5-魔方阵中其余各行、各列及副对角线上的元素之和也都为65。
假定阵列的行列下标都从0开始,则魔方阵的生成方法为:在第0行中间置1,对从2开始的其余n2-1个数依次按下列规则存放:
(1)
假定当前数的下标为(i,j),则下一个数的放置位置为当前位置的右上方,即下标为(i-1,j+1)的位置。
(2)
如果当前数在第0行,即i-1小于0,则将下一个数放在最后一行的下一列上,即下标为(n-1,j+1)的位置。
(3)
如果当前数在最后一列上,即j+1大于n-1,则将下一个数放在上一行的第一列上,即下标为(i-1,0)的位置。
(4)
如果当前数是n的倍数,则将下一个数直接放在当前位置的正下方,即下标为(i+1,j)的位置。
算法设计
在设计算法时釆用了下面一些方法:
定义array()函数,array()函数的根据输入的n值,生成并显示一个魔方阵,当发现n不是奇数时,就加1使之成为奇数。
使用动态内存分配与释放函数malloc()与free(),在程序执行过程中动态分配与释放内存,这样做的好处是使代码具有通用性,同时提高内存的使用率。
在分配内存时还要注意,由于一个整型数要占用两个内存,因此,如果魔方阵中要存放的数有max个,则分配内存时要分配2*max个单元,从而有malloc(max+max)。在malloc()函数中使用max+max而不是2*max是考虑了程序运行的性能。
显然应该使用二维数组来表示魔方阵,但虽然数组是二维形式的,而由于内存是一维线性的,因此在存取数组元素时,要将双下标转换为单个索引编号。在程序中直接定义了指针变量来指向数组空间,即使用malloc()函数分配的内存。