C/C++박스 밀 기 게임 실현
효과 시범
기능 을 실현 하 다
위의 그림 과 같다.버튼 을 눌 러 돼지 의 운동 을 제어 하고 상 자 를 밀어 목적지 에 도착한다.
어떻게 실현 합 니까?
1.먼저 상자,돼지 등 정 보 를 저장 하고 맵 을 여러 개 추가 하면 3 차원 배열 에 사용 할 수 있 습 니 다.
2.돼지,상자,벽,공 터 등 정보 가 3 차원 배열 에 있 는 수 치 를 정의 합 니 다.
공 터 0
벽. 1
목적지 2
상자. 3
돼지. 4 2+4=6 돼지 목적지 도착 해도 돼지 표시
상자 가 목적지 에 도착 하 다 2+3=5
3.버튼 을 눌 러 상 자 를 밀어 내 는 운동 을 한다.
여러 가지 상황 을 고려 하 다.
① 돼지 의 운동(공 터,목적)
②.돼지 가 상 자 를 밀어 내 는 운동(공 터,목적지)
3 차원 배열 로 map 정 보 를 저장 합 니 다.여기 서 저 는 두 가지 그림 만 만 들 었 고 스스로 추가 할 수 있 습 니 다.
int backgrand[MAP][ROW][COL] =//map
{
{
1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 2, 0, 0, 1,
1, 1, 0, 0, 3, 1, 1, 1,
1, 2, 3, 0, 4, 0, 0, 1,
1, 0, 1, 0, 3, 3, 2, 1,
1, 1, 0, 3, 2, 0, 0, 1,
1, 0, 0, 2, 0, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1
},
{
0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 2, 0, 0, 0, 1,
1, 1, 0, 0, 3, 0, 1, 1,
1, 2, 3, 0, 4, 0, 0, 1,
1, 0, 1, 0, 0, 0, 1, 1,
1, 1, 0, 3, 2, 3, 0, 1,
1, 0, 0, 0, 0, 2, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1
},
};
그림 을 그 리 는 데 easyx 라 이브 러 리 를 사 용 했 습 니 다.그림 을 불 러 오고 창 을 그 리 는 데 세 개의 문구 만 사 용 했 습 니 다.간단 합 니 다.
initgraph();//
loadimage();//
putinmage();//
구체 적 으로 코드 를 볼 수 있 습 니 다!부호 블록
#include<stdio.h>
#include<Windows.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<graphics.h>
#define ROW 8
#define COL 8
#define MAP 2//map
int count = 0;// map
/*
0
1
2
3
4 2+4=6
2+3=5
*/
IMAGE image1, image2, image3, image4, image5, image6;
int backgrand[MAP][ROW][COL] =//map
{
{
1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 2, 0, 0, 1,
1, 1, 0, 0, 3, 1, 1, 1,
1, 2, 3, 0, 4, 0, 0, 1,
1, 0, 1, 0, 3, 3, 2, 1,
1, 1, 0, 3, 2, 0, 0, 1,
1, 0, 0, 2, 0, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1
},
{
0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 2, 0, 0, 0, 1,
1, 1, 0, 0, 3, 0, 1, 1,
1, 2, 3, 0, 4, 0, 0, 1,
1, 0, 1, 0, 0, 0, 1, 1,
1, 1, 0, 3, 2, 3, 0, 1,
1, 0, 0, 0, 0, 2, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1
},
};
int Judge(){//p
int i = 0;
for (i = 0; i < ROW; i++){
int j = 0;
for (j = 0; j < COL; j++){
if (backgrand[count][i][j] == 3 || backgrand[count][i][j] == 2){//
return 0;
}
}
}
return 1;
}
void Backgrand(){//
int i = 0;
for (; i < ROW; i++){
int j = 0;
for (; j < COL; j++){
int x = 80 * j;// y( ), x( )。
int y = 80 * i;
switch (backgrand[count][i][j]){
case 0:
putimage(x, y, &image3);
break;
case 1:
putimage(x, y, &image1);
break;
case 2:
putimage(x, y, &image6);
break;
case 3:
putimage(x, y, &image4);
break;
case 4:
case 6:
putimage(x, y, &image2);
break;
case 5:
putimage(x, y, &image5);
break;
default:
break;
}
}
}
}
void Keymove(){//
int i = 0;
int j = 0;//j , for
for (i = 0; i < ROW; i++){ //
for (j = 0; j < COL; j++){
if (backgrand[count][i][j] == 4 || backgrand[count][i][j] == 6){
break;
}
}
if (backgrand[count][i][j] == 4 || backgrand[count][i][j] == 6){
break;
}
}
char key = _getch();//
switch (key){
case 'w':
case 'W':
case 72:
if (backgrand[count][i - 1][j] == 0 ||\
backgrand[count][i - 1][j] == 2)
{
backgrand[count][i][j] = backgrand[count][i][j] - 4;// ,
backgrand[count][i - 1][j] = backgrand[count][i - 1][j] + 4;
}
if (backgrand[count][i - 1][j] == 3 && (backgrand[count][i - 2][j] == 0 || \
backgrand[count][i - 2][j] == 2)) // , 。
{ //
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i - 1][j] = backgrand[count][i - 1][j] + 4;
backgrand[count][i - 1][j] -= 3;
backgrand[count][i - 2][j] += 3;
}
if (backgrand[count][i - 1][j] == 5 &&\
backgrand[count][i - 2][j] == 0) // ,
{
backgrand[count][i][j] -= 4;
backgrand[count][i - 1][j] += 4;
backgrand[count][i - 1][j] -= 3;
backgrand[count][i - 2][j] += 3;
}
break;
case 's':
case 'S':
case 80:
if (backgrand[count][i + 1][j] == 0 || \
backgrand[count][i + 1][j] == 2)
{ //
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i + 1][j] = backgrand[count][i + 1][j] + 4;
}
if (backgrand[count][i + 1][j] == 3 && (backgrand[count][i + 2][j] == 0 ||\
backgrand[count][i + 2][j] == 2))
{
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i + 1][j] = backgrand[count][i + 1][j] + 4;
backgrand[count][i + 1][j] -= 3;
backgrand[count][i + 2][j] += 3;
}
if (backgrand[count][i + 1][j] == 5 && \
backgrand[count][i + 2][j] == 0)
{
backgrand[count][i][j] -= 4;
backgrand[count][i + 1][j] += 4;
backgrand[count][i + 1][j] -= 3;
backgrand[count][i + 2][j] += 3;
}
break;
case 'a':
case 'A':
case 75:
if (backgrand[count][i][j - 1] == 0 || \
backgrand[count][i][j - 1] == 2)
{ //
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i][j - 1] = backgrand[count][i][j - 1] + 4;
}
if (backgrand[count][i][j - 1] == 3 &&\
(backgrand[count][i][j - 2] == 0 ||\
backgrand[count][i][j - 2] == 2))
{
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i][j - 1] = backgrand[count][i][j - 1] + 4;
backgrand[count][i][j - 1] -= 3;
backgrand[count][i][j - 2] += 3;
}
if (backgrand[count][i][j - 1] == 5 && \
backgrand[count][i][j - 2] == 0)
{
backgrand[count][i][j] -= 4;
backgrand[count][i][j - 1] += 4;
backgrand[count][i][j - 1] -= 3;
backgrand[count][i][j - 2] += 3;
}
break;
case 'd':
case 'D':
case 77:
if (backgrand[count][i][j + 1] == 0 || \
backgrand[count][i][j + 1] == 2)
{ //
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i][j + 1] = backgrand[count][i][j + 1] + 4;
}
if (backgrand[count][i][j + 1] == 3 && (backgrand[count][i][j + 2] == 0 ||\
backgrand[count][i][j + 2] == 2))
{
backgrand[count][i][j] -= 4;
backgrand[count][i][j + 1] += 4;
backgrand[count][i][j + 1] -= 3;
backgrand[count][i][j + 2] += 3;
}
if (backgrand[count][i][j + 1] == 5 && backgrand[count][i][j + 2] == 0){
backgrand[count][i][j] -= 4;
backgrand[count][i][j + 1] += 4;
backgrand[count][i][j + 1] -= 3;
backgrand[count][i][j + 2] += 3;
}
break;
default:
break;
}
}
void Initgraph(){
initgraph(80 * ROW, 80 * COL);
loadimage(&image1, "1.jpg");//
loadimage(&image2, "2.jpg");//
loadimage(&image3, "3.jpg");//
loadimage(&image4, "4.jpg");//
loadimage(&image6, "6.jpg");//
loadimage(&image5, "5.jpg");//
}
int main(){
Initgraph();
while (1){
Backgrand();
Keymove();
if (Judge()){
Backgrand();
Sleep(500);
count++;
}
if (count == MAP){
break;
}
}
getchar();
closegraph();
system("pause");
return 0;
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio에서 파일 폴더 구분 (포함 경로 설정)Visual Studio에서 c, cpp, h, hpp 파일을 폴더로 나누고 싶었습니까? 어쩌면 대부분의 사람들이 있다고 생각합니다. 처음에 파일이 만들어지는 장소는 프로젝트 파일 등과 같은 장소에 있기 때문에 파일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.