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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Как победить подтормаживание при листании ViewPager со списками listview? http://www.cyberforum.ru/android-dev/thread1490779.html
Как победить подтормаживание при листании ViewPager со списками listview? если быстро листать (ну или даже не очень быстро), то тормозит, видимо из-за пересоздания фрагмента, есть ли какое-то решение на эту тему подскажите кто сталкивался?
Android Техническое задание для новичка Здравствуйте уважаемые андроид разработчики. У меня есть новостной сайт к которому я хочу сделать приложение. Я бы хотел узнать как делают такие приложения. Приложение должно показывать новые новости с сайта. В новостях контент - это текст, картинки и видео с нашего канала на ютубе. решил использовать для оповещения пользователей о новой новости сервис Google cloud message при потере связи... http://www.cyberforum.ru/android-dev/thread1490775.html
Android Написание программы "Таймер"
Доброе время суток! Совсем недавно начала изучение Java. Сейчас есть острая необходимость в создании таймера под андроид. Работаю с Eclipse. Может, кто сможет помочь с кодом? P.S. гугл и яндекс весь перерыла, похожие темы смотрела :)
Android Разработка приложения для удаленного управления windows
Помогите найти литературу по данной теме. Заранее благодарен.
Android Работа с Bluetooth маркерами http://www.cyberforum.ru/android-dev/thread1490573.html
Кто нибудь работал с Bluetooth маркерами? Есть Android PC устройство и при приближении маркера он должен будет регистрировать этот маркер... Может кто делал подобное? куда копать, может где есть наработки(библиотеки) ? Вроде как что то типо этого и надо https://github.com/AltBeacon/android-beacon-library
Android Приложение на мини PC Android на чем писать программу которая будет работать на мини PC ОС: Android..? Добавлено через 1 час 34 минуты Или так-же на Android Studio ? подробнее

Показать сообщение отдельно
EduardSakhnovic
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 69

Расстановка фигур в лабиринте - 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");
        }
 
 
 
    }
 
 
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru