⑴ 請問能給咱發一個用flash cs3或以上版本製作拼圖小游戲成品嗎希望有源代碼的,跪求啊!!
應該有吧 但是不是無--償的 哦
⑵ 誰有能在vc++6.0上運行的c語言小游戲代碼
最基礎的貪吃蛇的代碼
#include<stdio.h>
#include<windows.h>//基本型態定義。支援型態定義函數。使用者界面函數 圖形裝置界面函數。
#include<conio.h> //用戶通過按鍵盤產生的對應操作 (控制台)
#include<stdlib.h>
#include<time.h> //日期和時間頭文件
#define LEN 30
#define WID 25
int Snake[LEN][WID] = {0}; //數組的元素代表蛇的各個部位
char Sna_Hea_Dir = 'a';//記錄蛇頭的移動方向
int Sna_Hea_X, Sna_Hea_Y;//記錄蛇頭的位置
int Snake_Len = 3;//記錄蛇的長度
clock_t Now_Time;//記錄當前時間,以便自動移動
int Wait_Time ;//記錄自動移動的時間間隔
int Eat_Apple = 1;//吃到蘋果表示為1
int Level ;
int All_Score = -1;
int Apple_Num = -1;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //獲取標准輸出的句柄 <windows.h>
//句柄 :標志應用程序中的不同對象和同類對象中的不同的實例 方便操控,
void gotoxy(int x, int y)//設置游標位置
{
COORD pos = {x,y}; //定義一個字元在控制台屏幕上的坐標POS
SetConsoleCursorPosition(hConsole, pos); //定位游標位置的函數<windows.h>
}
void Hide_Cursor()//隱藏游標 固定函數
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(hConsole, &cursor_info);
}
void SetColor(int color)//設置顏色
{
SetConsoleTextAttribute(hConsole, color);
//是API設置字體顏色和背景色的函數 格式:SetConsoleTextAttribute(句柄,顏色);
}
void Print_Snake()//列印蛇頭和蛇的脖子和蛇尾
{
int iy, ix, color;
for(iy = 0; iy < WID; ++iy)
for(ix = 0; ix < LEN; ++ix)
{
if(Snake[ix][iy] == 1)//蛇頭
{
SetColor(0xf); //oxf代表分配的內存地址 setcolor:34行自定義設置顏色的函數
gotoxy(ix*2, iy);
printf("※");
}
if(Snake[ix][iy] == 2)//蛇的脖子
{
color = rand()%15 + 1; //rand()函數是產生隨機數的一個隨機函數。C語言里還有 srand()函數等。
//頭文件:stdlib.h
if(color == 14)
color -= rand() % 13 + 1; //變色
SetColor(color);
gotoxy(ix*2, iy);
printf("■");
}
if(Snake[ix][iy] == Snake_Len)
{
gotoxy(ix*2, iy);
SetColor(0xe);
printf("≈");
}
}
}
void Clear_Snake()//擦除貪吃蛇
{
int iy, ix;
for(iy = 0; iy < WID; ++iy)
for(ix = 0; ix < LEN; ++ix)
{
gotoxy(ix*2, iy);
if(Snake[ix][iy] == Snake_Len)
printf(" ");
}
}
void Rand_Apple()//隨機產生蘋果
{
int ix, iy;
do
{
ix = rand() % LEN;
iy = rand() % WID;
}while(Snake[ix][iy]);
Snake[ix][iy] = -1;
gotoxy(ix*2, iy);
printf("⊙");
Eat_Apple = 0;
}
void Game_Over()//蛇死掉了
{
gotoxy(30, 10);
printf("Game Over");
Sleep(3000);
system("pause > nul");
exit(0);
}
void Move_Snake()//讓蛇動起來
{
int ix, iy;
for(ix = 0; ix < LEN; ++ix)//先標記蛇頭
for(iy = 0; iy < WID; ++iy)
if(Snake[ix][iy] == 1)
{
switch(Sna_Hea_Dir)//根據新的蛇頭方向標志蛇頭
{
case 'w':
if(iy == 0)
Game_Over();
else
Sna_Hea_Y = iy - 1;
Sna_Hea_X = ix;
break;
case 's':
if(iy == (WID -1))
Game_Over();
else
Sna_Hea_Y = iy + 1;
Sna_Hea_X = ix;
break;
case 'a':
if(ix == 0)
Game_Over();
else
Sna_Hea_X = ix - 1;
Sna_Hea_Y = iy;
break;
case 'd':
if(ix == (LEN - 1))
Game_Over();
else
Sna_Hea_X = ix + 1;
Sna_Hea_Y = iy;
break;
default:
break;
}
}
if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1&&Snake[Sna_Hea_X][Sna_Hea_Y]!=0&&Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)
Game_Over();
if(Snake[Sna_Hea_X][Sna_Hea_Y] < 0)//吃到蘋果
{
++Snake_Len;
Eat_Apple = 1;
}
for(ix = 0; ix < LEN; ++ix)//處理蛇尾
for(iy = 0; iy < WID; ++iy)
{
if(Snake[ix][iy] > 0)
{
if(Snake[ix][iy] != Snake_Len)
Snake[ix][iy] += 1;
else
Snake[ix][iy] = 0;
}
}
Snake[Sna_Hea_X][Sna_Hea_Y] = 1;//處理蛇頭
}
void Get_Input()//控制蛇的移動方向
{
if(kbhit())
{
switch(getch())
{
case 87:
Sna_Hea_Dir = 'w';
break;
case 83:
Sna_Hea_Dir = 's';
break;
case 65:
Sna_Hea_Dir = 'a';
break;
case 68:
Sna_Hea_Dir = 'd';
break;
default:
break;
}
}
if(clock() - Now_Time >= Wait_Time)//蛇到時間自動行走
{
Clear_Snake();
Move_Snake();
Print_Snake();
Now_Time = clock();
}
}
void Init()//初始化
{
system("title 貪吃毛毛蛇");
system("mode con: cols=80 lines=25");
Hide_Cursor();
gotoxy(61, 4);
printf("You Score:");
gotoxy(61, 6);
printf("You Level:");
gotoxy(61, 8);
printf("The Lenght:");
gotoxy(61, 10);
printf("The Speed:");
gotoxy(61, 12);
printf("Apple Num:");
int i;
for(i = 0; i < Snake_Len; ++i)//生成蛇
Snake[10+i][15] = i+1;
int iy, ix;//列印蛇
for(iy = 0; iy < WID; ++iy)
for(ix = 0; ix < LEN; ++ix)
{
if(Snake[ix][iy])
{
SetColor(Snake[ix][iy]);
gotoxy(ix*2, iy);
printf("■");
}
}
}
void Pri_News()//列印信息
{
SetColor(0xe);
gotoxy(73,4);
All_Score += Level;
printf("%3d", All_Score);
gotoxy(73, 6);
printf("%3d", Level);
gotoxy(73, 8);
printf("%3d",Snake_Len);
gotoxy(73, 10);
printf("0.%3ds", Wait_Time/10);
gotoxy(73, 12);
printf("%d", Apple_Num);
}
void Lev_Sys()//等級系統
{
if(((Apple_Num-1) / 10) == Level)
{
++Level;
if(Wait_Time > 50)
Wait_Time -= 50;
else
if(Wait_Time > 10)
Wait_Time -= 10;
else
Wait_Time -= 1;
}
}
int main(void)
{
Init();
srand((unsigned)time(NULL));//設置隨機數的種子
Now_Time = clock();
int speed1=1000,speed2,a;
printf("\n");
printf("請輸入你想要的速度\n");
scanf("%d",&speed2);
Level=1;
Wait_Time=speed1-speed2;
printf("請輸入你想要的蘋果數\n");
scanf("%d",&a);
while(a--)
Rand_Apple();
while(1)
{
if(Eat_Apple)
{
++Apple_Num;
Rand_Apple();
Lev_Sys();
Pri_News();
}
Get_Input();
Sleep(10);
}
return 0;
}
⑶ 用C++編寫的小游戲源代碼
五子棋的代碼:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
usingnamespacestd;
constintN=15;//15*15的棋盤
constcharChessBoardflag='';//棋盤標志
constcharflag1='o';//玩家1或電腦的棋子標志
constcharflag2='X';//玩家2的棋子標志
typedefstructCoordinate//坐標類
{
intx;//代錶行
inty;//代表列
}Coordinate;
classGoBang//五子棋類
{
public:
GoBang()//初始化
{
InitChessBoard();
}
voidPlay()//下棋
{
CoordinatePos1;//玩家1或電腦
CoordinatePos2;//玩家2
intn=0;
while(1)
{
intmode=ChoiceMode();
while(1)
{
if(mode==1)//電腦vs玩家
{
ComputerChess(Pos1,flag1);//電腦下棋
if(GetVictory(Pos1,0,flag1)==1)//0表示電腦,真表示獲勝
break;
PlayChess(Pos2,2,flag2);//玩家2下棋
if(GetVictory(Pos2,2,flag2))//2表示玩家2
break;
}
else//玩家1vs玩家2
{
PlayChess(Pos1,1,flag1);//玩家1下棋
if(GetVictory(Pos1,1,flag1))//1表示玩家1
break;
PlayChess(Pos2,2,flag2);//玩家2下棋
if(GetVictory(Pos2,2,flag2))//2表示玩家2
break;
}
}
cout<<"***再來一局***"<<endl;
cout<<"yorn:";
charc='y';
cin>>c;
if(c=='n')
break;
}
}
protected:
intChoiceMode()//選擇模式
{
inti=0;
system("cls");//系統調用,清屏
InitChessBoard();//重新初始化棋盤
cout<<"***0、退出1、電腦vs玩家2、玩家vs玩家***"<<endl;
while(1)
{
cout<<"請選擇:";
cin>>i;
if(i==0)//選擇0退出
exit(1);
if(i==1||i==2)
returni;
cout<<"輸入不合法"<<endl;
}
}
voidInitChessBoard()//初始化棋盤
{
for(inti=0;i<N+1;++i)
{
for(intj=0;j<N+1;++j)
{
_ChessBoard[i][j]=ChessBoardflag;
}
}
}
voidPrintChessBoard()//列印棋盤,這個函數可以自己調整
{
system("cls");//系統調用,清空屏幕
for(inti=0;i<N+1;++i)
{
for(intj=0;j<N+1;++j)
{
if(i==0)//列印列數字
{
if(j!=0)
printf("%d",j);
else
printf("");
}
elseif(j==0)//列印行數字
printf("%2d",i);
else
{
if(i<N+1)
{
printf("%c|",_ChessBoard[i][j]);
}
}
}
cout<<endl;
cout<<"";
for(intm=0;m<N;m++)
{
printf("--|");
}
cout<<endl;
}
}
voidPlayChess(Coordinate&pos,intplayer,intflag)//玩家下棋
{
PrintChessBoard();//列印棋盤
while(1)
{
printf("玩家%d輸入坐標:",player);
cin>>pos.x>>pos.y;
if(JudgeValue(pos)==1)//坐標合法
break;
cout<<"坐標不合法,重新輸入"<<endl;
}
_ChessBoard[pos.x][pos.y]=flag;
}
voidComputerChess(Coordinate&pos,charflag)//電腦下棋
{
PrintChessBoard();//列印棋盤
intx=0;
inty=0;
while(1)
{
x=(rand()%N)+1;//產生1~N的隨機數
srand((unsignedint)time(NULL));
y=(rand()%N)+1;//產生1~N的隨機數
srand((unsignedint)time(NULL));
if(_ChessBoard[x][y]==ChessBoardflag)//如果這個位置是空的,也就是沒有棋子
break;
}
pos.x=x;
pos.y=y;
_ChessBoard[pos.x][pos.y]=flag;
}
intJudgeValue(constCoordinate&pos)//判斷輸入坐標是不是合法
{
if(pos.x>0&&pos.x<=N&&pos.y>0&&pos.y<=N)
{
if(_ChessBoard[pos.x][pos.y]==ChessBoardflag)
{
return1;//合法
}
}
return0;//非法
}
intJudgeVictory(Coordinatepos,charflag)//判斷有沒有人勝負(底層判斷)
{
intbegin=0;
intend=0;
intbegin1=0;
intend1=0;
//判斷行是否滿足條件
(pos.y-4)>0?begin=(pos.y-4):begin=1;
(pos.y+4)>N?end=N:end=(pos.y+4);
for(inti=pos.x,j=begin;j+4<=end;j++)
{
if(_ChessBoard[i][j]==flag&&_ChessBoard[i][j+1]==flag&&
_ChessBoard[i][j+2]==flag&&_ChessBoard[i][j+3]==flag&&
_ChessBoard[i][j+4]==flag)
return1;
}
//判斷列是否滿足條件
(pos.x-4)>0?begin=(pos.x-4):begin=1;
(pos.x+4)>N?end=N:end=(pos.x+4);
for(intj=pos.y,i=begin;i+4<=end;i++)
{
if(_ChessBoard[i][j]==flag&&_ChessBoard[i+1][j]==flag&&
_ChessBoard[i+2][j]==flag&&_ChessBoard[i+3][j]==flag&&
_ChessBoard[i+4][j]==flag)
return1;
}
intlen=0;
//判斷主對角線是否滿足條件
pos.x>pos.y?len=pos.y-1:len=pos.x-1;
if(len>4)
len=4;
begin=pos.x-len;//橫坐標的起始位置
begin1=pos.y-len;//縱坐標的起始位置
pos.x>pos.y?len=(N-pos.x):len=(N-pos.y);
if(len>4)
len=4;
end=pos.x+len;//橫坐標的結束位置
end1=pos.y+len;//縱坐標的結束位置
for(inti=begin,j=begin1;(i+4<=end)&&(j+4<=end1);++i,++j)
{
if(_ChessBoard[i][j]==flag&&_ChessBoard[i+1][j+1]==flag&&
_ChessBoard[i+2][j+2]==flag&&_ChessBoard[i+3][j+3]==flag&&
_ChessBoard[i+4][j+4]==flag)
return1;
}
//判斷副對角線是否滿足條件
(pos.x-1)>(N-pos.y)?len=(N-pos.y):len=pos.x-1;
if(len>4)
len=4;
begin=pos.x-len;//橫坐標的起始位置
begin1=pos.y+len;//縱坐標的起始位置
(N-pos.x)>(pos.y-1)?len=(pos.y-1):len=(N-pos.x);
if(len>4)
len=4;
end=pos.x+len;//橫坐標的結束位置
end1=pos.y-len;//縱坐標的結束位置
for(inti=begin,j=begin1;(i+4<=end)&&(j-4>=end1);++i,--j)
{
if(_ChessBoard[i][j]==flag&&_ChessBoard[i+1][j-1]==flag&&
_ChessBoard[i+2][j-2]==flag&&_ChessBoard[i+3][j-3]==flag&&
_ChessBoard[i+4][j-4]==flag)
return1;
}
for(inti=1;i<N+1;++i)//棋盤有沒有下滿
{
for(intj=1;j<N+1;++j)
{
if(_ChessBoard[i][j]==ChessBoardflag)
return0;//0表示棋盤沒滿
}
}
return-1;//和棋
}
boolGetVictory(Coordinate&pos,intplayer,intflag)//對JudgeVictory的一層封裝,得到具體那個玩家獲勝
{
intn=JudgeVictory(pos,flag);//判斷有沒有人獲勝
if(n!=0)//有人獲勝,0表示沒有人獲勝
{
PrintChessBoard();
if(n==1)//有玩家贏棋
{
if(player==0)//0表示電腦獲勝,1表示玩家1,2表示玩家2
printf("***電腦獲勝*** ");
else
printf("***恭喜玩家%d獲勝*** ",player);
}
else
printf("***雙方和棋*** ");
returntrue;//已經有人獲勝
}
returnfalse;//沒有人獲勝
}
private:
char_ChessBoard[N+1][N+1];
};
設計思路
1、進行問題分析與設計,計劃實現的功能為,開局選擇人機或雙人對戰,確定之後比賽開始。
2、比賽結束後初始化棋盤,詢問是否繼續比賽或退出,後續可加入復盤、悔棋等功能。
3、整個過程中,涉及到了棋子和棋盤兩種對象,同時要加上人機對弈時的AI對象,即涉及到三個對象。
⑷ 用 ADOBE FLASH CS4 AS3編寫小游戲(拼圖、連連看、找茬等),會的朋友幫我做下,源代碼和FLASH文件
去天地會論壇找一下吧,應該會找到你想要的。
⑸ 誰能用vb.net做一個拼圖小游戲
去源碼網找個,我一般都去SIna上下個。
⑹ 求C語言小游戲源程序
新手要方便寫代碼,可以收藏下面幾個自編函數:
gtxy (6, 3) //游標定位於窗口的第6列,第3行處(准備輸出,行與列都是從0算起)
Color (4, 0) //設置為紅字配黑底 如 Color (10, 0)則是淡綠字配黑底
yinc (1,0) //隱藏游標(第二個參數設為0就隱藏,沒有游標閃爍,yinc代表隱藏)
kou(80,25) //設定窗口緩沖區大小為80列,25行
下面幾個是庫函數,不需自己編寫,只要用#include包含就可以使用。
SetConsoleTitle("俄羅斯方塊"); //設置窗口左上角標題欄處出現"俄羅斯方塊"5個字
srand( (unsigned) time(NULL) ); //初始化隨機數發生器
n= rand( ) % 20; //產生隨機數0-19中的一個. 如 rand( )%5 就產生0-4中的一個數
SetConsoleTitle( )函數在<windows.h>里,srand( )函數與rand( )函數要配合用,
就是同時要用,在<stdlib.h>里。如果 rand( )%10+1 就產生1-10之中的一個數。
Sleep(300); //延時300毫秒(就是程序暫停300毫秒後繼續運行)
system("cls"); //清屏(把窗口裡的內容全部清除,游標定於(0,0)位置處)
這兩個函數都在<windows.h>里。開頭4個自編函數 編寫如下:
void gtxy (int x, int y) //控制游標位置的函數
{ COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );
}
void Color (short ForeColor= 7, short BackGroundColor= 0) //設定顏色的函數
{ HANDLE hl = GetStdHandle ( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute ( hl, ForeColor + BackGroundColor * 0x10 );
}
聲明時原型可寫 void Color (short x, short y);
void yinc (int x,int y) //隱藏游標的函數
{ CONSOLE_CURSOR_INFO gb={ x , y }; //gb代表游標
SetConsoleCursorInfo ( GetStdHandle(STD_OUTPUT_HANDLE), &gb );
}
void kou(int w,int h) //設置窗口大小的函數
{HANDLE hl=GetStdHandle ( STD_OUTPUT_HANDLE ) ;
COORD size={ w , h };
SetConsoleScreenBufferSize( hl , size );
SMALL_RECT rc={ 0, 0, w, h };
SetConsoleWindowInfo( hl, 1, &rc );
}
最後這個函數,參數w是寬h是高。里邊5行中第一行定義了句柄型變數hl,並給它賦值。
第二行定義了坐標型結構體變數size,它的取值決定了緩沖區的大小。第三行就是使用
size的值設置好緩沖區大小。第四行定義了變數rc,它的值決定當前窗口顯示的位置與
大小(不得超過緩沖區的大小)。前兩個0,0是從緩沖區左上角0列0行位置處開始,後兩
個參數可以小於w和h.比如rc={0,0,w-10,h-5}; 最後一行使用rc的值設置好窗口,中間
那個參數要為" 1 "或寫「 true 」才有效。
⑺ 哪位大佬可以發一下flash做的拼圖小游戲源文件。。
大佬,給我也發一遍
⑻ 求用C++編寫一個小游戲程序代碼,如:俄羅斯方塊,掃雷,拼圖,貪吃蛇之類的……謝了……
我給你2個貪吃蛇c++代碼
(1):
#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>
//方向鍵的ASCLL值:上72,左75,右77,下80
//背景顏色的代碼: 0=黑色 1藍色 2 綠色 3湖藍色 4紅色 5紫色 6黃色 7白色 8灰色 9淡藍色
//**改變當前游標方塊的背景顏色和字體顏色**//
void BackGround(unsigned int ForeColor = 7, unsigned int BackGroundColor = 0) {
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //獲取控制台的句柄
SetConsoleTextAttribute(handle, ForeColor + BackGroundColor * 0x10);//改變當前游標的背景和字體顏色
}
//**改變游標的位置**//
void gotoxy(int x, int y) {8
HANDLE handle;
COORD coord; //獲取坐標軸結構體
coord.X = x;
coord.Y = y;
handle = GetStdHandle(STD_OUTPUT_HANDLE); //獲取控制台句柄,值為-11
SetConsoleCursorPosition(handle, coord); //移動游標到x,y處
}
//**初始化地圖數據**//
void restart(int bk[20][20], int look[4], int move[20][20]) {
//bk為總的地圖數據記錄整個地圖,為1時表示牆體,為2時表示果實,為3時表示蛇
//look記錄數據,為0時表示朝向,為1時表示長度,為3時表示勝負情況,為4表示分數
//move記錄蛇走過的路程,用來列印蛇時判斷用
int pp, qq; //用來記錄獲取的隨機坐標
//接下來要初始化整個地圖//
for(int i=0;i<=16;i++)
for (int j = 0; j <= 16; j++) {
if (i == 0 || i == 16 || j == 0 || j == 16) bk[i][j] = 1;//1表示牆體
else bk[i][j] = 0; //0表示什麼都沒有
move[i][j] = 0; //該數組用來記錄蛇移動的軌跡
}
//將蛇初始化在8,8坐標上
bk[8][8] = 3;
move[8][8] = 1;//則此時8,8,上的軌跡就應該記錄為1
move[0][0] = 1;//用此來記錄步數
pp = rand() % 15 + 1;//范圍是1-15
qq = rand() % 15 + 1;
bk[pp][qq] = 2;//表示這個位置有果實了
look[0] = 1;//表示朝向,向上
look[1] = 1;//表示長度
look[2] = 0;//當為1是表示失敗
look[3] = 0;//記錄得分
//接下來要繪制地圖//
for(int i=0;i<=16;i++)
for (int j = 0; j <= 16; j++) {
gotoxy(i * 2, j);//游標移動,每個游標都是矩形
switch (bk[i][j]) {
case 0:
BackGround(0, 0);
break;//如果沒有東西列印黑色
case 1:
BackGround(0, 1);
break;//牆列印藍色
case 2:
BackGround(0, 2);
break;//果實列印綠色
case 3:
BackGround(0, 3);
break;//蛇列印湖藍色
default:
break;
}
printf(" ");//地圖中直接就是塗空格符
}
//接下來要顯示積分//
gotoxy(35, 0);
BackGround(7, 0);//用白字黑底列印
printf("現在得分是:%d,請再接再厲!^_^", look[2]);
}
//**運動主體**//
void map(int bk[20][20], int look[4], int xy[2], int move[20][20]) {
//bk是地圖信息,look作數據記錄,xy記錄坐標,move記錄蛇的運動軌跡
int b[10], qq=0, pp=0;//b用來吸收輸入,qq和pp用來隨機初始化果實坐標
if (kbhit()) {//記錄按下的是哪個方向鍵
b[0] = getch();//用b來記錄
if (b[0] == 224) b[0] = getch();//如果為224表示為方向鍵,但是要再一次獲取才行
if (b[0] == 72 && look[0] != 2)
//如果輸入的為上並且朝向不為下
look[0] = 1;
if (b[0] == 80 && look[0] != 1)
look[0] = 2;
if (b[0] == 75 && look[0] != 4)
look[0] = 3;
if (b[0] == 77 && look[0] != 3)
look[0] = 4;
}
switch (look[0]) {
case 1:
//往上走
xy[1]--;
break;
case 2:
//往下走
xy[1]++;
break;
case 3:
//往左走
xy[0]--;
break;
case 4:
//往右走
xy[0]++;
break;
}
//接下來蛇就開始走動了//
move[0][0]++;//蛇的步數加一
move[xy[0]][xy[1]] = move[0][0];//記錄當前格子中蛇的軌跡
gotoxy(35, 2);
BackGround(7, 0);
printf("橫坐標:%d,縱坐標:%d", xy[0],xy[1]);
gotoxy(xy[0] * 2, xy[1]);//這里蛇頭就往前移動了
BackGround(0, 3);//與蛇體一個顏色
printf(" ");
//如果吃了果實//
if (bk[xy[0]][xy[1]] == 2) {
look[2]++;//分數加一
look[1]++;//長度加一
//更新分數
gotoxy(35, 0);
BackGround(7, 0);
printf("現在得分是:%d,請再接再厲!^_^", look[2]);
while (bk[pp][qq] != 0) {
pp = rand() % 15 + 1;
qq = rand() % 15 + 1;
}
bk[pp][qq] = 2;//將這個地方變為果實
gotoxy(pp * 2, qq);
BackGround(0, 2);
printf(" ");
}
//如果撞了牆或者自己//
if (bk[xy[0]][xy[1]] == 1 || bk[xy[0]][xy[1]] == 3) {
look[3] = 1;//表示已經輸了
gotoxy(6, 6);
BackGround(7, 0);
printf("你輸了,最後得分:%d", look[2]);
}
bk[xy[0]][xy[1]] = 3;//使這個位置變成蛇
//接下來要檢測蛇然後刷新蛇的位置//
for(int i=0;i<=16;i++)
for (int j = 0; j <= 16; j++) {
if (move[i][j] == move[xy[0]][xy[1]] - look[1]){
//如果符合這個條件,則表示蛇已經移動出這個位置了
//要刪除這個位置的蛇尾巴
//一次只有一個方塊會符合要求吧?
bk[i][j] = 0;
gotoxy(i * 2, j);
BackGround(0, 0);
printf(" ");
break;//一次只找一個
}
}
end:;
}
int main() {
int bk[20][20], xy[2], move[20][20], look[4];
xy[1] = xy[0] = 8;
srand((unsigned) time(NULL));//初始化隨機種子
system("pause");
restart(bk, look, move);
while (look[3] == 0) {
Sleep(200);//休眠400ms一次
map(bk, look, xy, move);
}
system("pause");
printf("游戲結束,謝謝遊玩!^_^");
return 0;
}
(2):
#include <stdio.h>
#include <windows.h>
#include<conio.h>
#include <stdlib.h>
#include<time.h>
#define X 23//地圖的x軸
#define Y 75//地圖的y軸
#define UP 0
#define DOWN 1
#define LEFT 2
#define RIGHT 3
#define WAIT_TIME 200//等待蛇刷新的時間,可以說是速度 修改可變速
int map_0[X][Y];//地圖
int Snake[X*Y][2]; // 蛇
int Slength; //蛇的長度
int direction;
int score=0;
bool pdEatFood=false;
void csh();
void huaMap();
void huaSnake();
void gotoxy(int x,int y);
void move();
void intokey();
int check(int x,int y);
void putfood();
bool gameover();
void dy_fs();
int main()
{
csh();
huaMap();
putfood();
while(1)
{
huaSnake();
Sleep(WAIT_TIME);
intokey();
move();
dy_fs();
if(gameover())
{
system("cls"); //清除屏幕內容
printf("Game Over ");
system("pause");
getchar();
break;
}
if(map_0[Snake[0][0]][Snake[0][1]]==-1)
{
map_0[Snake[0][0]][Snake[0][1]]=0;
pdEatFood=true;
putfood();
score+=10;
}
}
return 0;
}
void csh()//初始化
{
srand((unsigned)time(NULL)); //設置種子為現在的時間
Slength=4;
gotoxy(0,0);
CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //清除游標
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
int x,y;
Snake[0][0]=X/2;
Snake[0][1]=Y/2;
for(x=0;x<X;x++){
map_0[x][0]=1;
map_0[x][Y-1]=1;
}
for(y=1;y<Y-1;y++){
map_0[0][y]=1;
map_0[X-1][y]=1;
}
for(x=1;x<4;x++){ //初始化蛇的坐標
Snake[x][0]=Snake[0][0]+x;
Snake[x][1]=Snake[0][1];
}
direction=UP;
}
void huaMap()//畫地圖
{
int x,y;
for(x=0;x<X*1.01;x++){
for(y=0;y<Y*1.01;y++){
if(map_0[x][y]==1){
printf("#");
}
if(map_0[x][y]==0){
printf(" ");
}
}
printf(" ");
}
}
void huaSnake()//畫蛇
{
int x;
for(x=0;x<Slength;x++)
{
gotoxy(Snake[x][0],Snake[x][1]);
printf("@");
}
}
void gotoxy(int i,int j)//移動游標
{
COORD position={j,i};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),position);
}
void move()
{
int i;
gotoxy(Snake[Slength-1][0],Snake[Slength-1][1]);//擦除尾巴
printf(" ");
for(i=Slength-1;i>0;i--) //從尾巴開始,每一個點的位置等於它前面一個點的位置
{
Snake[i][0]=Snake[i-1][0];
Snake[i][1]=Snake[i-1][1];
}
switch(direction)
{
case UP:
Snake[0][0]--;
break;
case DOWN:
Snake[0][0]++;
break;
case LEFT:
Snake[0][1]--;
break;
case RIGHT:
Snake[0][1]++;
break;
}
if(pdEatFood){
Slength++;
pdEatFood=false;
}
}
void intokey()
{
if(kbhit()!=0) //kbhit()函數 檢查當前是否有鍵盤輸入,若有則返回一個非0值,否則返回0
{
char in;
while(!kbhit()==0) //如果玩家輸入了多個按鍵,以最後一個按鍵為准
in=getch();
switch(in)
{
case 'w':
case 'W':
if(direction!=DOWN) //防止縮頭
direction=UP;
break;
case 's':
case 'S':
if(direction!=UP)
direction=DOWN;
break;
case 'a':
case 'A':
if(direction!=RIGHT)
direction=LEFT;
break;
case 'd':
case 'D':
if(direction!=LEFT)
direction=RIGHT;
break;
case 'p':
case 'P':
gotoxy(X,0);
system("pause");
gotoxy(X,0);
printf(" "); // 消去下面的按任意鍵繼續
break;
}
}
}
int check(int ii,int jj){// 檢查是否能投放食物
if(map_0[ii][jj]==1)
return 0;
if(ii==0 || jj==0 || ii==X-1 || jj==Y-1)
return 0;
int i;
for(i=0;i<Slength;i++){
if(ii==Snake[i][0] && jj==Snake[i][1])
return 0;
}
return 1;
}
void putfood()
{
int i,j;
do{
i=rand()%X;
j=rand()%Y;
}while(check(i,j)==0);
map_0[i][j]=-1;
gotoxy(i,j);
printf("$");
}
bool gameover()
{
bool isgameover=false;
int sX,sY;
sX=Snake[0][0],sY=Snake[0][1];
if(sX==0 || sX==X-1 || sY==0 || sY==Y-1)
isgameover=true;
int i;
for(i=1;i<Slength;i++){
if(sX==Snake[i][0] && sY==Snake[i][1])
isgameover=true;
}
return isgameover;
}
void dy_fs()
{
gotoxy(X,0);
printf("(c)Geek------2018.1.22");
gotoxy(X+1,0);
printf("最終得分: %d",score);
}
管慶帆c/c++大師😄
⑼ VB拼圖游戲,把分割的圖片放在左邊,然後拖入右邊的圖形框
網上很多源碼的
⑽ java!怎麼把三行三列的拼圖游戲改成四行四列!!跪求高手幫忙修改!!下面是源碼!!
你的程序問題很多啊 首先沒有main函數 根本運行不了 ,其次你沒有輸出,根本不可能打出表格的, 所有的3都改成4就是四行四列