· 8 years ago · May 27, 2018, 05:24 PM
1package com.example.gwynbleidd.verstkagame;
2
3import android.app.AlertDialog;
4import android.app.Dialog;
5import android.content.ContentValues;
6import android.content.Intent;
7import android.content.SharedPreferences;
8import android.database.sqlite.SQLiteDatabase;
9import android.graphics.Point;
10import android.os.Bundle;
11import android.preference.PreferenceManager;
12import android.support.v7.app.AppCompatActivity;
13import android.view.Display;
14import android.view.View;
15import android.view.WindowManager;
16import android.widget.Button;
17
18import com.example.gwynbleidd.verstkagame.UnitClasses.Unit;
19
20
21public class GameActivity extends AppCompatActivity {
22
23 Integer[][] matrix1;
24 Integer[][] matrix2;
25 BattleField battleField;
26 Dialog menu;
27 Dialog saveMenu;
28
29 AppCompatActivity game;
30 Integer[][] HPMatrix = new Integer[7][9];
31 Integer[][] VALUABLEMOVEMatrix = new Integer[7][9];
32 Boolean[][] OWNERMatrix = new Boolean[7][9];
33 Boolean[][] canAttackMatrix = new Boolean[7][9];
34 String[][] nameMatrix = new String[7][9];
35
36 @Override
37 protected void onCreate(Bundle savedInstanceState) {
38 super.onCreate(savedInstanceState);
39 this.game = this;
40 getSupportActionBar().hide();
41 Display display = getWindowManager().getDefaultDisplay();
42 Point size = new Point();
43 display.getSize(size);
44 int width = size.x;
45 int height = size.y;
46 menu = new Dialog(GameActivity.this);
47 menu.setContentView(R.layout.menu_layout);
48 menu.setTitle("Меню");
49 menu.getWindow().setLayout(width / 2, height / 2);
50
51
52 saveMenu = new Dialog(GameActivity.this);
53 saveMenu.setContentView(R.layout.save_screen);
54 saveMenu.setTitle("Сохранение");
55 saveMenu.getWindow().setLayout(width / 2, height / 2);
56
57
58 Button btnBack = (Button) saveMenu.findViewById(R.id.btnBack);
59 btnBack.setOnClickListener(new View.OnClickListener() {
60 @Override
61 public void onClick(View view) {
62 saveMenu.cancel();
63 }
64 });
65
66 Button btnSave1 = (Button) saveMenu.findViewById(R.id.save1);
67 Button btnSave2 = (Button) saveMenu.findViewById(R.id.save2);
68 Button btnSave3 = (Button) saveMenu.findViewById(R.id.save3);
69 Button btnSave4 = (Button) saveMenu.findViewById(R.id.save4);
70 Button btnSave5 = (Button) saveMenu.findViewById(R.id.save5);
71 Button btnSave6 = (Button) saveMenu.findViewById(R.id.save6);
72
73 btnSave1.setOnClickListener(new View.OnClickListener() {
74 @Override
75 public void onClick(View view) {
76 SQLiteDatabase myDB = openOrCreateDatabase("save1.db", MODE_PRIVATE, null);
77 myDB.execSQL("DROP TABLE IF EXISTS save1");
78 myDB.execSQL(
79 "CREATE TABLE IF NOT EXISTS save1 (name TEXT, indexX INT, indexY INT, HP INT, canAttack INT, VALUABLEMOVE INT, OWNER INT)"
80 );
81
82 for (int i = 0; i < 6; i++) {
83 for (int j = 0; j < 8; j++) {
84 if (!battleField.unitMatrix[i][j].isGround()) {
85 ContentValues tmpRow = new ContentValues();
86 tmpRow.put("name", battleField.unitMatrix[i][j].name);
87 tmpRow.put("indexX", i);
88 tmpRow.put("indexY", j);
89 tmpRow.put("HP", battleField.unitMatrix[i][j].HP);
90 tmpRow.put("canAttack", (battleField.unitMatrix[i][j].canAttack == true ? 1 : 0));
91 tmpRow.put("VALUABLEMOVE", battleField.unitMatrix[i][j].VALUABLEMOVE);
92 tmpRow.put("OWNER", (battleField.unitMatrix[i][j].Owner == true ? 1 : 0));
93 myDB.insert("save1", null, tmpRow);
94 }
95 }
96 }
97
98 myDB.close();
99
100 }
101 });
102
103
104
105 Button btnSave = (Button) menu.findViewById(R.id.saveGame);
106 btnSave.setText("Сохранить игру");
107 Button btnMainMenu = (Button) menu.findViewById(R.id.mainMenu);
108 btnMainMenu.setText("В главное меню");
109
110 btnSave.setOnClickListener(new View.OnClickListener() {
111 @Override
112 public void onClick(View view) {
113 saveMenu.show();
114 }
115 });
116
117 btnMainMenu.setOnClickListener(new View.OnClickListener() {
118 @Override
119 public void onClick(View view) {
120 menu.cancel();
121 game.finish();
122 }
123 });
124
125
126
127
128 matrix1 = (Integer[][]) getIntent().getExtras().getSerializable("UnitMatrixPlayerOne");
129 matrix2 = (Integer[][]) getIntent().getExtras().getSerializable("UnitMatrixPlayerTwo");
130 HPMatrix = (Integer[][]) getIntent().getExtras().getSerializable("HPMatrix");
131 VALUABLEMOVEMatrix = (Integer[][]) getIntent().getExtras().getSerializable("VALUABLEMOVEMatrix");
132 nameMatrix = (String[][]) getIntent().getExtras().getSerializable("nameMatrix");
133 canAttackMatrix = (Boolean[][]) getIntent().getExtras().getSerializable("canAttackMatrix");
134 OWNERMatrix = (Boolean[][]) getIntent().getExtras().getSerializable("OWNERMatrix");
135 battleField = new BattleField(this, width, height, matrix1, matrix2, nameMatrix, HPMatrix, canAttackMatrix, OWNERMatrix, VALUABLEMOVEMatrix, menu);
136 setContentView(battleField);
137
138
139 }
140
141
142 @Override
143 protected void onDestroy() {
144 battleField.iconattack.recycle();
145 battleField.armor.recycle();
146 battleField.blue2Image.recycle();
147 battleField.blueImage.recycle();
148 battleField.red2Image.recycle();
149 battleField.redImage.recycle();
150 battleField.turn.recycle();
151 battleField.turn2.recycle();
152 battleField.frame.recycle();
153 battleField.board1.recycle();
154 battleField.groundCellImage.recycle();
155 battleField.groundImage.recycle();
156 battleField.btnMenuImage.recycle();
157 for (int i = 0; i < 6; i++) {
158 for (int j = 0; j < 8; j++) {
159 battleField.unitMatrix[i][j].cellImage.recycle();
160 if (battleField.unitMatrix[i][j].outImage != null)
161 battleField.unitMatrix[i][j].outImage.recycle();
162 if (battleField.unitMatrix[i][j].cellImageModel1 != null)
163 battleField.unitMatrix[i][j].cellImageModel1.recycle();
164 if (battleField.unitMatrix[i][j].cellImageModel2 != null)
165 battleField.unitMatrix[i][j].cellImageModel2.recycle();
166 if (battleField.unitMatrix[i][j].cellImageModel3 != null)
167 battleField.unitMatrix[i][j].cellImageModel3.recycle();
168 }
169 }
170 super.onDestroy();
171 }
172}
173
174
175
176
177
178
179
180
181
182
183
184package com.example.gwynbleidd.verstkagame;
185
186
187import android.app.Dialog;
188import android.content.Context;
189import android.content.res.Resources;
190import android.graphics.Bitmap;
191import android.graphics.BitmapFactory;
192import android.graphics.Canvas;
193import android.graphics.Color;
194import android.graphics.Paint;
195import android.util.Log;
196import android.view.MotionEvent;
197import android.view.View;
198import android.widget.ImageView;
199import android.widget.Toast;
200
201import com.example.gwynbleidd.verstkagame.UnitClasses.Humans.Archer;
202import com.example.gwynbleidd.verstkagame.UnitClasses.Humans.Mage;
203import com.example.gwynbleidd.verstkagame.UnitClasses.Unit;
204
205
206public class BattleField extends View {
207 Resources resources;
208 Context context;
209 Integer cellWidth = 1;
210 Integer cellHeight = 1;
211 Integer indexOfCellY = 8;
212 Integer indexOfCellX = 6;
213 Integer deltaScreenX = 0;
214 Integer deltaScreenY = 0;
215 Integer indexOfCellOnClickY;
216 Integer indexOfCellOnClickX;
217 Integer width;
218 Integer height;
219 Integer previousIndexOfCellY = 8;
220 Integer previousIndexOfCellX = 6;
221 Integer befpreviousIndexOfCellX = 6;
222 Integer befpreviousIndexOfCellY = 8;
223 Integer[][] matrix = new Integer[7][9];
224 Unit[][] unitMatrix = new Unit[7][9];
225 Bitmap frame;
226 Bitmap board1;
227 Bitmap redImage;
228 Bitmap blueImage;
229 //Bitmap archImage;
230 // Bitmap arch2Image;
231 Bitmap red2Image;
232 Bitmap armor;
233 Bitmap turn;
234 Bitmap turn2;
235 Bitmap iconattack;
236 Bitmap btnMenuImage;
237 ImageView imageView;
238 OurButton btnTurn;
239 OurButton btnMenu;
240 Boolean TurnOfSide;
241 Canvas canvas;
242 public long startTime1 = 0;
243 public long elapsedTime1 = 0;
244 MotionEvent previousEvent;
245 Boolean DoubleClickCheck;
246 Integer Unitx;
247 Integer UnitY;
248 Boolean DrawPermissed = false;
249 Boolean UnitChosen = false;
250
251
252
253 Bitmap groundImage;
254
255 Bitmap blue2Image;
256 Bitmap groundCellImage;
257
258
259 public Integer getCellWidth() {
260 return cellWidth;
261 }
262 public void setCellWidth(Integer cellWidth) {
263 this.cellWidth = cellWidth;
264 }
265 public Integer getCellHeight() {
266 return cellHeight;
267 }
268 public void setCellHeight(Integer cellHeight) {
269 this.cellHeight = cellHeight;
270 }
271 public Integer getIndexOfCellY() {
272 return indexOfCellY;
273 }
274 public void setIndexOfCellY(Integer indexOfCellY) {
275 this.indexOfCellY = indexOfCellY;
276 }
277 public Integer getIndexOfCellX() {
278 return indexOfCellX;
279 }
280 public void setIndexOfCellX(Integer indexOfCellX) {
281 this.indexOfCellX = indexOfCellX;
282 }
283 public Integer getDeltaScreenX() {
284 return deltaScreenX;
285 }
286 public void setDeltaScreenX(Integer deltaScreenX) {
287 this.deltaScreenX = deltaScreenX;
288 }
289 public Integer getDeltaScreenY() {
290 return deltaScreenY;
291 }
292 public void setDeltaScreenY(Integer deltaScreenY) {
293 this.deltaScreenY = deltaScreenY;
294 }
295
296 Paint p;
297 Unit redUnit;
298 Unit blueUnit;
299 Archer archer;
300 Paint pBlack;
301 Paint pGreen;
302 Paint pYellow;
303 Paint pText;
304 Paint pHealthBar;
305 Paint pHealthBarBounds;
306 Paint pRed;
307
308 Dialog menu;
309
310
311 public BattleField(Context context, Integer width, Integer height, Integer[][] matrix1, Integer[][] matrix2, String[][] nameMatrix, Integer[][] HPMatrix, Boolean[][] canAttackMatrix, Boolean[][] OWNERmatrix, Integer[][] VALUABLEMOVEMatrix, Dialog menu) {
312 super(context);
313 this.context = context;
314 this.menu = menu;
315 this.cellWidth = width / 8;
316 this.cellHeight = height / 12;
317 this.deltaScreenX = width / 8;
318 this.deltaScreenY = height / 6;
319 this.width = width;
320 this.height = height;
321 this.resources = getResources();
322 this.startTime1 = System.currentTimeMillis();
323 turn = BitmapFactory.decodeResource(resources, R.drawable.turn);
324 turn2 = BitmapFactory.decodeResource(resources, R.drawable.turn2);
325 btnTurn = new OurButton(turn, turn2, resources, cellWidth * 2, cellHeight / 2);
326 board1 = BitmapFactory.decodeResource(resources, R.drawable.board1);
327
328
329 btnMenuImage = BitmapFactory.decodeResource(resources, R.drawable.gear);
330
331 btnMenu = new OurButton(btnMenuImage, btnMenuImage, resources , width / 17, height / 33);
332
333
334 frame = BitmapFactory.decodeResource(resources, R.drawable.cutramka);
335 frame = Bitmap.createScaledBitmap(frame, cellWidth, cellHeight, false);
336 redImage = BitmapFactory.decodeResource(resources, R.drawable.mage);
337 blueImage = BitmapFactory.decodeResource(resources, R.drawable.swordman);
338 //archImage = BitmapFactory.decodeResource(resources, R.drawable.archer);
339 blue2Image = BitmapFactory.decodeResource(resources, R.drawable.swordman2);
340 //arch2Image = BitmapFactory.decodeResource(resources, R.drawable.archer2);
341
342
343
344 groundImage = BitmapFactory.decodeResource(resources, R.drawable.ground_test);
345
346 groundCellImage = Bitmap.createScaledBitmap(groundImage, cellWidth, cellHeight, false);
347
348
349 red2Image = BitmapFactory.decodeResource(resources, R.drawable.mage2);
350
351
352 armor = BitmapFactory.decodeResource(resources, R.drawable.armor);
353 iconattack = BitmapFactory.decodeResource(resources, R.drawable.iconattack);
354 // redUnit = new Unit("red", resources, cellWidth, cellHeight, redImage, groundCellImage, false, 10, 10, 0, 2, 1, 100);
355 // blueUnit = new Unit("blue", resources, cellWidth, cellHeight, blueImage, groundCellImage, false, 20, 5, 0, 2, 1, 100);
356 // archer = new Archer("blue", resources, cellWidth, cellHeight, groundCellImage, false, 10, 10, 0, 2, 1);
357 DoubleClickCheck = false;
358 TurnOfSide = true;
359
360
361
362
363 /* for (int i = 0; i < 6; i++) {
364
365 this.matrix[i][0] = 1;
366 this.unitMatrix[i][0] = new Archer("blarcher", getResources(),cellWidth, cellHeight, archImage, false,10,5,0,2,1);
367
368 }
369 for (int i = 0; i < 6; i++) {
370
371 this.matrix[i][1] = 1;
372 this.unitMatrix[i][1] = new Unit("blue", getResources(),cellWidth, cellHeight, blueImage, false,25,5,0,1,2);
373
374 }
375 for (int i = 0; i < 6; i++) {
376
377 this.matrix[i][6] = 1;
378 this.unitMatrix[i][6] = new Unit("red", getResources(),cellWidth, cellHeight, redImage, false,15,10,0,1,2);
379
380 }
381 for (int i = 0; i < 6; i++) {
382
383 this.matrix[i][7] = 1;
384 this.unitMatrix[i][7] = new Archer("rarcher", getResources(),cellWidth, cellHeight, archImage, false,10,5,0,2,1);
385
386 } */
387
388 if (VALUABLEMOVEMatrix == null || nameMatrix == null || OWNERmatrix == null || HPMatrix == null || canAttackMatrix == null) {
389
390 //РаÑÑтановка второго игрока
391 for (int i = 0; i < 7; i++) {
392 for (int j = 0; j < 4; j++) {
393 if (matrix2[i][j] == 0) {
394 this.unitMatrix[i][j] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage, true);
395 } else if (matrix2[i][j] == 1) {
396 this.unitMatrix[i][j] = new Mage("Mage", resources, cellWidth, cellHeight, red2Image, groundCellImage, false, 15, 10, 0, 2, 2);
397 this.unitMatrix[i][j].Owner = false;
398 } else if (matrix2[i][j] == 2) {
399 this.unitMatrix[i][j] = new Unit("Swordman", resources, cellWidth, cellHeight, blue2Image, groundCellImage, false, 25, 5, 0, 1, 2, 100);
400 this.unitMatrix[i][j].Owner = false;
401 } else if (matrix2[i][j] == 3) {
402 this.unitMatrix[i][j] = new Archer("Archer", resources, cellWidth, cellHeight, groundCellImage, false, 25, 5, 0, 2, 2);
403 this.unitMatrix[i][j].Owner = false;
404 }
405 }
406 }
407
408 //РаÑÑтановка первого игрока
409 for (int i = 0; i < 7; i++) {
410 for (int j = 4; j < 9; j++) {
411 if (matrix1[i][j] == 0) {
412 this.unitMatrix[i][j] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage, true);
413 } else if (matrix1[i][j] == 1) {
414 this.unitMatrix[i][j] = new Mage("Mage", resources, cellWidth, cellHeight, redImage, groundCellImage, false, 15, 10, 0, 2, 2);
415 this.unitMatrix[i][j].Owner = true;
416 } else if (matrix1[i][j] == 2) {
417 this.unitMatrix[i][j] = new Unit("Swordman", resources, cellWidth, cellHeight, blueImage, groundCellImage, false, 25, 5, 0, 1, 2, 100);
418 this.unitMatrix[i][j].Owner = true;
419 } else if (matrix1[i][j] == 3) {
420 this.unitMatrix[i][j] = new Archer("Archer", resources, cellWidth, cellHeight, groundCellImage, false, 25, 5, 0, 2, 2);
421 this.unitMatrix[i][j].Owner = true;
422 }
423 }
424 }
425
426 } else {
427
428 for (int i = 0; i < 7; i++) {
429 for (int j = 0; j < 9; j++) {
430 if (nameMatrix[i][j].equals("Archer")) {
431 if (OWNERmatrix[i][j])
432 this.unitMatrix[i][j] = new Archer("Archer", resources, cellWidth, cellHeight, groundCellImage, false, 25, 5, 0, 2, 2);
433 else
434 this.unitMatrix[i][j] = new Archer("Archer", resources, cellWidth, cellHeight, groundCellImage, false, 25, 5, 0, 2, 2);
435 this.unitMatrix[i][j].HP = HPMatrix[i][j];
436 this.unitMatrix[i][j].canAttack = canAttackMatrix[i][j];
437 this.unitMatrix[i][j].Owner = OWNERmatrix[i][j];
438 this.unitMatrix[i][j].VALUABLEMOVE = VALUABLEMOVEMatrix[i][j];
439 } else if (nameMatrix[i][j].equals("Swordman")) {
440 if (OWNERmatrix[i][j])
441 this.unitMatrix[i][j] = new Unit("Swordman", resources, cellWidth, cellHeight, blueImage, groundCellImage, false, 25, 5, 0, 1, 2, 100);
442 else
443 this.unitMatrix[i][j] = new Unit("Swordman", resources, cellWidth, cellHeight, blue2Image, groundCellImage, false, 25, 5, 0, 1, 2, 100);
444 this.unitMatrix[i][j].HP = HPMatrix[i][j];
445 this.unitMatrix[i][j].canAttack = canAttackMatrix[i][j];
446 this.unitMatrix[i][j].Owner = OWNERmatrix[i][j];
447 this.unitMatrix[i][j].VALUABLEMOVE = VALUABLEMOVEMatrix[i][j];
448 } else if (nameMatrix[i][j].equals("Mage")) {
449 if (OWNERmatrix[i][j])
450 this.unitMatrix[i][j] = new Mage("Mage", resources, cellWidth, cellHeight, redImage, groundCellImage, false, 15, 10, 0, 2, 2);
451 else
452 this.unitMatrix[i][j] = new Mage("Mage", resources, cellWidth, cellHeight, red2Image, groundCellImage, false, 15, 10, 0, 2, 2);
453 this.unitMatrix[i][j].HP = HPMatrix[i][j];
454 this.unitMatrix[i][j].canAttack = canAttackMatrix[i][j];
455 this.unitMatrix[i][j].Owner = OWNERmatrix[i][j];
456 this.unitMatrix[i][j].VALUABLEMOVE = VALUABLEMOVEMatrix[i][j];
457 } else
458 this.unitMatrix[i][j] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage, true);
459 }
460 }
461
462 }
463
464
465 p = new Paint();
466 Timer t = new Timer(this, Integer.MAX_VALUE, 100);
467 t.start();
468
469
470
471
472
473 pBlack = new Paint();
474 pBlack.setColor(Color.BLACK);
475 pBlack.setStrokeWidth(width / 150);
476 pYellow = new Paint();
477 pYellow.setColor(Color.YELLOW);
478 pYellow.setStrokeWidth(width / 150);
479 pYellow.setStyle(Paint.Style.STROKE);
480 pGreen = new Paint();
481 pGreen.setColor(Color.GREEN);
482 pGreen.setStrokeWidth(width / 150);
483 pGreen.setStyle(Paint.Style.STROKE);
484 pRed = new Paint();
485 pRed.setColor(Color.RED);
486 pRed.setStrokeWidth(width / 150);
487 pRed.setStyle(Paint.Style.STROKE);
488 pHealthBarBounds = new Paint();
489 pHealthBarBounds.setColor(Color.BLACK);
490 pHealthBarBounds.setStyle(Paint.Style.STROKE);
491 pHealthBarBounds.setStrokeWidth(width / 170);
492 pHealthBar = new Paint();
493 pHealthBar.setColor(Color.RED);
494 pHealthBar.setStyle(Paint.Style.FILL);
495 pHealthBar.setStrokeWidth(width / 200);
496 pText = new Paint();
497 pText.setTextSize(cellHeight * 0.3f);
498
499 board1 = Bitmap.createScaledBitmap(board1, width, height, false);
500 armor = Bitmap.createScaledBitmap(armor, cellWidth * 2 / 3, cellHeight * 2 / 3, false);
501 iconattack = Bitmap.createScaledBitmap(iconattack, cellWidth * 2 / 3, cellHeight / 3, false);
502
503
504 }
505
506
507 @Override
508 protected void onDraw(Canvas canvas) {
509 canvas.drawBitmap(board1, 0f, 0f, p);
510 btnMenu.draw(canvas, width * 16 / 17f, 0f);
511 this.canvas = canvas;
512 for (int i = 0; i < 9; i++) {
513 canvas.drawLine(deltaScreenX, i * cellHeight + deltaScreenY, canvas.getWidth() - deltaScreenX, i * cellHeight + deltaScreenY, pBlack);
514 }
515
516 for (int i = 0; i < 7; i++) {
517 canvas.drawLine(i * cellWidth + deltaScreenX, deltaScreenY, i * cellWidth + deltaScreenX, canvas.getHeight() - deltaScreenY, pBlack);
518 }
519
520
521 for (int i = 0; i < 6; i++) {
522 for (int j = 0; j < 8; j++) {
523 unitMatrix[i][j].drawInCell(canvas, deltaScreenX + cellWidth * i * 1f, deltaScreenY + cellHeight * j * 1f);
524 /* if (!unitMatrix[i][j].isGround()){
525 if(!unitMatrix[i][j].Owner){
526 canvas.drawBitmap(frame,deltaScreenX + cellWidth*i * 1f, deltaScreenY + cellHeight*j * 1f,p);
527 }
528 }*/
529 }
530
531 }
532
533
534
535
536 if (!unitMatrix[indexOfCellX][indexOfCellY].isGround()) {
537 unitMatrix[indexOfCellX][indexOfCellY].drawOutCell(canvas, +cellWidth * 6, height - deltaScreenY);
538 canvas.drawRect(cellWidth * 4.25f, cellHeight * 10.1f, cellWidth * 5.75f, cellHeight * 10.4f, pHealthBarBounds);
539 canvas.drawRect(cellWidth * 4.25f, cellHeight * 10.1f, cellWidth * 5.75f - (1 - (float) unitMatrix[indexOfCellX][indexOfCellY].HP / (float) unitMatrix[indexOfCellX][indexOfCellY].MAXHP) * 1.5f * cellWidth, cellHeight * 10.4f, pHealthBar);
540 canvas.drawText("Health Points : ", cellWidth * 1.5f, cellHeight * 10.35f, pText);
541 canvas.drawBitmap(armor, cellWidth * 4.6f, cellHeight * 10.65f, p);
542 canvas.drawBitmap(iconattack, cellWidth * 4.6f, cellHeight * 11.6f, p);
543 canvas.drawText(unitMatrix[indexOfCellX][indexOfCellY].SHIELD.toString(), cellWidth * 4.85f, cellHeight * 11.1f, pText);
544 canvas.drawText(unitMatrix[indexOfCellX][indexOfCellY].DMG.toString(), cellWidth * 4.85f, cellHeight * 11.85f, pText);
545 if (unitMatrix[indexOfCellX][indexOfCellY].HP / 10 > 0)
546 canvas.drawText(unitMatrix[indexOfCellX][indexOfCellY].HP.toString() + " / " + unitMatrix[indexOfCellX][indexOfCellY].MAXHP.toString(), cellWidth * 4.5f, cellHeight * 10.35f, pText);
547 else
548 canvas.drawText(" " + unitMatrix[indexOfCellX][indexOfCellY].HP.toString() + " / " + unitMatrix[indexOfCellX][indexOfCellY].MAXHP.toString(), cellWidth * 4.5f, cellHeight * 10.35f, pText);
549
550
551
552 }
553
554 btnTurn.draw(canvas, cellWidth * 3f, cellHeight * 1f);
555
556
557 if (DrawPermissed) {
558 if (TurnOfSide.equals(unitMatrix[indexOfCellX][indexOfCellY].Owner)) {
559
560
561 for (int i = 0; i < 6; i++) {
562 for (int j = 0; j < 8; j++) {
563 if (!unitMatrix[indexOfCellX][indexOfCellY].isGround())
564 if (unitMatrix[i][j].isGround()) {
565 if (Math.abs(indexOfCellX - i) + Math.abs(indexOfCellY - j) <= unitMatrix[indexOfCellX][indexOfCellY].VALUABLEMOVE) {
566 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pGreen);
567 }
568 } else {
569 if ((Math.abs(indexOfCellX - i) + Math.abs(indexOfCellY - j) <= unitMatrix[indexOfCellX][indexOfCellY].RANGE) && (unitMatrix[indexOfCellX][indexOfCellY].Owner != unitMatrix[i][j].Owner) && unitMatrix[indexOfCellX][indexOfCellY].canAttack) {
570 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pRed);
571 }
572 }
573 }
574 }
575 }
576 canvas.drawRect(indexOfCellX * cellWidth + deltaScreenX, indexOfCellY * cellHeight + deltaScreenY, (indexOfCellX + 1) * cellWidth + deltaScreenX, (indexOfCellY + 1) * cellHeight + deltaScreenY, pYellow);
577 }
578 }
579
580
581 boolean firstTouch = false;
582 long time = 0;
583
584 public boolean isDoubleClick(MotionEvent event) {
585
586 if (event.getAction() == event.ACTION_DOWN) {
587 if (firstTouch && (System.currentTimeMillis() - time) <= 300 && (System.currentTimeMillis() - time) > 50) {
588 //do stuff here for double tap
589 Toast toast = Toast.makeText(context,
590 befpreviousIndexOfCellX.toString() + befpreviousIndexOfCellY.toString(), Toast.LENGTH_SHORT);
591 toast.show();
592
593 return true;
594
595 } else {
596
597
598 firstTouch = true;
599 time = System.currentTimeMillis();
600 Toast toast = Toast.makeText(context,
601 befpreviousIndexOfCellX.toString() + befpreviousIndexOfCellY.toString(), Toast.LENGTH_SHORT);
602 toast.show();
603
604 }
605 }
606 return false;
607 }
608
609
610 @Override
611 public boolean onTouchEvent(MotionEvent event) {
612
613 if (event.getX() >= (width * 16 / 17) && event.getY() <= height / 33) {
614 btnMenu.isPressed = true;
615 menu.show();
616 }
617
618
619 if (event.getX() > cellWidth * 3f && event.getY() >=cellHeight * 1f && event.getX() <= cellWidth * 3f + cellWidth*2 && event.getY() <=cellHeight * 1f + cellHeight/2 ){
620 btnTurn.isPressed = !btnTurn.isPressed;
621 for (int i = 0; i < 6; i++) {
622 for (int j = 0; j < 8; j++) {
623
624 if (!unitMatrix[i][j].isGround()){
625 if (unitMatrix[i][j].Owner.equals(TurnOfSide)){
626 unitMatrix[i][j].VALUABLEMOVE = unitMatrix[i][j].MOVE;
627 unitMatrix[i][j].canAttack = true;
628 }
629
630 }
631 }
632
633 }
634 TurnOfSide = !TurnOfSide;
635 }
636
637
638 if ((event.getX() >= deltaScreenX) && (event.getX() <= cellWidth * 6 + deltaScreenX) && (event.getY() >= deltaScreenY) && (event.getY() <= cellHeight * 8 + deltaScreenY)) {
639 DrawPermissed = true;
640 for (int i = 1; i < 9; i++) {
641 if (event.getY() > cellHeight * (i - 1) + deltaScreenY && event.getY() < cellHeight * i + deltaScreenY) {
642 this.indexOfCellY = i - 1;
643 }
644 }
645
646 for (int i = 1; i < 7; i++) {
647 if (event.getX() > cellWidth * (i - 1) + deltaScreenX && event.getX() < cellWidth * i + deltaScreenX) {
648 this.indexOfCellX = i - 1;
649 }
650 }
651
652
653
654 if (!unitMatrix[indexOfCellX][indexOfCellY].isGround() && !isDoubleClick(event)) {
655
656
657 }
658 } else {
659 indexOfCellX = 6;
660 indexOfCellY = 8;
661 DrawPermissed = false;
662 }
663
664
665 if ((event.getX() >= deltaScreenX) && (event.getX() <= cellWidth * 6 + deltaScreenX) && (event.getY() >= deltaScreenY) && (event.getY() <= cellHeight * 8 + deltaScreenY) && isDoubleClick(event)) {
666 DrawPermissed = true;
667
668 for (int i = 1; i < 9; i++) {
669 if (event.getY() > cellHeight * (i - 1) + deltaScreenY && event.getY() < cellHeight * i + deltaScreenY) {
670 this.indexOfCellOnClickY = i - 1;
671 }
672 }
673
674 for (int i = 1; i < 7; i++) {
675 if (event.getX() > cellWidth * (i - 1) + deltaScreenX && event.getX() < cellWidth * i + deltaScreenX) {
676 this.indexOfCellOnClickX = i - 1;
677 }
678
679 }
680
681
682 //Передвижение и атака
683 if(!unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].ground && unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].Owner.equals(TurnOfSide) ) {
684 if ( unitMatrix[indexOfCellOnClickX][indexOfCellOnClickY].ground &&(Math.abs(indexOfCellOnClickX - befpreviousIndexOfCellX) + Math.abs(indexOfCellOnClickY - befpreviousIndexOfCellY)) <= unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].VALUABLEMOVE ){
685 unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].VALUABLEMOVE -= Math.abs(indexOfCellOnClickX - befpreviousIndexOfCellX) + Math.abs(indexOfCellOnClickY - befpreviousIndexOfCellY);
686 unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].move(indexOfCellOnClickX, indexOfCellOnClickY, befpreviousIndexOfCellX, befpreviousIndexOfCellY, unitMatrix, unitMatrix[indexOfCellOnClickX][indexOfCellOnClickY].isGround());
687 indexOfCellX = indexOfCellOnClickX;
688 indexOfCellY = indexOfCellOnClickY;
689
690 } else if ((Math.abs(indexOfCellOnClickX - befpreviousIndexOfCellX) + Math.abs(indexOfCellOnClickY - befpreviousIndexOfCellY)) <= unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].RANGE && !(unitMatrix[indexOfCellOnClickX][indexOfCellOnClickY].Owner.equals(unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].Owner)) && unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].canAttack) {
691 unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].canAttack = false;
692 unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].attack(indexOfCellOnClickX, indexOfCellOnClickY, befpreviousIndexOfCellX, befpreviousIndexOfCellY, unitMatrix, unitMatrix[indexOfCellOnClickX][indexOfCellOnClickY].isGround(), canvas);
693 Toast toast = Toast.makeText(context,
694 "Attacked", Toast.LENGTH_SHORT);
695 toast.show();
696
697 }
698
699 }
700 }
701
702
703 befpreviousIndexOfCellX = previousIndexOfCellX;
704 befpreviousIndexOfCellY = previousIndexOfCellY;
705 previousIndexOfCellY = indexOfCellY;
706 previousIndexOfCellX = indexOfCellX;
707
708 return false;
709 }
710
711}
712
713
714
715
716
717
718
719
720
721
722
723
724package com.example.gwynbleidd.verstkagame;
725
726import android.content.Intent;
727import android.database.Cursor;
728import android.database.sqlite.SQLiteDatabase;
729import android.graphics.Bitmap;
730import android.graphics.BitmapFactory;
731import android.graphics.Point;
732import android.os.Bundle;
733import android.support.v7.app.AppCompatActivity;
734import android.view.Display;
735import android.view.View;
736import android.widget.Button;
737
738import com.example.gwynbleidd.verstkagame.UnitClasses.Humans.Archer;
739import com.example.gwynbleidd.verstkagame.UnitClasses.Unit;
740
741/**
742 * Created by Gwynbleidd on 12.02.2018.
743 */
744
745public class LoadGame extends AppCompatActivity {
746
747 Integer[][] HPMatrix = new Integer[7][9];
748 Integer[][] VALUABLEMOVEMatrix = new Integer[7][9];
749 Boolean[][] OWNERMatrix = new Boolean[7][9];
750 Boolean[][] canAttackMatrix = new Boolean[7][9];
751 String[][] nameMatrix = new String[7][9];
752
753
754 @Override
755 protected void onCreate(Bundle savedInstanceState) {
756 super.onCreate(savedInstanceState);
757 setContentView(R.layout.load_screen);
758 getSupportActionBar().hide();
759
760 Display display = getWindowManager().getDefaultDisplay();
761 Point size = new Point();
762 display.getSize(size);
763 int width = size.x;
764 int height = size.y;
765
766 for (int i = 0; i < 7; i++) {
767 for (int j = 0; j < 9; j++) {
768 this.HPMatrix[i][j] = 1;
769 this.VALUABLEMOVEMatrix[i][j] = 0;
770 this.OWNERMatrix[i][j] = false;
771 this.canAttackMatrix[i][j] = false;
772 this.nameMatrix[i][j] = "";
773 }
774 }
775
776 SQLiteDatabase myDB = openOrCreateDatabase("save1.db", MODE_PRIVATE, null);
777 Cursor myCursor = myDB.rawQuery("select name, indexX, indexY, HP, canAttack, VALUABLEMOVE, OWNER from save1", null);
778
779 while(myCursor.moveToNext()) {
780 String name = myCursor.getString(0);
781 Integer indexX = myCursor.getInt(1);
782 Integer indexY = myCursor.getInt(2);
783 Integer HP = myCursor.getInt(3);
784 boolean canAttack = (myCursor.getInt(4) == 1);
785 Integer VALUABLEMOVE = myCursor.getInt(5);
786 boolean OWNER = (myCursor.getInt(6) == 1);
787
788 nameMatrix[indexX][indexY] = name;
789 HPMatrix[indexX][indexY] = HP;
790 canAttackMatrix[indexX][indexY] = canAttack;
791 VALUABLEMOVEMatrix[indexX][indexY] = VALUABLEMOVE;
792 OWNERMatrix[indexX][indexY] = OWNER;
793
794 }
795
796 myCursor.close();
797 myDB.close();
798
799
800 Button btnLoad1 = (Button) findViewById(R.id.load1);
801 btnLoad1.setOnClickListener(new View.OnClickListener() {
802 @Override
803 public void onClick(View view) {
804 Intent intent = new Intent(getApplicationContext(), GameActivity.class);
805 intent.putExtra("HPMatrix", HPMatrix);
806 intent.putExtra("VALUABLEMOVEMatrix", VALUABLEMOVEMatrix);
807 intent.putExtra("canAttackMatrix", canAttackMatrix);
808 intent.putExtra("OWNERMatrix", OWNERMatrix);
809 intent.putExtra("nameMatrix", nameMatrix);
810 startActivity(intent);
811 }
812 });
813
814 }
815}
816
817
818
819
820
821
822
823
824
825
826
827
828
829<?xml version="1.0" encoding="utf-8"?>
830 <LinearLayout
831 xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
832 android:layout_height="match_parent"
833 android:orientation="vertical">
834 />
835 <Button
836 android:layout_width="wrap_content"
837 android:layout_height="wrap_content"
838 android:layout_gravity="center"
839 android:id="@+id/save1"
840 android:text="Save 1"/>
841 <Button
842 android:layout_width="wrap_content"
843 android:layout_height="wrap_content"
844 android:layout_gravity="center"
845 android:id="@+id/save2"
846 android:text="Save 2"/>
847 <Button
848 android:layout_width="wrap_content"
849 android:layout_height="wrap_content"
850 android:layout_gravity="center"
851 android:id="@+id/save3"
852 android:text="Save 3"/>
853 <Button
854 android:layout_width="wrap_content"
855 android:layout_height="wrap_content"
856 android:layout_gravity="center"
857 android:id="@+id/save4"
858 android:text="Save 4"/>
859 <Button
860 android:layout_width="wrap_content"
861 android:layout_height="wrap_content"
862 android:layout_gravity="center"
863 android:id="@+id/save5"
864 android:text="Save 5"/>
865 <Button
866 android:layout_width="wrap_content"
867 android:layout_height="wrap_content"
868 android:layout_gravity="center"
869 android:id="@+id/save6"
870 android:text="Save 6"/>
871
872 <Button
873 android:layout_width="wrap_content"
874 android:layout_height="wrap_content"
875 android:layout_gravity="center_horizontal"
876 android:layout_marginTop="230dp"
877 android:id="@+id/btnBack"
878 android:text="назад"
879 />
880 </LinearLayout>