Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
EduardSakhnovic
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 69
#1

Расстановка фигур в лабиринте - Android

30.06.2015, 21:33. Просмотров 205. Ответов 3
Метки нет (Все метки)

Я пишу пакмэна под андроид.Мне надо,разместить пакмэна и монетки в лабиринте,так как они расположены у меня в матрице.Лабиринт я не прописывал,а загрузил картинку с компа.Пакмэн должен двигаться при помощи строки которую вводит пользователь.Запутался полностью со всем этим,как это делать.Могу скинуть проект в личку
Ввод пользователя в андроиде как делать не знаю.Пока что в классе Game обычный ввод с консоли.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package es.eduards.pacman.util;
 
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.view.SurfaceView;
import android.widget.ImageView;
 
import es.eduards.pacman.R;
import es.eduards.pacman.pacmangame.Game;
import es.eduards.pacman.pacmangame.Pacman;
 
/**
 * Class answering for all graphics of the game
 */
public class GameSurface extends SurfaceView {
    Game mField;
    String someText="Enjoy!!";
    Bitmap mPacman,mBg,mCoin,mWall;
    float x,y;
    public void setXY(float x,float y){
        this.x=x;
        this.y=y;
    }
    public void someText(String someText){
        this.someText=someText;
    }
    /**
     * Constructor where we are loading bitmap from resources
     * @param context
     */
    public GameSurface(Context context){
        super(context);
        //create new game field
        mField=new Game();
        mBg= BitmapFactory.decodeResource(context.getResources(), R.drawable.pacmanbg);
        //mCoin=BitmapFactory.decodeResource(context.getResources(),R.drawable.coinsms);
    }
    /**
     * All game will be painted here
     */
    public void drawPacman(Canvas canvas){
        Paint paint=new Paint();
        canvas.drawBitmap(mBg,10,10,paint);//draw the maze
 
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
package es.eduards.pacman.pacmangame;
 
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.Random;
public class Game extends GameObject{
    /*dimentions of game board*/
    public static final int mFieldX=10;
    public static final int mFieldY=10;
    /*components of object Game*/
    public static GameObject board[][]=new GameObject[mFieldX][mFieldY];//the field of game-2d array
    public static Wall wall =new Wall(-1,rndPosition());;
    static Integer score=0;//the score achievements
    static Double level;//Number between 10 and 80 that signs the percent of walls of the board dimensions to create
    static String player_name;
    static final Pacman pacman1=Pacman.getPacman();
    static final Blinky blinky=Blinky.getInstance();
    static final Pinky pinky=Pinky.getInstance();
    static final Clyde clyde=Clyde.getInstance();
    static final Inky inky=Inky.getInstance();
    private static Coin coin=new Coin(0,rndPosition());
    private static String gameSequence;//pacman game sequence motion
    private static  int coins_cnt=0;
    private static Monster[] arrMonster=new Monster[4];
    /**
     *
     * @param id_number
     * @param position
     * Constructor to call the components from the super abstract
     * class GameObject
     */
    public Game(Integer id_number, Position position) {
        super(id_number, position);
    }
    public Game(){
        super();
    }
    /**
     * Method checks the free position
     * with the method boolean isAvailable()
     * and returns reference to it's position
     * else returns null
     * @return
     */
 
    public static Position rndPosition()
    {
        Random rand = new Random();
        int x=rand.nextInt(10);
        int y=rand.nextInt(10);
        while (  (x==0 && y==0) || (!isAvailable(x,y))  )
        {
            x=rand.nextInt(10);
            y=rand.nextInt(10);
        }
        Position p= new Position(x,y);
        return p;
    }
    /**
     * This method assigns positions of pacman , monsters,walls,coins and put them on the board
     * @param obj
     */
    public static void Assign(GameObject obj){
 
        if(obj instanceof Pacman){
 
            if(isAvailable(0,0)){
 
                board[0][0]=Pacman.getPacman();
            }
        }
        else  if(obj instanceof Wall)
        {
           /*loop to place the walls in their random positions
               * according to user's input of an appropriate level
               * and persentage of this input and length of the board
               */
              /*help values to check if position is a pacman position*/
 
 
            for(int k=0;k<wall.getNumberOfWalls();k++){
 
                board[rndPosition().getX()][rndPosition().getY()]=new Wall(-1,rndPosition());
                board[0][0]=Pacman.getPacman();//to promiss that wall or Monster will not be randomly placed on pacman's position
                wall.setPosition(rndPosition());
 
            }
        }
 
        else if (obj instanceof Blinky){
            board[rndPosition().getX()][rndPosition().getY()]=Blinky.getInstance();
            Blinky.getInstance().p.setX(rndPosition().getX());
            Blinky.getInstance().p.setY(rndPosition().getY());
        }
        else if(obj instanceof Pinky){
            board[rndPosition().getX()][rndPosition().getY()]=Pinky.getInstance();
            Pinky.getInstance().p.setX(rndPosition().getX());
            Pinky.getInstance().p.setY(rndPosition().getY());
        }
        else if(obj instanceof Clyde){
            board[rndPosition().getX()][rndPosition().getY()]=Clyde.getInstance();
            Clyde.getInstance().p.setX(rndPosition().getX());
            Clyde.getInstance().p.setY(rndPosition().getY());
        }
        else if(obj instanceof Inky){
            board[rndPosition().getX()][rndPosition().getY()]=Inky.getInstance();
            Inky.getInstance().p.setX(rndPosition().getX());
            Inky.getInstance().p.setY(rndPosition().getY());
        }
        else if(obj instanceof Coin){
            for(int i=0;i<board.length;i++){
                for(int j=0;j<board.length;j++){
                    if(board[i][j]==null){
                        board[i][j]=new Coin(0,new Position(i,j));
                        coins_cnt++;
                        coin.setPosition(new Position(i,j));
                        board[0][0]=Pacman.getPacman();
 
                    }
 
                }
            }
 
            coin.setNumberOfCoins(coins_cnt);
 
        }
    }
 
 
    /**
     * return true if position is free
     * else
     * return false
     * @param X
     * @param Y
     * @return
     */
    static boolean isAvailable(Integer X,Integer Y){
 
        return board[X][Y]==null;
    }
 
 
    /**
     * method to init the game
     * player's name
     * board length
     * level-percent of walls to create according to the board's dimensions
     */
    public static void init_game()
    {
 
        Scanner input=new Scanner(System.in);
        System.out.println("Enter your name:");
        player_name=input.nextLine();
        do
        {
            System.out.println("Enter your level-the number between 10 and 80:");
            try{
                level=input.nextDouble();
 
            }catch(InputMismatchException e){//InputMismatchException
                System.out.println("You didn't enter a numeric value!!!!");
 
            }
            try
            {
              /*if user entered a string(name or steps sequence) instead of numeric level*/
                if((level<10||level>80)||(level>10||level<80)){
                    //System.out.println("Input is correct");
 
                }
            }
            catch(NullPointerException e){
                System.out.println("Unfortunatelly you can't play!!!!");
                System.exit(0);//stop program after input fault
            }
 
        }while(level<10||level>80);
 
 
        try{
            int walls_number=(int)(mFieldX*mFieldY*level)/100;
            wall.setNumberOfWalls(walls_number);
        }catch(NullPointerException e){
            System.out.println("No any Data!!!");
        }
 
      /*init matrix-empty places are null*/
 
        for(int i=0;i<board.length;i++){
            for(int j=0;j<board[i].length;j++){
 
                board[i][j]=null;
            }
        }
      /*Assign all characters on board*/
        Assign(pacman1);
        Assign(wall);
        Assign(blinky);
        Assign(pinky);
        Assign(inky);
        Assign(clyde);
        Assign(coin);
        System.out.println("Please enter game sequence:");
        gameSequence=input.next();
        gameSequence=gameSequence.toLowerCase();//convert all characters to lower cases
        startGame(gameSequence);
    }
 
 
    /**
     * start game by receiving string of game sequence that define pacman's movement
     * movements of pacman
     */
 
    private static void startGame(String gameSequence){
 
        for(int i=0;i<gameSequence.length();i++){
 
            if(gameSequence.charAt(i)=='u'||gameSequence.charAt(i)=='d'||gameSequence.charAt(i)=='l'||gameSequence.charAt(i)=='r'){
                {
 
                    pacman1.make_a_move(gameSequence.charAt(i));
                      /*loop to move the monsters*/
                    for(int k=0;k<arrMonster.length;k++){
                        clyde.make_a_move(gameSequence.charAt(i));
                        blinky.make_a_move(gameSequence.charAt(i));
                        pinky.make_a_move(gameSequence.charAt(i));
                        inky.make_a_move(gameSequence.charAt(i));
                    }
                    board[pacman1.position.getX()][pacman1.position.getY()]=Pacman.getPacman();//set the new position to pacman
                    score+=1;
                    coin.decreaseCoin();
                    if(coin.getNumberOfCoins()==0){
                        coin.setNumberOfCoins(0);
                        coins_cnt=0;
                        print_game();
                        EndGame(true);
                        break;
                    }
 
 
                                 /*if pacman collides with one of monsters,decrease life!!*/
                    if(Pacman.getPacman().position.getX()==Clyde.getInstance().p.getX()&&Pacman.getPacman().position.getY()==Clyde.getInstance().p.getY()||
                            Pacman.getPacman().position.getX()==Inky.getInstance().p.getX()&&Pacman.getPacman().position.getY()==Inky.getInstance().p.getY()||
                            Pacman.getPacman().position.getX()==Pinky.getInstance().p.getX()&&Pacman.getPacman().position.getY()==Pinky.getInstance().p.getY()||
                            Pacman.getPacman().position.getX()==Blinky.getInstance().p.getX()&&Pacman.getPacman().position.getY()==Blinky.getInstance().p.getY()
                            )
                    {
                        pacman1.decreaseLife();
                        if(pacman1.get_lives()==0){//if no more lives the game is lost
                            pacman1.set_lives(0);
                            print_game();
                            EndGame(false);
                            break;
                        }
 
                    }
 
 
                    else if(Pacman.getPacman().position.getX()==wall.getPosition().getX()&&Pacman.getPacman().position.getY()==wall.getPosition().getY()){
                        print_game();
                        break;//pacman will not move if it collides with wall
                    }
                    else{
                        print_game();
                    }
 
                }
 
            }
 
        }
 
 
    }
    /**
     *
     *  Prints a message according to the result of the current game
     */
 
    public static void EndGame(boolean isWon){
        if(!isWon){
            System.out.println("You lost a game!!!Would you try again??? Enter 'Y' for yes enter 'N' for no");
            Scanner input=new Scanner(System.in);
            char choice=input.next().charAt(0);
 
            if(choice=='Y'||choice=='y'){
                System.out.println("Please enter game sequence:");
                gameSequence=input.next();
                gameSequence=gameSequence.toLowerCase();//convert all characters to lower cases
                startGame(gameSequence);
 
            }
            else
            {
 
                return;
            }
        }
        else{
            System.out.println("Great!!!!!You won the game,do you want to continue??Would you try again??? Enter 'Y' for yes enter 'N' for no");
            Scanner input=new Scanner(System.in);
            char choice=input.next().charAt(0);
 
            if(choice=='Y'||choice=='y'){
                System.out.println("Please enter game sequence:");
                gameSequence=input.next();
                gameSequence=gameSequence.toLowerCase();//convert all characters to lower cases
                startGame(gameSequence);
 
            }
            else
            {
 
                return;
            }
        }
    }
 
 
    /**
     * output name of player his score and state of game board with all objects
     *
     */
 
    public static void print_game(){
        if(coin.getNumberOfCoins()==0){
            coin.setNumberOfCoins(0);
        }
        else if(pacman1.get_lives()==0){
            pacman1.set_lives(0);
        }
        System.out.println("Name:"+player_name+"  "+" Level"+level+"  "+"Score:  "+score+"Coins: "+coin.getNumberOfCoins()+"Lives: "+pacman1.get_lives());
        for(int i=0;i<board.length;i++){
            for(int j=0;j<board.length;j++){
                System.out.print(board[i][j]);
            }
            System.out.println("\n");
        }
 
 
 
    }
 
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2015, 21:33     Расстановка фигур в лабиринте
Посмотрите здесь:

Волшебник в лабиринте
C++ Поиск в лабиринте
мышка в лабиринте с++ C++
Prolog Поиск в лабиринте
Массив разных фигур, и нахождение в нём площади всех фигур Java SE
Ладья в лабиринте PascalABC.NET
Matlab Даны несколько фигур. При пересечении этих фигур образуются области, обозначенные цифрами на рисунке к каж
Android Приложение по подсчету площадей фигур
Недочеты в лабиринте C#
Необычная расстановка фигур на шахматной доске
CorelDRAW Создание изображений в виде мелких фигур, изменение размера мелких фигур
Программная расстановка большого количества кнопок Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2021 / 1763 / 548
Регистрация: 12.05.2014
Сообщений: 6,248
Завершенные тесты: 1
01.07.2015, 08:39     Расстановка фигур в лабиринте #2
много кода
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
01.07.2015, 09:44     Расстановка фигур в лабиринте #3
а лаяуты еще бы
EduardSakhnovic
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 69
02.07.2015, 17:15  [ТС]     Расстановка фигур в лабиринте #4
Цитата Сообщение от Rube Посмотреть сообщение
а лаяуты еще бы
могу весь проект прикрепить если надо
Yandex
Объявления
02.07.2015, 17:15     Расстановка фигур в лабиринте
Ответ Создать тему
Опции темы

Текущее время: 15:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru