當前位置:首頁 » 編程語言 » 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()函數分配的內存。