· 8 years ago · May 28, 2018, 09:20 AM
1package com.example.gwynbleidd.verstkagame;
2
3import android.content.Intent;
4import android.graphics.Point;
5import android.os.Bundle;
6import android.support.v7.app.AppCompatActivity;
7import android.view.Display;
8
9
10public class NewGame extends AppCompatActivity {
11
12 AlignmentField alignmentField;
13 Bundle mBundle;
14
15
16 @Override
17 protected void onCreate(Bundle savedInstanceState) {
18 super.onCreate(savedInstanceState);
19 getSupportActionBar().hide();
20 Display display = getWindowManager().getDefaultDisplay();
21 Point size = new Point();
22 display.getSize(size);
23 int width = size.x;
24 int height = size.y;
25 alignmentField = new AlignmentField(getApplicationContext(), width, height, this);
26 setContentView(alignmentField);
27
28
29 mBundle = new Bundle();
30
31
32 }
33
34
35 @Override
36 protected void onStop() {
37 if (alignmentField.btnStartGame.isPressed) {
38 Intent intent = new Intent(getApplicationContext(), GameActivity.class);
39 mBundle.putSerializable("UnitMatrixPlayerOne", alignmentField.matrix1);
40 mBundle.putSerializable("UnitMatrixPlayerTwo", alignmentField.matrix2);
41 intent.putExtras(mBundle);
42 alignmentField.resources = null;
43 alignmentField.context = null;
44 alignmentField.activity = null;
45 alignmentField.board1.recycle();
46 alignmentField.groundImage.recycle();
47 alignmentField.groundCellImage.recycle();
48 alignmentField.btnClassNonePressed.recycle();
49 alignmentField.btnClassPressed.recycle();
50 alignmentField.redImage.recycle();
51 alignmentField.blueImage.recycle();
52 alignmentField.archImage.recycle();
53 for (int i = 0; i < 6; i++) {
54 for (int j = 0; j < 8; j++) {
55 alignmentField.unitMatrix1[i][j].cellImage.recycle();
56 if (alignmentField.unitMatrix1[i][j].cellImageModel1 != null)
57 alignmentField.unitMatrix1[i][j].cellImageModel1.recycle();
58 if (alignmentField.unitMatrix1[i][j].cellImageModel2 != null)
59 alignmentField.unitMatrix1[i][j].cellImageModel2.recycle();
60 if (alignmentField.unitMatrix1[i][j].cellImageModel3 != null)
61 alignmentField.unitMatrix1[i][j].cellImageModel3.recycle();
62 if (alignmentField.unitMatrix1[i][j].outImage != null)
63 alignmentField.unitMatrix1[i][j].outImage.recycle();
64
65 alignmentField.unitMatrix2[i][j].cellImage.recycle();
66 if (alignmentField.unitMatrix2[i][j].cellImageModel1 != null)
67 alignmentField.unitMatrix2[i][j].cellImageModel1.recycle();
68 if (alignmentField.unitMatrix2[i][j].cellImageModel2 != null)
69 alignmentField.unitMatrix2[i][j].cellImageModel2.recycle();
70 if (alignmentField.unitMatrix2[i][j].cellImageModel3 != null)
71 alignmentField.unitMatrix2[i][j].cellImageModel3.recycle();
72 if (alignmentField.unitMatrix2[i][j].outImage != null)
73 alignmentField.unitMatrix2[i][j].outImage.recycle();
74 }
75 }
76
77 alignmentField = null;
78 startActivity(intent);
79 }
80 super.onStop();
81
82 }
83
84 @Override
85 protected void onDestroy() {
86 super.onDestroy();
87 }
88
89
90
91
92}
93
94
95
96
97
98
99
100
101
102
103
104package com.example.gwynbleidd.verstkagame;
105
106import android.content.Context;
107import android.content.res.Resources;
108import android.graphics.Bitmap;
109import android.graphics.BitmapFactory;
110import android.graphics.Canvas;
111import android.graphics.Color;
112import android.graphics.Paint;
113import android.support.v7.app.AppCompatActivity;
114import android.view.MotionEvent;
115import android.view.View;
116import android.widget.ImageView;
117import android.widget.Toast;
118
119import com.example.gwynbleidd.verstkagame.UnitClasses.Humans.Archer;
120import com.example.gwynbleidd.verstkagame.UnitClasses.Humans.Mage;
121import com.example.gwynbleidd.verstkagame.UnitClasses.Unit;
122
123
124public class AlignmentField extends View {
125
126 Integer playerOneGold = 1000;
127 Integer playerTwoGold = 1000;
128
129
130 Resources resources;
131 Context context;
132 Integer cellWidth = 1;
133 Integer cellHeight = 1;
134 Integer indexOfCellY = 0;
135 Integer indexOfCellX = 0;
136 Integer deltaScreenX = 0;
137 Integer deltaScreenY = 0;
138 Integer indexOfCellOnClickY;
139 Integer indexOfCellOnClickX;
140 Integer width;
141 Integer height;
142 Integer[][] matrix1 = new Integer[7][9];
143 Integer[][] matrix2 = new Integer[7][9];
144 Unit[][] unitMatrix1 = new Unit[7][9];
145 Unit[][] unitMatrix2 = new Unit[7][9];
146 Bitmap redImage;
147 Bitmap blueImage;
148 Bitmap archImage;
149 Bitmap btnClassNonePressed ;
150 Bitmap btnClassPressed;
151 //Bitmap btnRaceNonePressed;
152 //Bitmap btnRacePressed;
153 ImageView imageView;
154 OurButton btnDeleteUnit;
155 OurButton btnNextPlayer;
156 OurButton btnStartGame;
157 OurButton btnPreviousPlayer;
158 OurButton btnMan;
159 OurButton btnDwarf;
160 OurButton btnElf;
161 OurButton btnFrog;
162 OurButton btnRanged;
163 OurButton btnSword;
164 OurButton btnHorse;
165 OurButton btnMage;
166
167 public long startTime1 = 0;
168 public long elapsedTime1 = 0;
169 Float dx;
170 Float dy;
171 Boolean fieldIsPressed = false;
172 Boolean flag = false;
173
174 NewGame activity;
175
176
177
178 Integer playerNumber;
179
180
181
182 public Integer getCellWidth() {
183 return cellWidth;
184 }
185
186 public void setCellWidth(Integer cellWidth) {
187 this.cellWidth = cellWidth;
188 }
189
190 public Integer getCellHeight() {
191 return cellHeight;
192 }
193
194 public void setCellHeight(Integer cellHeight) {
195 this.cellHeight = cellHeight;
196 }
197
198 public Integer getIndexOfCellY() {
199 return indexOfCellY;
200 }
201
202 public void setIndexOfCellY(Integer indexOfCellY) {
203 this.indexOfCellY = indexOfCellY;
204 }
205
206 public Integer getIndexOfCellX() {
207 return indexOfCellX;
208 }
209
210 public void setIndexOfCellX(Integer indexOfCellX) {
211 this.indexOfCellX = indexOfCellX;
212 }
213
214 public Integer getDeltaScreenX() {
215 return deltaScreenX;
216 }
217
218 public void setDeltaScreenX(Integer deltaScreenX) {
219 this.deltaScreenX = deltaScreenX;
220 }
221
222 public Integer getDeltaScreenY() {
223 return deltaScreenY;
224 }
225
226 public void setDeltaScreenY(Integer deltaScreenY) {
227 this.deltaScreenY = deltaScreenY;
228 }
229
230 Paint p;
231 Unit replaceableUnit;
232 Unit replaceableUnit2;
233
234 Timer t;
235
236 Bitmap groundImage;
237
238 Bitmap groundCellImage;
239
240
241 Unit unitSwordMan;
242 Unit unitSwordFrog;
243 Unit unitSwordElf;
244 Unit unitSwordDwarf;
245
246 Unit unitRangedMan;
247 Unit unitRangedFrog;
248 Unit unitRangedElf;
249 Unit unitRangedDwarf;
250
251 Unit unitMageMan;
252 Unit unitMageFrog;
253 Unit unitMageElf;
254 Unit unitMageDwarf;
255
256 Unit unitHorseMan;
257 Unit unitHorseFrog;
258 Unit unitHorseElf;
259 Unit unitHorseDwarf;
260
261 Bitmap board1;
262
263
264 Paint pRed;
265 Paint pBlack;
266 Paint pYellow;
267 Paint pText;
268 Paint pPlace;
269 Paint pGreen;
270
271
272 public AlignmentField(Context context, Integer width, Integer height, NewGame activity) {
273 super(context);
274 this.context = context;
275 this.cellWidth = width / 8;
276 this.cellHeight = height / 12;
277 this.deltaScreenX = width / 8;
278 this.deltaScreenY = height / 6;
279 this.width = width;
280 this.height = height;
281 this.startTime1 = System.currentTimeMillis();
282 this.activity = activity;
283 this.playerNumber = 1;
284 this.resources = getResources();
285 //btnRaceNonePressed = BitmapFactory.decodeResource(resources, R.drawable.boxoff);
286 // btnRacePressed = BitmapFactory.decodeResource(resources, R.drawable.boxon);
287 btnClassNonePressed = BitmapFactory.decodeResource(resources, R.drawable.boxoff);
288 btnClassPressed = BitmapFactory.decodeResource(resources, R.drawable.boxon);
289 btnNextPlayer = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth,cellHeight* 2);
290 btnPreviousPlayer = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth,cellHeight * 2);
291 btnStartGame = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth,cellHeight * 2);
292 redImage = BitmapFactory.decodeResource(resources, R.drawable.mage);
293 blueImage = BitmapFactory.decodeResource(resources, R.drawable.swordman);
294 archImage = BitmapFactory.decodeResource(resources, R.drawable.archer);
295
296
297 groundImage = BitmapFactory.decodeResource(resources, R.drawable.ground_test);
298 groundCellImage = Bitmap.createScaledBitmap(groundImage, cellWidth, cellHeight, false);
299 // groundOutImage = Bitmap.createScaledBitmap(groundImage, cellWidth * 2, cellHeight * 2, false);
300
301 // redUnit = new Unit("red", getResources(), cellWidth, cellHeight, redImage, false,10,10,0,2,1);
302 // blueUnit = new Unit("blue", getResources(), cellWidth, cellHeight, blueImage,false,20,5,0,2,1);
303 // archer = new Archer("blue", getResources(), cellWidth, cellHeight, archImage,false,10,10,0,2,1);
304 replaceableUnit = new Unit("SwordMan", resources, cellWidth, cellHeight, blueImage, groundCellImage, false, 20, 5, 0, 2 ,1,100);
305 // unitSwordMan = new Unit("blue", resources, cellWidth, cellHeight, blueImage, groundCellImage,false,20,5,0,2,1, 100);
306 // unitMageMan = new Mage("red", resources, cellWidth, cellHeight, redImage,groundCellImage, false,10,10,0,2,1);
307 // unitRangedMan = new Archer("blue", resources, cellWidth, cellHeight, groundCellImage,false,10,10,0,2,1);
308
309
310
311
312
313 btnMan = new OurButton(btnClassNonePressed, btnClassPressed, resources, cellWidth* 2, cellHeight/ 2);
314 btnDwarf = new OurButton(btnClassNonePressed, btnClassPressed, resources, cellWidth* 2, cellHeight/ 2);
315 btnElf = new OurButton(btnClassNonePressed, btnClassPressed, resources, cellWidth* 2, cellHeight/ 2);
316 btnFrog = new OurButton(btnClassNonePressed, btnClassPressed, resources, cellWidth* 2, cellHeight/ 2);
317
318 btnMage = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth* 2,cellHeight/ 2);
319 btnSword = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth* 2,cellHeight/ 2);
320 btnHorse = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth* 2,cellHeight/ 2);
321 btnRanged = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth* 2,cellHeight/ 2);
322
323
324 btnDeleteUnit = new OurButton(btnClassNonePressed, btnClassPressed, resources, cellWidth * 2, cellHeight / 2);
325
326 btnMan.isPressed = true;
327 btnSword.isPressed = true;
328
329
330
331 for (int i = 0; i < 7; i++) {
332 for (int j = 0; j < 9; j++) {
333 this.matrix1[i][j] = 0;
334 this.matrix2[i][j] = 0;
335 this.unitMatrix1[i][j] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
336 this.unitMatrix2[i][j] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
337
338 }
339 }
340
341
342
343 p = new Paint();
344 t = new Timer(this, Integer.MAX_VALUE, 100);
345 t.start();
346
347 board1 = BitmapFactory.decodeResource(resources, R.drawable.board1);
348 board1 = Bitmap.createScaledBitmap(board1, width, height, false);
349
350
351
352
353
354 pBlack = new Paint();
355 pBlack.setColor(Color.BLACK);
356 pBlack.setStrokeWidth(width/150);
357 pYellow = new Paint();
358 pYellow.setColor(Color.YELLOW);
359 pYellow.setStrokeWidth(width/150);
360 pYellow.setStyle(Paint.Style.STROKE);
361 pGreen = new Paint();
362 pGreen.setColor(Color.GREEN);
363 pGreen.setStrokeWidth(width/150);
364 pGreen.setStyle(Paint.Style.STROKE);
365 pRed = new Paint();
366 pRed.setColor(Color.RED);
367 pRed.setStrokeWidth(width/150);
368 pRed.setStyle(Paint.Style.STROKE);
369
370
371 pText = new Paint();
372 pText.setTextSize(cellHeight / 2.1f);
373
374
375
376 pPlace = new Paint();
377 pPlace.setStyle(Paint.Style.STROKE);
378 pPlace.setColor(Color.BLUE);
379 pPlace.setAlpha(127);
380
381 }
382
383
384
385 @Override
386 protected void onDraw(Canvas canvas) {
387
388 canvas.drawBitmap(board1, 0f, 0f, p);
389
390 for (int i = 0; i < 9; i++) {
391 canvas.drawLine(deltaScreenX, i*cellHeight+deltaScreenY, canvas.getWidth() - deltaScreenX, i*cellHeight + deltaScreenY, pBlack);
392 }
393
394 for (int i = 0; i < 7; i++) {
395 canvas.drawLine(i*cellWidth + deltaScreenX, deltaScreenY, i*cellWidth + deltaScreenX, canvas.getHeight() - deltaScreenY, pBlack);
396 }
397
398
399
400 if (playerNumber == 1) {
401 for (int i = 0; i < 6; i++) {
402 for (int j = 0; j < 8; j++) {
403 unitMatrix1[i][j].drawInCell(canvas, deltaScreenX + cellWidth * i * 1f, deltaScreenY + cellHeight * j * 1f);
404 }
405
406 }
407 } else {
408 for (int i = 0; i < 6; i++) {
409 for (int j = 0; j < 8; j++) {
410 unitMatrix2[i][j].drawInCell(canvas, deltaScreenX + cellWidth * i * 1f, deltaScreenY + cellHeight * j * 1f);
411 }
412
413 }
414 }
415
416
417 replaceableUnit.drawOutCell(canvas,cellWidth * 6,0);
418 if (!replaceableUnit.isGround())
419 canvas.drawText(replaceableUnit.COST.toString(), cellWidth * 6.5f, cellHeight * 2f, pText);
420
421
422 btnMan.draw(canvas, deltaScreenX * 1f, 0f);
423 canvas.drawText("Man", deltaScreenX * 1.4f, deltaScreenY * 0.2f, pText);
424 btnDwarf.draw(canvas, deltaScreenX * 1f, deltaScreenY * 0.25f);
425 canvas.drawText("Dwarf", deltaScreenX * 1.4f, deltaScreenY * 0.45f, pText);
426 btnElf.draw(canvas, deltaScreenX * 1f, deltaScreenY * 0.5f);
427 canvas.drawText("Elf", deltaScreenX * 1.4f, deltaScreenY * 0.7f, pText);
428 btnFrog.draw(canvas, deltaScreenX * 1f, deltaScreenY * 0.75f);
429 canvas.drawText("Orc", deltaScreenX * 1.4f, deltaScreenY * 0.95f, pText);
430 btnSword.draw(canvas, deltaScreenX + cellWidth * 3f, 0f);
431 canvas.drawText("Sword", deltaScreenX + cellWidth * 3.25f, deltaScreenY * 0.2f, pText);
432 btnMage.draw(canvas, deltaScreenX + cellWidth * 3f, deltaScreenY * 0.25f);
433 canvas.drawText("Mage", deltaScreenX + cellWidth * 3.25f, deltaScreenY * 0.45f, pText);
434 btnHorse.draw(canvas, deltaScreenX + cellWidth * 3f, deltaScreenY * 0.5f);
435 canvas.drawText("Horse", deltaScreenX + cellWidth * 3.25f, deltaScreenY * 0.7f, pText);
436 btnRanged.draw(canvas, deltaScreenX + cellWidth * 3f, deltaScreenY * 0.75f);
437 canvas.drawText("Ranged", deltaScreenX + cellWidth * 3.25f, deltaScreenY * 0.95f, pText);
438
439
440 if (playerNumber == 1) {
441 btnNextPlayer.draw(canvas, deltaScreenX + cellWidth * 6f, deltaScreenY + cellHeight * 3f);
442 canvas.drawText(playerOneGold.toString(),cellWidth * 5f, deltaScreenY + cellHeight * 9f, pText);
443 canvas.drawText("Amount of gold:", cellWidth * 1f, deltaScreenY + cellHeight * 9f, pText);
444 }
445 else {
446 btnStartGame.draw(canvas, deltaScreenX + cellWidth * 6f, deltaScreenY + cellHeight * 3f);
447 btnPreviousPlayer.draw(canvas, 0f, deltaScreenY + cellHeight * 3f);
448 canvas.drawText(playerTwoGold.toString(), cellWidth * 5f, deltaScreenY + cellHeight * 9f, pText);
449 canvas.drawText("Amount of gold:", cellWidth * 1f, deltaScreenY + cellHeight * 9f, pText);
450 }
451
452
453
454
455
456 if (playerNumber == 1) {
457 if (fieldIsPressed) {
458 for (int i = 0; i < 6; i++) {
459 for (int j = 0; j < 8; j++) {
460 if (!unitMatrix1[indexOfCellX][indexOfCellY].isGround())
461 if (unitMatrix1[i][j].isGround()) {
462 if (Math.abs(indexOfCellX - i) + Math.abs(indexOfCellY - j) <= unitMatrix1[indexOfCellX][indexOfCellY].MOVE) {
463 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pGreen);
464 }
465 } else {
466 if (Math.abs(indexOfCellX - i) + Math.abs(indexOfCellY - j) <= unitMatrix1[indexOfCellX][indexOfCellY].RANGE) {
467 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pRed);
468 }
469 }
470 }
471 }
472
473
474 if (!unitMatrix1[indexOfCellX][indexOfCellY].isGround())
475 unitMatrix1[indexOfCellX][indexOfCellY].drawOutCell(canvas, +cellWidth * 6, height - deltaScreenY);
476 canvas.drawRect(indexOfCellX * cellWidth + deltaScreenX, indexOfCellY * cellHeight + deltaScreenY, (indexOfCellX + 1) * cellWidth + deltaScreenX, (indexOfCellY + 1) * cellHeight + deltaScreenY, pYellow);
477
478 }
479 } else {
480 if (fieldIsPressed) {
481 for (int i = 0; i < 6; i++) {
482 for (int j = 0; j < 8; j++) {
483 if (!unitMatrix2[indexOfCellX][indexOfCellY].isGround())
484 if (unitMatrix2[i][j].isGround()) {
485 if (Math.abs(indexOfCellX - i) + Math.abs(indexOfCellY - j) <= unitMatrix2[indexOfCellX][indexOfCellY].MOVE) {
486 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pGreen);
487 }
488 } else {
489 if (Math.abs(indexOfCellX - i) + Math.abs(indexOfCellY - j) <= unitMatrix2[indexOfCellX][indexOfCellY].RANGE) {
490 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pRed);
491 }
492 }
493 }
494 }
495
496 if (!unitMatrix2[indexOfCellX][indexOfCellY].isGround())
497 unitMatrix2[indexOfCellX][indexOfCellY].drawOutCell(canvas, +cellWidth * 6, height - deltaScreenY);
498 canvas.drawRect(indexOfCellX * cellWidth + deltaScreenX, indexOfCellY * cellHeight + deltaScreenY, (indexOfCellX + 1) * cellWidth + deltaScreenX, (indexOfCellY + 1) * cellHeight + deltaScreenY, pYellow);
499
500 }
501 }
502
503
504 if (replaceableUnit2 != null)
505 replaceableUnit2.drawInCell(canvas, dx, dy);
506
507
508
509 if (playerNumber == 1) {
510 if (!unitMatrix1[indexOfCellX][indexOfCellY].isGround()) {
511 btnDeleteUnit.draw(canvas, deltaScreenX + cellWidth * 2f, deltaScreenY + cellHeight * 9.25f);
512 }
513 } else {
514 if (!unitMatrix2[indexOfCellX][indexOfCellY].isGround()) {
515 btnDeleteUnit.draw(canvas, deltaScreenX + cellWidth * 2f, deltaScreenY + cellHeight * 9.25f);
516 }
517 }
518
519
520 if (playerNumber == 1) {
521 for (int i = 0; i < 6; i++) {
522 for (int j = 5; j < 8; j++) {
523 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pPlace);
524 }
525 }
526 } else {
527 for (int i = 0; i < 6; i++) {
528 for (int j = 0; j < 3; j++) {
529 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pPlace);
530 }
531 }
532 }
533
534 }
535
536
537
538
539
540 @Override
541 public boolean onTouchEvent(MotionEvent event) {
542
543
544 //При нажатии на кнопку удалениÑ, юнит заменÑетÑÑ Ð½Ð° землю
545 if (playerNumber == 1) {
546 if (!unitMatrix1[indexOfCellX][indexOfCellY].isGround()) {
547 if ((event.getX() >= deltaScreenX + cellWidth * 2f) && (event.getX() <= deltaScreenX + cellWidth * 4f) && (event.getY() >= deltaScreenY + cellHeight * 9.25f) && (event.getY() <= deltaScreenY + cellHeight * 9.75f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
548 matrix1[indexOfCellX][indexOfCellY] = 0;
549 playerOneGold += unitMatrix1[indexOfCellX][indexOfCellY].COST;
550 unitMatrix1[indexOfCellX][indexOfCellY] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
551 }
552 }
553 } else {
554 if (!unitMatrix2[indexOfCellX][indexOfCellY].isGround()) {
555 if ((event.getX() >= deltaScreenX + cellWidth * 2f) && (event.getX() <= deltaScreenX + cellWidth * 4f) && (event.getY() >= deltaScreenY + cellHeight * 9.25f) && (event.getY() <= deltaScreenY + cellHeight * 9.75f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
556 matrix2[indexOfCellX][indexOfCellY] = 0;
557 playerTwoGold += unitMatrix2[indexOfCellX][indexOfCellY].COST;
558 unitMatrix2[indexOfCellX][indexOfCellY] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
559 }
560 }
561 }
562
563
564
565 if ((event.getX() >= deltaScreenX) && (event.getX() <= cellWidth * 6 + deltaScreenX) && (event.getY() >= deltaScreenY) && (event.getY() <= cellHeight * 8 + deltaScreenY)) {
566 for (int i = 1; i < 9; i++) {
567 if (event.getY() > cellHeight * (i - 1) + deltaScreenY && event.getY() < cellHeight * i + deltaScreenY) {
568 this.indexOfCellY = i - 1;
569 }
570 }
571
572 for (int i = 1; i < 7; i++) {
573 if (event.getX() > cellWidth * (i - 1) + deltaScreenX && event.getX() < cellWidth * i + deltaScreenX) {
574 this.indexOfCellX = i - 1;
575 }
576 }
577 fieldIsPressed = true;
578 } else {
579 fieldIsPressed = false;
580 indexOfCellX = 6;
581 indexOfCellY = 8;
582 }
583
584
585
586
587 //Кнопки, отвечающие за раÑу юнита (тут ничего менÑть не надо)
588 if ((event.getX() >= deltaScreenX * 1f) && (event.getX() <= deltaScreenX + cellWidth * 2f) && (event.getY() >= 0f) && (event.getY() <= deltaScreenY * 0.25f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
589 btnMan.isPressed = true;
590 btnDwarf.isPressed = false;
591 btnElf.isPressed = false;
592 btnFrog.isPressed = false;
593 } else if ((event.getX() >= deltaScreenX * 1f) && (event.getX() <= deltaScreenX + cellWidth * 2f) && (event.getY() >= deltaScreenY * 0.25f) && (event.getY() <= deltaScreenY * 0.5f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
594 btnMan.isPressed = false;
595 btnDwarf.isPressed = true;
596 btnElf.isPressed = false;
597 btnFrog.isPressed = false;
598 } else if ((event.getX() >= deltaScreenX * 1f) && (event.getX() <= deltaScreenX + cellWidth * 2f) && (event.getY() >= deltaScreenY * 0.5f) && (event.getY() <= deltaScreenY * 0.75f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
599 btnMan.isPressed = false;
600 btnDwarf.isPressed = false;
601 btnElf.isPressed = true;
602 btnFrog.isPressed = false;
603 } else if ((event.getX() >= deltaScreenX * 1f) && (event.getX() <= deltaScreenX + cellWidth * 2f) && (event.getY() >= deltaScreenY * 0.75f) && (event.getY() <= deltaScreenY * 1f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
604 btnMan.isPressed = false;
605 btnDwarf.isPressed = false;
606 btnElf.isPressed = false;
607 btnFrog.isPressed = true;
608 }
609
610
611 //Кнопки, отвечающие за клаÑÑ ÑŽÐ½Ð¸Ñ‚Ð° (тут ничего менÑть не надо)
612 if ((event.getX() >= deltaScreenX + cellWidth * 3f) && (event.getX() <= deltaScreenX + cellWidth * 5f) && (event.getY() >= 0f) && (event.getY() <= deltaScreenY * 0.25f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
613 btnSword.isPressed = true;
614 btnMage.isPressed = false;
615 btnHorse.isPressed = false;
616 btnRanged.isPressed = false;
617 } else if ((event.getX() >= deltaScreenX + cellWidth * 3f) && (event.getX() <= deltaScreenX + cellWidth * 5f) && (event.getY() >= deltaScreenY * 0.25f) && (event.getY() <= deltaScreenY * 0.5f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
618 btnSword.isPressed = false;
619 btnMage.isPressed = true;
620 btnHorse.isPressed = false;
621 btnRanged.isPressed = false;
622 } else if ((event.getX() >= deltaScreenX + cellWidth * 3f) && (event.getX() <= deltaScreenX + cellWidth * 5f) && (event.getY() >= deltaScreenY * 0.5f) && (event.getY() <= deltaScreenY * 0.75f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
623 btnSword.isPressed = false;
624 btnMage.isPressed = false;
625 btnHorse.isPressed = true;
626 btnRanged.isPressed = false;
627 } else if ((event.getX() >= deltaScreenX + cellWidth * 3f) && (event.getX() <= deltaScreenX + cellWidth * 5f) && (event.getY() >= deltaScreenY * 0.75f) && (event.getY() <= deltaScreenY * 1f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
628 btnSword.isPressed = false;
629 btnMage.isPressed = false;
630 btnHorse.isPressed = false;
631 btnRanged.isPressed = true;
632 }
633
634
635 // Сюда надо вÑтавлÑть юнитов в завиÑимоÑти от того, ÐºÐ°ÐºÐ°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ ÐºÐ½Ð¾Ð¿Ð¾Ðº нажата
636 if ((btnMan.isPressed) && (btnSword.isPressed) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
637 replaceableUnit = new Unit("blue", resources, cellWidth, cellHeight, blueImage, groundCellImage,false,20,5,0,2,1, 100);
638 } else if ((btnMan.isPressed) && (btnRanged.isPressed) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
639 replaceableUnit = new Archer("blue", resources, cellWidth, cellHeight, groundCellImage,false,10,10,0,2,1);
640 } else if ((btnMan.isPressed) && (btnMage.isPressed) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
641 replaceableUnit = new Mage("red", resources, cellWidth, cellHeight, redImage,groundCellImage, false,10,10,0,2,1);
642 }
643
644
645
646 //ЧаÑть кода, Ð¾Ñ‚Ð²ÐµÑ‡Ð°ÑŽÑ‰Ð°Ñ Ð·Ð° Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ ÑŽÐ½Ð¸Ñ‚Ð° на поле
647 if (playerNumber == 1) {
648 if ((((event.getY() < deltaScreenY) && (event.getX() > deltaScreenX + cellWidth * 5)) || (flag)) && (playerOneGold - replaceableUnit.COST >= 0)) {
649 replaceableUnit2 = replaceableUnit;
650 dx = event.getX();
651 dy = event.getY();
652 flag = true;
653 if (event.getAction() == MotionEvent.ACTION_UP) {
654 flag = false;
655 if ((fieldIsPressed) && (indexOfCellY >= 5)) {
656 unitMatrix1[indexOfCellX][indexOfCellY] = replaceableUnit2;
657 playerOneGold -= replaceableUnit.COST;
658
659 //Ð’ Ñтой чаÑти заполнÑетÑÑ Ð¼Ð°ÑÑив, который потом передаÑÑ‚ÑÑ Ð² BattleField, так что при добавлении новых юнитов, надо пропиÑывать Ñюда их заполнение в маÑÑив
660 if ((btnMan.isPressed) && (btnMage.isPressed))
661 matrix1[indexOfCellX][indexOfCellY] = 1;
662 else if ((btnMan.isPressed) && (btnSword.isPressed))
663 matrix1[indexOfCellX][indexOfCellY] = 2;
664 else if ((btnMan.isPressed) && (btnRanged.isPressed))
665 matrix1[indexOfCellX][indexOfCellY] = 3;
666 }
667 replaceableUnit2 = null;
668 }
669 }
670 } else {
671 if ((((event.getY() < deltaScreenY) && (event.getX() > deltaScreenX + cellWidth * 5)) || (flag)) && (playerTwoGold - replaceableUnit.COST >= 0)) {
672 replaceableUnit2 = replaceableUnit;
673 dx = event.getX();
674 dy = event.getY();
675 flag = true;
676 if (event.getAction() == MotionEvent.ACTION_UP) {
677 flag = false;
678 if ((fieldIsPressed) && (indexOfCellY <= 2) && (playerTwoGold >= 0)) {
679 unitMatrix2[indexOfCellX][indexOfCellY] = replaceableUnit2;
680 playerTwoGold -= replaceableUnit.COST;
681
682 //Ð’ Ñтой чаÑти заполнÑетÑÑ Ð¼Ð°ÑÑив, который потом передаÑÑ‚ÑÑ Ð² BattleField, так что при добавлении новых юнитов, надо пропиÑывать Ñюда их заполнение в маÑÑив
683 if ((btnMan.isPressed) && (btnMage.isPressed))
684 matrix2[indexOfCellX][indexOfCellY] = 1;
685 else if ((btnMan.isPressed) && (btnSword.isPressed))
686 matrix2[indexOfCellX][indexOfCellY] = 2;
687 else if ((btnMan.isPressed) && (btnRanged.isPressed))
688 matrix2[indexOfCellX][indexOfCellY] = 3;
689 }
690 replaceableUnit2 = null;
691 }
692 }
693 }
694
695
696
697
698
699
700
701
702 if ((event.getX() >= deltaScreenX + cellWidth * 6f) && (event.getX() <= deltaScreenX + cellWidth * 7f) && (event.getY() >= deltaScreenY + cellHeight * 3f) && (event.getY() <= deltaScreenY + cellHeight * 5f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
703
704
705 if (playerNumber == 1) {
706 btnNextPlayer.isPressed = true;
707 btnStartGame.isPressed = false;
708 btnPreviousPlayer.isPressed = false;
709 playerNumber = 2;
710 } else {
711 btnStartGame.isPressed = true;
712 activity.finish();
713 t.onFinish();
714 }
715
716 }
717
718 if ((event.getX() >= 0f) && (event.getX() <= deltaScreenX) && (event.getY() >= deltaScreenY + cellHeight * 3f) && (event.getY() <= deltaScreenY + cellHeight * 5f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
719
720
721 if (playerNumber == 1) {
722
723 } else {
724 btnPreviousPlayer.isPressed = true;
725 btnNextPlayer.isPressed = false;
726 playerNumber = 1;
727 }
728
729 }
730
731
732
733 return true;
734 }
735
736
737}
738
739
740
741
742
743
744
745
746
747
748
749
750package com.example.gwynbleidd.verstkagame;
751
752import android.content.Context;
753import android.content.res.Resources;
754import android.graphics.Bitmap;
755import android.graphics.BitmapFactory;
756import android.graphics.Canvas;
757import android.graphics.Color;
758import android.graphics.Paint;
759import android.support.v7.app.AppCompatActivity;
760import android.view.MotionEvent;
761import android.view.View;
762import android.widget.ImageView;
763import android.widget.Toast;
764
765import com.example.gwynbleidd.verstkagame.UnitClasses.Humans.Archer;
766import com.example.gwynbleidd.verstkagame.UnitClasses.Humans.Mage;
767import com.example.gwynbleidd.verstkagame.UnitClasses.Unit;
768
769
770public class AlignmentField extends View {
771
772 Integer playerOneGold = 1000;
773 Integer playerTwoGold = 1000;
774
775
776 Resources resources;
777 Context context;
778 Integer cellWidth = 1;
779 Integer cellHeight = 1;
780 Integer indexOfCellY = 0;
781 Integer indexOfCellX = 0;
782 Integer deltaScreenX = 0;
783 Integer deltaScreenY = 0;
784 Integer indexOfCellOnClickY;
785 Integer indexOfCellOnClickX;
786 Integer width;
787 Integer height;
788 Integer[][] matrix1 = new Integer[7][9];
789 Integer[][] matrix2 = new Integer[7][9];
790 Unit[][] unitMatrix1 = new Unit[7][9];
791 Unit[][] unitMatrix2 = new Unit[7][9];
792 Bitmap redImage;
793 Bitmap blueImage;
794 Bitmap archImage;
795 Bitmap btnClassNonePressed ;
796 Bitmap btnClassPressed;
797 //Bitmap btnRaceNonePressed;
798 //Bitmap btnRacePressed;
799 ImageView imageView;
800 OurButton btnDeleteUnit;
801 OurButton btnNextPlayer;
802 OurButton btnStartGame;
803 OurButton btnPreviousPlayer;
804 OurButton btnMan;
805 OurButton btnDwarf;
806 OurButton btnElf;
807 OurButton btnFrog;
808 OurButton btnRanged;
809 OurButton btnSword;
810 OurButton btnHorse;
811 OurButton btnMage;
812
813 public long startTime1 = 0;
814 public long elapsedTime1 = 0;
815 Float dx;
816 Float dy;
817 Boolean fieldIsPressed = false;
818 Boolean flag = false;
819
820 NewGame activity;
821
822
823
824 Integer playerNumber;
825
826
827
828 public Integer getCellWidth() {
829 return cellWidth;
830 }
831
832 public void setCellWidth(Integer cellWidth) {
833 this.cellWidth = cellWidth;
834 }
835
836 public Integer getCellHeight() {
837 return cellHeight;
838 }
839
840 public void setCellHeight(Integer cellHeight) {
841 this.cellHeight = cellHeight;
842 }
843
844 public Integer getIndexOfCellY() {
845 return indexOfCellY;
846 }
847
848 public void setIndexOfCellY(Integer indexOfCellY) {
849 this.indexOfCellY = indexOfCellY;
850 }
851
852 public Integer getIndexOfCellX() {
853 return indexOfCellX;
854 }
855
856 public void setIndexOfCellX(Integer indexOfCellX) {
857 this.indexOfCellX = indexOfCellX;
858 }
859
860 public Integer getDeltaScreenX() {
861 return deltaScreenX;
862 }
863
864 public void setDeltaScreenX(Integer deltaScreenX) {
865 this.deltaScreenX = deltaScreenX;
866 }
867
868 public Integer getDeltaScreenY() {
869 return deltaScreenY;
870 }
871
872 public void setDeltaScreenY(Integer deltaScreenY) {
873 this.deltaScreenY = deltaScreenY;
874 }
875
876 Paint p;
877 Unit replaceableUnit;
878 Unit replaceableUnit2;
879
880 Timer t;
881
882 Bitmap groundImage;
883
884 Bitmap groundCellImage;
885
886
887 Unit unitSwordMan;
888 Unit unitSwordFrog;
889 Unit unitSwordElf;
890 Unit unitSwordDwarf;
891
892 Unit unitRangedMan;
893 Unit unitRangedFrog;
894 Unit unitRangedElf;
895 Unit unitRangedDwarf;
896
897 Unit unitMageMan;
898 Unit unitMageFrog;
899 Unit unitMageElf;
900 Unit unitMageDwarf;
901
902 Unit unitHorseMan;
903 Unit unitHorseFrog;
904 Unit unitHorseElf;
905 Unit unitHorseDwarf;
906
907 Bitmap board1;
908
909
910 Paint pRed;
911 Paint pBlack;
912 Paint pYellow;
913 Paint pText;
914 Paint pPlace;
915 Paint pGreen;
916
917
918 public AlignmentField(Context context, Integer width, Integer height, NewGame activity) {
919 super(context);
920 this.context = context;
921 this.cellWidth = width / 8;
922 this.cellHeight = height / 12;
923 this.deltaScreenX = width / 8;
924 this.deltaScreenY = height / 6;
925 this.width = width;
926 this.height = height;
927 this.startTime1 = System.currentTimeMillis();
928 this.activity = activity;
929 this.playerNumber = 1;
930 this.resources = getResources();
931 //btnRaceNonePressed = BitmapFactory.decodeResource(resources, R.drawable.boxoff);
932 // btnRacePressed = BitmapFactory.decodeResource(resources, R.drawable.boxon);
933 btnClassNonePressed = BitmapFactory.decodeResource(resources, R.drawable.boxoff);
934 btnClassPressed = BitmapFactory.decodeResource(resources, R.drawable.boxon);
935 btnNextPlayer = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth,cellHeight* 2);
936 btnPreviousPlayer = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth,cellHeight * 2);
937 btnStartGame = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth,cellHeight * 2);
938 redImage = BitmapFactory.decodeResource(resources, R.drawable.mage);
939 blueImage = BitmapFactory.decodeResource(resources, R.drawable.swordman);
940 archImage = BitmapFactory.decodeResource(resources, R.drawable.archer);
941
942
943 groundImage = BitmapFactory.decodeResource(resources, R.drawable.ground_test);
944 groundCellImage = Bitmap.createScaledBitmap(groundImage, cellWidth, cellHeight, false);
945 // groundOutImage = Bitmap.createScaledBitmap(groundImage, cellWidth * 2, cellHeight * 2, false);
946
947 // redUnit = new Unit("red", getResources(), cellWidth, cellHeight, redImage, false,10,10,0,2,1);
948 // blueUnit = new Unit("blue", getResources(), cellWidth, cellHeight, blueImage,false,20,5,0,2,1);
949 // archer = new Archer("blue", getResources(), cellWidth, cellHeight, archImage,false,10,10,0,2,1);
950 replaceableUnit = new Unit("SwordMan", resources, cellWidth, cellHeight, blueImage, groundCellImage, false, 20, 5, 0, 2 ,1,100);
951 // unitSwordMan = new Unit("blue", resources, cellWidth, cellHeight, blueImage, groundCellImage,false,20,5,0,2,1, 100);
952 // unitMageMan = new Mage("red", resources, cellWidth, cellHeight, redImage,groundCellImage, false,10,10,0,2,1);
953 // unitRangedMan = new Archer("blue", resources, cellWidth, cellHeight, groundCellImage,false,10,10,0,2,1);
954
955
956
957
958
959 btnMan = new OurButton(btnClassNonePressed, btnClassPressed, resources, cellWidth* 2, cellHeight/ 2);
960 btnDwarf = new OurButton(btnClassNonePressed, btnClassPressed, resources, cellWidth* 2, cellHeight/ 2);
961 btnElf = new OurButton(btnClassNonePressed, btnClassPressed, resources, cellWidth* 2, cellHeight/ 2);
962 btnFrog = new OurButton(btnClassNonePressed, btnClassPressed, resources, cellWidth* 2, cellHeight/ 2);
963
964 btnMage = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth* 2,cellHeight/ 2);
965 btnSword = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth* 2,cellHeight/ 2);
966 btnHorse = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth* 2,cellHeight/ 2);
967 btnRanged = new OurButton(btnClassNonePressed, btnClassPressed ,resources,cellWidth* 2,cellHeight/ 2);
968
969
970 btnDeleteUnit = new OurButton(btnClassNonePressed, btnClassPressed, resources, cellWidth * 2, cellHeight / 2);
971
972 btnMan.isPressed = true;
973 btnSword.isPressed = true;
974
975
976
977 for (int i = 0; i < 7; i++) {
978 for (int j = 0; j < 9; j++) {
979 this.matrix1[i][j] = 0;
980 this.matrix2[i][j] = 0;
981 this.unitMatrix1[i][j] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
982 this.unitMatrix2[i][j] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
983
984 }
985 }
986
987
988
989 p = new Paint();
990 t = new Timer(this, Integer.MAX_VALUE, 100);
991 t.start();
992
993 board1 = BitmapFactory.decodeResource(resources, R.drawable.board1);
994 board1 = Bitmap.createScaledBitmap(board1, width, height, false);
995
996
997
998
999
1000 pBlack = new Paint();
1001 pBlack.setColor(Color.BLACK);
1002 pBlack.setStrokeWidth(width/150);
1003 pYellow = new Paint();
1004 pYellow.setColor(Color.YELLOW);
1005 pYellow.setStrokeWidth(width/150);
1006 pYellow.setStyle(Paint.Style.STROKE);
1007 pGreen = new Paint();
1008 pGreen.setColor(Color.GREEN);
1009 pGreen.setStrokeWidth(width/150);
1010 pGreen.setStyle(Paint.Style.STROKE);
1011 pRed = new Paint();
1012 pRed.setColor(Color.RED);
1013 pRed.setStrokeWidth(width/150);
1014 pRed.setStyle(Paint.Style.STROKE);
1015
1016
1017 pText = new Paint();
1018 pText.setTextSize(cellHeight / 2.1f);
1019
1020
1021
1022 pPlace = new Paint();
1023 pPlace.setStyle(Paint.Style.STROKE);
1024 pPlace.setColor(Color.BLUE);
1025 pPlace.setAlpha(127);
1026
1027 }
1028
1029
1030
1031 @Override
1032 protected void onDraw(Canvas canvas) {
1033
1034 canvas.drawBitmap(board1, 0f, 0f, p);
1035
1036 for (int i = 0; i < 9; i++) {
1037 canvas.drawLine(deltaScreenX, i*cellHeight+deltaScreenY, canvas.getWidth() - deltaScreenX, i*cellHeight + deltaScreenY, pBlack);
1038 }
1039
1040 for (int i = 0; i < 7; i++) {
1041 canvas.drawLine(i*cellWidth + deltaScreenX, deltaScreenY, i*cellWidth + deltaScreenX, canvas.getHeight() - deltaScreenY, pBlack);
1042 }
1043
1044
1045
1046 if (playerNumber == 1) {
1047 for (int i = 0; i < 6; i++) {
1048 for (int j = 0; j < 8; j++) {
1049 unitMatrix1[i][j].drawInCell(canvas, deltaScreenX + cellWidth * i * 1f, deltaScreenY + cellHeight * j * 1f);
1050 }
1051
1052 }
1053 } else {
1054 for (int i = 0; i < 6; i++) {
1055 for (int j = 0; j < 8; j++) {
1056 unitMatrix2[i][j].drawInCell(canvas, deltaScreenX + cellWidth * i * 1f, deltaScreenY + cellHeight * j * 1f);
1057 }
1058
1059 }
1060 }
1061
1062
1063 replaceableUnit.drawOutCell(canvas,cellWidth * 6,0);
1064 if (!replaceableUnit.isGround())
1065 canvas.drawText(replaceableUnit.COST.toString(), cellWidth * 6.5f, cellHeight * 2f, pText);
1066
1067
1068 btnMan.draw(canvas, deltaScreenX * 1f, 0f);
1069 canvas.drawText("Man", deltaScreenX * 1.4f, deltaScreenY * 0.2f, pText);
1070 btnDwarf.draw(canvas, deltaScreenX * 1f, deltaScreenY * 0.25f);
1071 canvas.drawText("Dwarf", deltaScreenX * 1.4f, deltaScreenY * 0.45f, pText);
1072 btnElf.draw(canvas, deltaScreenX * 1f, deltaScreenY * 0.5f);
1073 canvas.drawText("Elf", deltaScreenX * 1.4f, deltaScreenY * 0.7f, pText);
1074 btnFrog.draw(canvas, deltaScreenX * 1f, deltaScreenY * 0.75f);
1075 canvas.drawText("Orc", deltaScreenX * 1.4f, deltaScreenY * 0.95f, pText);
1076 btnSword.draw(canvas, deltaScreenX + cellWidth * 3f, 0f);
1077 canvas.drawText("Sword", deltaScreenX + cellWidth * 3.25f, deltaScreenY * 0.2f, pText);
1078 btnMage.draw(canvas, deltaScreenX + cellWidth * 3f, deltaScreenY * 0.25f);
1079 canvas.drawText("Mage", deltaScreenX + cellWidth * 3.25f, deltaScreenY * 0.45f, pText);
1080 btnHorse.draw(canvas, deltaScreenX + cellWidth * 3f, deltaScreenY * 0.5f);
1081 canvas.drawText("Horse", deltaScreenX + cellWidth * 3.25f, deltaScreenY * 0.7f, pText);
1082 btnRanged.draw(canvas, deltaScreenX + cellWidth * 3f, deltaScreenY * 0.75f);
1083 canvas.drawText("Ranged", deltaScreenX + cellWidth * 3.25f, deltaScreenY * 0.95f, pText);
1084
1085
1086 if (playerNumber == 1) {
1087 btnNextPlayer.draw(canvas, deltaScreenX + cellWidth * 6f, deltaScreenY + cellHeight * 3f);
1088 canvas.drawText(playerOneGold.toString(),cellWidth * 5f, deltaScreenY + cellHeight * 9f, pText);
1089 canvas.drawText("Amount of gold:", cellWidth * 1f, deltaScreenY + cellHeight * 9f, pText);
1090 }
1091 else {
1092 btnStartGame.draw(canvas, deltaScreenX + cellWidth * 6f, deltaScreenY + cellHeight * 3f);
1093 btnPreviousPlayer.draw(canvas, 0f, deltaScreenY + cellHeight * 3f);
1094 canvas.drawText(playerTwoGold.toString(), cellWidth * 5f, deltaScreenY + cellHeight * 9f, pText);
1095 canvas.drawText("Amount of gold:", cellWidth * 1f, deltaScreenY + cellHeight * 9f, pText);
1096 }
1097
1098
1099
1100
1101
1102 if (playerNumber == 1) {
1103 if (fieldIsPressed) {
1104 for (int i = 0; i < 6; i++) {
1105 for (int j = 0; j < 8; j++) {
1106 if (!unitMatrix1[indexOfCellX][indexOfCellY].isGround())
1107 if (unitMatrix1[i][j].isGround()) {
1108 if (Math.abs(indexOfCellX - i) + Math.abs(indexOfCellY - j) <= unitMatrix1[indexOfCellX][indexOfCellY].MOVE) {
1109 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pGreen);
1110 }
1111 } else {
1112 if (Math.abs(indexOfCellX - i) + Math.abs(indexOfCellY - j) <= unitMatrix1[indexOfCellX][indexOfCellY].RANGE) {
1113 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pRed);
1114 }
1115 }
1116 }
1117 }
1118
1119
1120 if (!unitMatrix1[indexOfCellX][indexOfCellY].isGround())
1121 unitMatrix1[indexOfCellX][indexOfCellY].drawOutCell(canvas, +cellWidth * 6, height - deltaScreenY);
1122 canvas.drawRect(indexOfCellX * cellWidth + deltaScreenX, indexOfCellY * cellHeight + deltaScreenY, (indexOfCellX + 1) * cellWidth + deltaScreenX, (indexOfCellY + 1) * cellHeight + deltaScreenY, pYellow);
1123
1124 }
1125 } else {
1126 if (fieldIsPressed) {
1127 for (int i = 0; i < 6; i++) {
1128 for (int j = 0; j < 8; j++) {
1129 if (!unitMatrix2[indexOfCellX][indexOfCellY].isGround())
1130 if (unitMatrix2[i][j].isGround()) {
1131 if (Math.abs(indexOfCellX - i) + Math.abs(indexOfCellY - j) <= unitMatrix2[indexOfCellX][indexOfCellY].MOVE) {
1132 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pGreen);
1133 }
1134 } else {
1135 if (Math.abs(indexOfCellX - i) + Math.abs(indexOfCellY - j) <= unitMatrix2[indexOfCellX][indexOfCellY].RANGE) {
1136 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pRed);
1137 }
1138 }
1139 }
1140 }
1141
1142 if (!unitMatrix2[indexOfCellX][indexOfCellY].isGround())
1143 unitMatrix2[indexOfCellX][indexOfCellY].drawOutCell(canvas, +cellWidth * 6, height - deltaScreenY);
1144 canvas.drawRect(indexOfCellX * cellWidth + deltaScreenX, indexOfCellY * cellHeight + deltaScreenY, (indexOfCellX + 1) * cellWidth + deltaScreenX, (indexOfCellY + 1) * cellHeight + deltaScreenY, pYellow);
1145
1146 }
1147 }
1148
1149
1150 if (replaceableUnit2 != null)
1151 replaceableUnit2.drawInCell(canvas, dx, dy);
1152
1153
1154
1155 if (playerNumber == 1) {
1156 if (!unitMatrix1[indexOfCellX][indexOfCellY].isGround()) {
1157 btnDeleteUnit.draw(canvas, deltaScreenX + cellWidth * 2f, deltaScreenY + cellHeight * 9.25f);
1158 }
1159 } else {
1160 if (!unitMatrix2[indexOfCellX][indexOfCellY].isGround()) {
1161 btnDeleteUnit.draw(canvas, deltaScreenX + cellWidth * 2f, deltaScreenY + cellHeight * 9.25f);
1162 }
1163 }
1164
1165
1166 if (playerNumber == 1) {
1167 for (int i = 0; i < 6; i++) {
1168 for (int j = 5; j < 8; j++) {
1169 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pPlace);
1170 }
1171 }
1172 } else {
1173 for (int i = 0; i < 6; i++) {
1174 for (int j = 0; j < 3; j++) {
1175 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pPlace);
1176 }
1177 }
1178 }
1179
1180 }
1181
1182
1183
1184
1185
1186 @Override
1187 public boolean onTouchEvent(MotionEvent event) {
1188
1189
1190 //При нажатии на кнопку удалениÑ, юнит заменÑетÑÑ Ð½Ð° землю
1191 if (playerNumber == 1) {
1192 if (!unitMatrix1[indexOfCellX][indexOfCellY].isGround()) {
1193 if ((event.getX() >= deltaScreenX + cellWidth * 2f) && (event.getX() <= deltaScreenX + cellWidth * 4f) && (event.getY() >= deltaScreenY + cellHeight * 9.25f) && (event.getY() <= deltaScreenY + cellHeight * 9.75f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1194 matrix1[indexOfCellX][indexOfCellY] = 0;
1195 playerOneGold += unitMatrix1[indexOfCellX][indexOfCellY].COST;
1196 unitMatrix1[indexOfCellX][indexOfCellY] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
1197 }
1198 }
1199 } else {
1200 if (!unitMatrix2[indexOfCellX][indexOfCellY].isGround()) {
1201 if ((event.getX() >= deltaScreenX + cellWidth * 2f) && (event.getX() <= deltaScreenX + cellWidth * 4f) && (event.getY() >= deltaScreenY + cellHeight * 9.25f) && (event.getY() <= deltaScreenY + cellHeight * 9.75f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1202 matrix2[indexOfCellX][indexOfCellY] = 0;
1203 playerTwoGold += unitMatrix2[indexOfCellX][indexOfCellY].COST;
1204 unitMatrix2[indexOfCellX][indexOfCellY] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
1205 }
1206 }
1207 }
1208
1209
1210
1211 if ((event.getX() >= deltaScreenX) && (event.getX() <= cellWidth * 6 + deltaScreenX) && (event.getY() >= deltaScreenY) && (event.getY() <= cellHeight * 8 + deltaScreenY)) {
1212 for (int i = 1; i < 9; i++) {
1213 if (event.getY() > cellHeight * (i - 1) + deltaScreenY && event.getY() < cellHeight * i + deltaScreenY) {
1214 this.indexOfCellY = i - 1;
1215 }
1216 }
1217
1218 for (int i = 1; i < 7; i++) {
1219 if (event.getX() > cellWidth * (i - 1) + deltaScreenX && event.getX() < cellWidth * i + deltaScreenX) {
1220 this.indexOfCellX = i - 1;
1221 }
1222 }
1223 fieldIsPressed = true;
1224 } else {
1225 fieldIsPressed = false;
1226 indexOfCellX = 6;
1227 indexOfCellY = 8;
1228 }
1229
1230
1231
1232
1233 //Кнопки, отвечающие за раÑу юнита (тут ничего менÑть не надо)
1234 if ((event.getX() >= deltaScreenX * 1f) && (event.getX() <= deltaScreenX + cellWidth * 2f) && (event.getY() >= 0f) && (event.getY() <= deltaScreenY * 0.25f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1235 btnMan.isPressed = true;
1236 btnDwarf.isPressed = false;
1237 btnElf.isPressed = false;
1238 btnFrog.isPressed = false;
1239 } else if ((event.getX() >= deltaScreenX * 1f) && (event.getX() <= deltaScreenX + cellWidth * 2f) && (event.getY() >= deltaScreenY * 0.25f) && (event.getY() <= deltaScreenY * 0.5f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1240 btnMan.isPressed = false;
1241 btnDwarf.isPressed = true;
1242 btnElf.isPressed = false;
1243 btnFrog.isPressed = false;
1244 } else if ((event.getX() >= deltaScreenX * 1f) && (event.getX() <= deltaScreenX + cellWidth * 2f) && (event.getY() >= deltaScreenY * 0.5f) && (event.getY() <= deltaScreenY * 0.75f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1245 btnMan.isPressed = false;
1246 btnDwarf.isPressed = false;
1247 btnElf.isPressed = true;
1248 btnFrog.isPressed = false;
1249 } else if ((event.getX() >= deltaScreenX * 1f) && (event.getX() <= deltaScreenX + cellWidth * 2f) && (event.getY() >= deltaScreenY * 0.75f) && (event.getY() <= deltaScreenY * 1f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1250 btnMan.isPressed = false;
1251 btnDwarf.isPressed = false;
1252 btnElf.isPressed = false;
1253 btnFrog.isPressed = true;
1254 }
1255
1256
1257 //Кнопки, отвечающие за клаÑÑ ÑŽÐ½Ð¸Ñ‚Ð° (тут ничего менÑть не надо)
1258 if ((event.getX() >= deltaScreenX + cellWidth * 3f) && (event.getX() <= deltaScreenX + cellWidth * 5f) && (event.getY() >= 0f) && (event.getY() <= deltaScreenY * 0.25f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1259 btnSword.isPressed = true;
1260 btnMage.isPressed = false;
1261 btnHorse.isPressed = false;
1262 btnRanged.isPressed = false;
1263 } else if ((event.getX() >= deltaScreenX + cellWidth * 3f) && (event.getX() <= deltaScreenX + cellWidth * 5f) && (event.getY() >= deltaScreenY * 0.25f) && (event.getY() <= deltaScreenY * 0.5f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1264 btnSword.isPressed = false;
1265 btnMage.isPressed = true;
1266 btnHorse.isPressed = false;
1267 btnRanged.isPressed = false;
1268 } else if ((event.getX() >= deltaScreenX + cellWidth * 3f) && (event.getX() <= deltaScreenX + cellWidth * 5f) && (event.getY() >= deltaScreenY * 0.5f) && (event.getY() <= deltaScreenY * 0.75f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1269 btnSword.isPressed = false;
1270 btnMage.isPressed = false;
1271 btnHorse.isPressed = true;
1272 btnRanged.isPressed = false;
1273 } else if ((event.getX() >= deltaScreenX + cellWidth * 3f) && (event.getX() <= deltaScreenX + cellWidth * 5f) && (event.getY() >= deltaScreenY * 0.75f) && (event.getY() <= deltaScreenY * 1f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1274 btnSword.isPressed = false;
1275 btnMage.isPressed = false;
1276 btnHorse.isPressed = false;
1277 btnRanged.isPressed = true;
1278 }
1279
1280
1281 // Сюда надо вÑтавлÑть юнитов в завиÑимоÑти от того, ÐºÐ°ÐºÐ°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ ÐºÐ½Ð¾Ð¿Ð¾Ðº нажата
1282 if ((btnMan.isPressed) && (btnSword.isPressed) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1283 replaceableUnit = new Unit("blue", resources, cellWidth, cellHeight, blueImage, groundCellImage,false,20,5,0,2,1, 100);
1284 } else if ((btnMan.isPressed) && (btnRanged.isPressed) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1285 replaceableUnit = new Archer("blue", resources, cellWidth, cellHeight, groundCellImage,false,10,10,0,2,1);
1286 } else if ((btnMan.isPressed) && (btnMage.isPressed) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1287 replaceableUnit = new Mage("red", resources, cellWidth, cellHeight, redImage,groundCellImage, false,10,10,0,2,1);
1288 }
1289
1290
1291
1292 //ЧаÑть кода, Ð¾Ñ‚Ð²ÐµÑ‡Ð°ÑŽÑ‰Ð°Ñ Ð·Ð° Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ ÑŽÐ½Ð¸Ñ‚Ð° на поле
1293 if (playerNumber == 1) {
1294 if ((((event.getY() < deltaScreenY) && (event.getX() > deltaScreenX + cellWidth * 5)) || (flag)) && (playerOneGold - replaceableUnit.COST >= 0)) {
1295 replaceableUnit2 = replaceableUnit;
1296 dx = event.getX();
1297 dy = event.getY();
1298 flag = true;
1299 if (event.getAction() == MotionEvent.ACTION_UP) {
1300 flag = false;
1301 if ((fieldIsPressed) && (indexOfCellY >= 5)) {
1302 unitMatrix1[indexOfCellX][indexOfCellY] = replaceableUnit2;
1303 playerOneGold -= replaceableUnit.COST;
1304
1305 //Ð’ Ñтой чаÑти заполнÑетÑÑ Ð¼Ð°ÑÑив, который потом передаÑÑ‚ÑÑ Ð² BattleField, так что при добавлении новых юнитов, надо пропиÑывать Ñюда их заполнение в маÑÑив
1306 if ((btnMan.isPressed) && (btnMage.isPressed))
1307 matrix1[indexOfCellX][indexOfCellY] = 1;
1308 else if ((btnMan.isPressed) && (btnSword.isPressed))
1309 matrix1[indexOfCellX][indexOfCellY] = 2;
1310 else if ((btnMan.isPressed) && (btnRanged.isPressed))
1311 matrix1[indexOfCellX][indexOfCellY] = 3;
1312 }
1313 replaceableUnit2 = null;
1314 }
1315 }
1316 } else {
1317 if ((((event.getY() < deltaScreenY) && (event.getX() > deltaScreenX + cellWidth * 5)) || (flag)) && (playerTwoGold - replaceableUnit.COST >= 0)) {
1318 replaceableUnit2 = replaceableUnit;
1319 dx = event.getX();
1320 dy = event.getY();
1321 flag = true;
1322 if (event.getAction() == MotionEvent.ACTION_UP) {
1323 flag = false;
1324 if ((fieldIsPressed) && (indexOfCellY <= 2) && (playerTwoGold >= 0)) {
1325 unitMatrix2[indexOfCellX][indexOfCellY] = replaceableUnit2;
1326 playerTwoGold -= replaceableUnit.COST;
1327
1328 //Ð’ Ñтой чаÑти заполнÑетÑÑ Ð¼Ð°ÑÑив, который потом передаÑÑ‚ÑÑ Ð² BattleField, так что при добавлении новых юнитов, надо пропиÑывать Ñюда их заполнение в маÑÑив
1329 if ((btnMan.isPressed) && (btnMage.isPressed))
1330 matrix2[indexOfCellX][indexOfCellY] = 1;
1331 else if ((btnMan.isPressed) && (btnSword.isPressed))
1332 matrix2[indexOfCellX][indexOfCellY] = 2;
1333 else if ((btnMan.isPressed) && (btnRanged.isPressed))
1334 matrix2[indexOfCellX][indexOfCellY] = 3;
1335 }
1336 replaceableUnit2 = null;
1337 }
1338 }
1339 }
1340
1341
1342
1343
1344
1345
1346
1347
1348 if ((event.getX() >= deltaScreenX + cellWidth * 6f) && (event.getX() <= deltaScreenX + cellWidth * 7f) && (event.getY() >= deltaScreenY + cellHeight * 3f) && (event.getY() <= deltaScreenY + cellHeight * 5f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1349
1350
1351 if (playerNumber == 1) {
1352 btnNextPlayer.isPressed = true;
1353 btnStartGame.isPressed = false;
1354 btnPreviousPlayer.isPressed = false;
1355 playerNumber = 2;
1356 } else {
1357 btnStartGame.isPressed = true;
1358 activity.finish();
1359 t.onFinish();
1360 }
1361
1362 }
1363
1364 if ((event.getX() >= 0f) && (event.getX() <= deltaScreenX) && (event.getY() >= deltaScreenY + cellHeight * 3f) && (event.getY() <= deltaScreenY + cellHeight * 5f) && (event.getAction() == MotionEvent.ACTION_DOWN)) {
1365
1366
1367 if (playerNumber == 1) {
1368
1369 } else {
1370 btnPreviousPlayer.isPressed = true;
1371 btnNextPlayer.isPressed = false;
1372 playerNumber = 1;
1373 }
1374
1375 }
1376
1377
1378
1379 return true;
1380 }
1381
1382
1383}
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396package com.example.gwynbleidd.verstkagame.UnitClasses;
1397
1398
1399import android.content.res.Resources;
1400import android.graphics.Bitmap;
1401import android.graphics.BitmapFactory;
1402import android.graphics.Canvas;
1403import android.graphics.Paint;
1404
1405import com.example.gwynbleidd.verstkagame.R;
1406
1407public class Unit {
1408 public String name;
1409 public Bitmap cellImage;
1410 public Bitmap outImage;
1411 public boolean ground;
1412 public Integer HP;
1413 public Integer MAXHP;
1414 public Integer getHP() {
1415 return HP;
1416 }
1417
1418 public void setHP(Integer HP) {
1419 this.HP = HP;
1420 }
1421
1422 public Integer getDMG() {
1423 return DMG;
1424 }
1425
1426 public void setDMG(Integer DMG) {
1427 this.DMG = DMG;
1428 }
1429
1430 public Integer getSHIELD() {
1431 return SHIELD;
1432 }
1433
1434 public void setSHIELD(Integer SHIELD) {
1435 this.SHIELD = SHIELD;
1436 }
1437
1438 public Bitmap groundCellImage;
1439 public Integer DMG;
1440 public Integer SHIELD;
1441 public Integer MOVE;
1442 public Integer RANGE;
1443 public Resources resources;
1444 public Integer cellWidth;
1445 public Integer cellHeight;
1446 public Boolean Owner;
1447 public Integer VALUABLEMOVE;
1448 public Integer COST;
1449 public Boolean canAttack;
1450
1451 public Integer modelInCellChangeCounter = 0;
1452
1453 public Bitmap cellImageModel1;
1454 public Bitmap cellImageModel2;
1455 public Bitmap cellImageModel3;
1456
1457
1458 public Unit(String name, Resources resources, Integer cellWidth, Integer cellHeight, Bitmap image, Bitmap groundCellImage, boolean isground, Integer HP, Integer DMG, Integer SHIELD, Integer RANGE, Integer MOVE, Integer COST) {
1459 this.name = name;
1460 outImage = Bitmap.createScaledBitmap(image, cellWidth * 2, cellHeight * 2, false);
1461 cellImage = Bitmap.createScaledBitmap(image, cellWidth, cellHeight, false);
1462 this.ground = isground;
1463 this.MAXHP = HP;
1464 this.HP = MAXHP;
1465 this.DMG = DMG;
1466 this.MOVE = MOVE;
1467 this.SHIELD = SHIELD;
1468 this.RANGE = RANGE;
1469 this.resources = resources;
1470 this.cellHeight = cellHeight;
1471 this.cellWidth = cellWidth;
1472 this.VALUABLEMOVE = MOVE;
1473 this.COST = COST;
1474 this.groundCellImage = groundCellImage;
1475 this.canAttack = true;
1476
1477 }
1478
1479 public Unit(String name, Resources resources, Integer cellWidth, Integer cellHeight, Bitmap image, Bitmap image2, Bitmap image3, Bitmap groundCellImage, boolean isground, Integer HP, Integer DMG, Integer SHIELD, Integer RANGE, Integer MOVE, Integer COST) {
1480 this.name = name;
1481 cellImageModel1 = Bitmap.createScaledBitmap(image, cellWidth, cellHeight, false);
1482 outImage = Bitmap.createScaledBitmap(image, cellWidth * 2, cellHeight * 2, false);
1483 cellImage = cellImageModel1;
1484 this.ground = isground;
1485 this.MAXHP = HP;
1486 this.HP = MAXHP;
1487 this.DMG = DMG;
1488 this.MOVE = MOVE;
1489 this.SHIELD = SHIELD;
1490 this.RANGE = RANGE;
1491 this.resources = resources;
1492 this.cellHeight = cellHeight;
1493 this.cellWidth = cellWidth;
1494 this.VALUABLEMOVE = MOVE;
1495 this.COST = COST;
1496 this.groundCellImage = groundCellImage;
1497 this.canAttack = true;
1498 cellImageModel2 = Bitmap.createScaledBitmap(image2, cellWidth, cellHeight, false);
1499 cellImageModel3 = Bitmap.createScaledBitmap(image3, cellWidth, cellHeight, false);
1500
1501 }
1502
1503
1504 public Unit(String name, Resources resources, Integer cellWidth, Integer cellHeight, Bitmap cellImage, boolean isground) {
1505 this.name = name;
1506 // cellImage = Bitmap.createScaledBitmap(image, cellWidth, cellHeight, false);
1507 // outImage = Bitmap.createScaledBitmap(image, cellWidth * 2, cellHeight * 2, false);
1508 this.cellImage = cellImage;
1509 this.ground = true;
1510 }
1511
1512 public Resources getResources() {
1513 return resources;
1514 }
1515
1516 public void drawInCell(Canvas canvas, Float x, Float y) {
1517 Paint p = new Paint();
1518 canvas.drawBitmap(cellImage, x, y, p);
1519 if (modelInCellChangeCounter >= 12)
1520 modelInCellChangeCounter = 0;
1521
1522 }
1523
1524 public void drawOutCell(Canvas canvas, Integer x, Integer y) {
1525 Paint p = new Paint();
1526 canvas.drawBitmap(outImage, x, y, p);
1527
1528 }
1529
1530 public boolean isGround() {
1531 return ground;
1532 }
1533
1534 public void move(Integer indexOnClickX, Integer indexOnClickY, Integer indexX, Integer indexY, Unit[][] unitMatrix, boolean ground) {
1535 if (ground) {
1536 Unit tmp = unitMatrix[indexOnClickX][indexOnClickY];
1537 unitMatrix[indexOnClickX][indexOnClickY] = this;
1538 unitMatrix[indexX][indexY] = tmp;
1539
1540
1541 }
1542
1543 }
1544 private void die(){
1545
1546
1547
1548 }
1549
1550
1551
1552
1553
1554 public void attack(Integer indexOnClickX, Integer indexOnClickY, Integer indexX, Integer indexY, Unit[][] unitMatrix, boolean ground, Canvas canvas) {
1555
1556 Bitmap tmpImage = BitmapFactory.decodeResource(resources, R.drawable.ground);
1557 if (!ground) {
1558 unitMatrix[indexOnClickX][indexOnClickY].HP -= (this.DMG - this.SHIELD);
1559 this.HP -= (unitMatrix[indexOnClickX][indexOnClickY].DMG - unitMatrix[indexOnClickX][indexOnClickY].SHIELD);
1560
1561
1562 if (this.HP <= 0 && unitMatrix[indexOnClickX][indexOnClickY].HP > 0) {
1563 unitMatrix[indexX][indexY] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
1564 }
1565
1566 if (this.HP > 0 && unitMatrix[indexOnClickX][indexOnClickY].HP <= 0) {
1567
1568
1569 unitMatrix[indexOnClickX][indexOnClickY] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
1570 this.move(indexOnClickX,indexOnClickY, indexX, indexY,unitMatrix,unitMatrix[indexOnClickX][indexOnClickY].isGround());
1571 }
1572
1573 if (this.HP <= 0 && unitMatrix[indexOnClickX][indexOnClickY].HP <= 0) {
1574 unitMatrix[indexOnClickX][indexOnClickY] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
1575 unitMatrix[indexX][indexY] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage,true);
1576 this.cellImage = Bitmap.createScaledBitmap(tmpImage, cellWidth, cellHeight, false);
1577 }
1578
1579
1580 }
1581
1582
1583 }
1584
1585
1586}
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602package com.example.gwynbleidd.verstkagame;
1603
1604
1605import android.app.Dialog;
1606import android.content.Context;
1607import android.content.res.Resources;
1608import android.graphics.Bitmap;
1609import android.graphics.BitmapFactory;
1610import android.graphics.Canvas;
1611import android.graphics.Color;
1612import android.graphics.Paint;
1613import android.view.MotionEvent;
1614import android.view.View;
1615import android.widget.ImageView;
1616import android.widget.Toast;
1617
1618import com.example.gwynbleidd.verstkagame.UnitClasses.Humans.Archer;
1619import com.example.gwynbleidd.verstkagame.UnitClasses.Humans.Mage;
1620import com.example.gwynbleidd.verstkagame.UnitClasses.Unit;
1621
1622
1623public class BattleField extends View {
1624 Resources resources;
1625 Context context;
1626 Integer cellWidth = 1;
1627 Integer cellHeight = 1;
1628 Integer indexOfCellY = 8;
1629 Integer indexOfCellX = 6;
1630 Integer deltaScreenX = 0;
1631 Integer deltaScreenY = 0;
1632 Integer indexOfCellOnClickY;
1633 Integer indexOfCellOnClickX;
1634 Integer width;
1635 Integer height;
1636 Integer previousIndexOfCellY = 8;
1637 Integer previousIndexOfCellX = 6;
1638 Integer befpreviousIndexOfCellX = 6;
1639 Integer befpreviousIndexOfCellY = 8;
1640 Integer[][] matrix = new Integer[7][9];
1641 Unit[][] unitMatrix = new Unit[7][9];
1642 Bitmap frame;
1643 Bitmap board1;
1644 Bitmap redImage;
1645 Bitmap blueImage;
1646 //Bitmap archImage;
1647 // Bitmap arch2Image;
1648 Bitmap red2Image;
1649 Bitmap armor;
1650 Bitmap turn;
1651 Bitmap turn2;
1652 Bitmap iconattack;
1653 Bitmap btnMenuImage;
1654 ImageView imageView;
1655 OurButton btnTurn;
1656 OurButton btnMenu;
1657 Boolean TurnOfSide;
1658 Canvas canvas;
1659 public long startTime1 = 0;
1660 public long elapsedTime1 = 0;
1661 MotionEvent previousEvent;
1662 Boolean DoubleClickCheck;
1663 Integer Unitx;
1664 Integer UnitY;
1665 Boolean DrawPermissed = false;
1666 Boolean UnitChosen = false;
1667
1668
1669
1670 Bitmap groundImage;
1671
1672 Bitmap blue2Image;
1673 Bitmap groundCellImage;
1674
1675
1676 public Integer getCellWidth() {
1677 return cellWidth;
1678 }
1679 public void setCellWidth(Integer cellWidth) {
1680 this.cellWidth = cellWidth;
1681 }
1682 public Integer getCellHeight() {
1683 return cellHeight;
1684 }
1685 public void setCellHeight(Integer cellHeight) {
1686 this.cellHeight = cellHeight;
1687 }
1688 public Integer getIndexOfCellY() {
1689 return indexOfCellY;
1690 }
1691 public void setIndexOfCellY(Integer indexOfCellY) {
1692 this.indexOfCellY = indexOfCellY;
1693 }
1694 public Integer getIndexOfCellX() {
1695 return indexOfCellX;
1696 }
1697 public void setIndexOfCellX(Integer indexOfCellX) {
1698 this.indexOfCellX = indexOfCellX;
1699 }
1700 public Integer getDeltaScreenX() {
1701 return deltaScreenX;
1702 }
1703 public void setDeltaScreenX(Integer deltaScreenX) {
1704 this.deltaScreenX = deltaScreenX;
1705 }
1706 public Integer getDeltaScreenY() {
1707 return deltaScreenY;
1708 }
1709 public void setDeltaScreenY(Integer deltaScreenY) {
1710 this.deltaScreenY = deltaScreenY;
1711 }
1712
1713 Paint p;
1714 Unit redUnit;
1715 Unit blueUnit;
1716 Archer archer;
1717 Paint pBlack;
1718 Paint pGreen;
1719 Paint pYellow;
1720 Paint pText;
1721 Paint pHealthBar;
1722 Paint pHealthBarBounds;
1723 Paint pRed;
1724
1725 Dialog menu;
1726
1727
1728 public BattleField(Context context, Integer width, Integer height, Integer[][] matrix1, Integer[][] matrix2, String[][] nameMatrix, Integer[][] HPMatrix, Boolean[][] canAttackMatrix, Boolean[][] OWNERmatrix, Integer[][] VALUABLEMOVEMatrix, Dialog menu) {
1729 super(context);
1730 this.context = context;
1731 this.menu = menu;
1732 this.cellWidth = width / 8;
1733 this.cellHeight = height / 12;
1734 this.deltaScreenX = width / 8;
1735 this.deltaScreenY = height / 6;
1736 this.width = width;
1737 this.height = height;
1738 this.resources = getResources();
1739 this.startTime1 = System.currentTimeMillis();
1740 turn = BitmapFactory.decodeResource(resources, R.drawable.turn);
1741 turn2 = BitmapFactory.decodeResource(resources, R.drawable.turn2);
1742 btnTurn = new OurButton(turn, turn2, resources, cellWidth * 2, cellHeight / 2);
1743 board1 = BitmapFactory.decodeResource(resources, R.drawable.board1);
1744
1745
1746 btnMenuImage = BitmapFactory.decodeResource(resources, R.drawable.gear);
1747
1748 btnMenu = new OurButton(btnMenuImage, btnMenuImage, resources , width / 17, height / 33);
1749
1750
1751 frame = BitmapFactory.decodeResource(resources, R.drawable.cutramka);
1752 frame = Bitmap.createScaledBitmap(frame, cellWidth, cellHeight, false);
1753 redImage = BitmapFactory.decodeResource(resources, R.drawable.mage);
1754 blueImage = BitmapFactory.decodeResource(resources, R.drawable.swordman);
1755 //archImage = BitmapFactory.decodeResource(resources, R.drawable.archer);
1756 blue2Image = BitmapFactory.decodeResource(resources, R.drawable.swordman2);
1757 //arch2Image = BitmapFactory.decodeResource(resources, R.drawable.archer2);
1758
1759
1760
1761 groundImage = BitmapFactory.decodeResource(resources, R.drawable.ground_test);
1762
1763 groundCellImage = Bitmap.createScaledBitmap(groundImage, cellWidth, cellHeight, false);
1764
1765
1766 red2Image = BitmapFactory.decodeResource(resources, R.drawable.mage2);
1767
1768
1769 armor = BitmapFactory.decodeResource(resources, R.drawable.armor);
1770 iconattack = BitmapFactory.decodeResource(resources, R.drawable.iconattack);
1771 // redUnit = new Unit("red", resources, cellWidth, cellHeight, redImage, groundCellImage, false, 10, 10, 0, 2, 1, 100);
1772 // blueUnit = new Unit("blue", resources, cellWidth, cellHeight, blueImage, groundCellImage, false, 20, 5, 0, 2, 1, 100);
1773 // archer = new Archer("blue", resources, cellWidth, cellHeight, groundCellImage, false, 10, 10, 0, 2, 1);
1774 DoubleClickCheck = false;
1775 TurnOfSide = true;
1776
1777
1778
1779
1780 /* for (int i = 0; i < 6; i++) {
1781
1782 this.matrix[i][0] = 1;
1783 this.unitMatrix[i][0] = new Archer("blarcher", getResources(),cellWidth, cellHeight, archImage, false,10,5,0,2,1);
1784
1785 }
1786 for (int i = 0; i < 6; i++) {
1787
1788 this.matrix[i][1] = 1;
1789 this.unitMatrix[i][1] = new Unit("blue", getResources(),cellWidth, cellHeight, blueImage, false,25,5,0,1,2);
1790
1791 }
1792 for (int i = 0; i < 6; i++) {
1793
1794 this.matrix[i][6] = 1;
1795 this.unitMatrix[i][6] = new Unit("red", getResources(),cellWidth, cellHeight, redImage, false,15,10,0,1,2);
1796
1797 }
1798 for (int i = 0; i < 6; i++) {
1799
1800 this.matrix[i][7] = 1;
1801 this.unitMatrix[i][7] = new Archer("rarcher", getResources(),cellWidth, cellHeight, archImage, false,10,5,0,2,1);
1802
1803 } */
1804
1805 if (VALUABLEMOVEMatrix == null || nameMatrix == null || OWNERmatrix == null || HPMatrix == null || canAttackMatrix == null) {
1806
1807 //РаÑÑтановка второго игрока
1808 for (int i = 0; i < 7; i++) {
1809 for (int j = 0; j < 4; j++) {
1810 if (matrix2[i][j] == 0) {
1811 this.unitMatrix[i][j] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage, true);
1812 } else if (matrix2[i][j] == 1) {
1813 this.unitMatrix[i][j] = new Mage("Mage", resources, cellWidth, cellHeight, red2Image, groundCellImage, false, 15, 10, 0, 2, 2);
1814 this.unitMatrix[i][j].Owner = false;
1815 } else if (matrix2[i][j] == 2) {
1816 this.unitMatrix[i][j] = new Unit("Swordman", resources, cellWidth, cellHeight, blue2Image, groundCellImage, false, 25, 5, 0, 1, 2, 100);
1817 this.unitMatrix[i][j].Owner = false;
1818 } else if (matrix2[i][j] == 3) {
1819 this.unitMatrix[i][j] = new Archer("Archer", resources, cellWidth, cellHeight, groundCellImage, false, 25, 5, 0, 2, 2);
1820 this.unitMatrix[i][j].Owner = false;
1821 }
1822 }
1823 }
1824
1825 //РаÑÑтановка первого игрока
1826 for (int i = 0; i < 7; i++) {
1827 for (int j = 4; j < 9; j++) {
1828 if (matrix1[i][j] == 0) {
1829 this.unitMatrix[i][j] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage, true);
1830 } else if (matrix1[i][j] == 1) {
1831 this.unitMatrix[i][j] = new Mage("Mage", resources, cellWidth, cellHeight, redImage, groundCellImage, false, 15, 10, 0, 2, 2);
1832 this.unitMatrix[i][j].Owner = true;
1833 } else if (matrix1[i][j] == 2) {
1834 this.unitMatrix[i][j] = new Unit("Swordman", resources, cellWidth, cellHeight, blueImage, groundCellImage, false, 25, 5, 0, 1, 2, 100);
1835 this.unitMatrix[i][j].Owner = true;
1836 } else if (matrix1[i][j] == 3) {
1837 this.unitMatrix[i][j] = new Archer("Archer", resources, cellWidth, cellHeight, groundCellImage, false, 25, 5, 0, 2, 2);
1838 this.unitMatrix[i][j].Owner = true;
1839 }
1840 }
1841 }
1842
1843 } else {
1844
1845 for (int i = 0; i < 7; i++) {
1846 for (int j = 0; j < 9; j++) {
1847 if (nameMatrix[i][j].equals("Archer")) {
1848 if (OWNERmatrix[i][j])
1849 this.unitMatrix[i][j] = new Archer("Archer", resources, cellWidth, cellHeight, groundCellImage, false, 25, 5, 0, 2, 2);
1850 else
1851 this.unitMatrix[i][j] = new Archer("Archer", resources, cellWidth, cellHeight, groundCellImage, false, 25, 5, 0, 2, 2);
1852 this.unitMatrix[i][j].HP = HPMatrix[i][j];
1853 this.unitMatrix[i][j].canAttack = canAttackMatrix[i][j];
1854 this.unitMatrix[i][j].Owner = OWNERmatrix[i][j];
1855 this.unitMatrix[i][j].VALUABLEMOVE = VALUABLEMOVEMatrix[i][j];
1856 } else if (nameMatrix[i][j].equals("Swordman")) {
1857 if (OWNERmatrix[i][j])
1858 this.unitMatrix[i][j] = new Unit("Swordman", resources, cellWidth, cellHeight, blueImage, groundCellImage, false, 25, 5, 0, 1, 2, 100);
1859 else
1860 this.unitMatrix[i][j] = new Unit("Swordman", resources, cellWidth, cellHeight, blue2Image, groundCellImage, false, 25, 5, 0, 1, 2, 100);
1861 this.unitMatrix[i][j].HP = HPMatrix[i][j];
1862 this.unitMatrix[i][j].canAttack = canAttackMatrix[i][j];
1863 this.unitMatrix[i][j].Owner = OWNERmatrix[i][j];
1864 this.unitMatrix[i][j].VALUABLEMOVE = VALUABLEMOVEMatrix[i][j];
1865 } else if (nameMatrix[i][j].equals("Mage")) {
1866 if (OWNERmatrix[i][j])
1867 this.unitMatrix[i][j] = new Mage("Mage", resources, cellWidth, cellHeight, redImage, groundCellImage, false, 15, 10, 0, 2, 2);
1868 else
1869 this.unitMatrix[i][j] = new Mage("Mage", resources, cellWidth, cellHeight, red2Image, groundCellImage, false, 15, 10, 0, 2, 2);
1870 this.unitMatrix[i][j].HP = HPMatrix[i][j];
1871 this.unitMatrix[i][j].canAttack = canAttackMatrix[i][j];
1872 this.unitMatrix[i][j].Owner = OWNERmatrix[i][j];
1873 this.unitMatrix[i][j].VALUABLEMOVE = VALUABLEMOVEMatrix[i][j];
1874 } else
1875 this.unitMatrix[i][j] = new Unit("ground", resources, cellWidth, cellHeight, groundCellImage, true);
1876 }
1877 }
1878
1879 }
1880
1881
1882 p = new Paint();
1883 Timer t = new Timer(this, Integer.MAX_VALUE, 100);
1884 t.start();
1885
1886
1887
1888
1889
1890 pBlack = new Paint();
1891 pBlack.setColor(Color.BLACK);
1892 pBlack.setStrokeWidth(width / 150);
1893 pYellow = new Paint();
1894 pYellow.setColor(Color.YELLOW);
1895 pYellow.setStrokeWidth(width / 150);
1896 pYellow.setStyle(Paint.Style.STROKE);
1897 pGreen = new Paint();
1898 pGreen.setColor(Color.GREEN);
1899 pGreen.setStrokeWidth(width / 150);
1900 pGreen.setStyle(Paint.Style.STROKE);
1901 pRed = new Paint();
1902 pRed.setColor(Color.RED);
1903 pRed.setStrokeWidth(width / 150);
1904 pRed.setStyle(Paint.Style.STROKE);
1905 pHealthBarBounds = new Paint();
1906 pHealthBarBounds.setColor(Color.BLACK);
1907 pHealthBarBounds.setStyle(Paint.Style.STROKE);
1908 pHealthBarBounds.setStrokeWidth(width / 170);
1909 pHealthBar = new Paint();
1910 pHealthBar.setColor(Color.RED);
1911 pHealthBar.setStyle(Paint.Style.FILL);
1912 pHealthBar.setStrokeWidth(width / 200);
1913 pText = new Paint();
1914 pText.setTextSize(cellHeight * 0.3f);
1915
1916 board1 = Bitmap.createScaledBitmap(board1, width, height, false);
1917 armor = Bitmap.createScaledBitmap(armor, cellWidth * 2 / 3, cellHeight * 2 / 3, false);
1918 iconattack = Bitmap.createScaledBitmap(iconattack, cellWidth * 2 / 3, cellHeight / 3, false);
1919
1920
1921 }
1922
1923
1924 @Override
1925 protected void onDraw(Canvas canvas) {
1926 canvas.drawBitmap(board1, 0f, 0f, p);
1927 btnMenu.draw(canvas, width * 16 / 17f, 0f);
1928 this.canvas = canvas;
1929 for (int i = 0; i < 9; i++) {
1930 canvas.drawLine(deltaScreenX, i * cellHeight + deltaScreenY, canvas.getWidth() - deltaScreenX, i * cellHeight + deltaScreenY, pBlack);
1931 }
1932
1933 for (int i = 0; i < 7; i++) {
1934 canvas.drawLine(i * cellWidth + deltaScreenX, deltaScreenY, i * cellWidth + deltaScreenX, canvas.getHeight() - deltaScreenY, pBlack);
1935 }
1936
1937
1938 for (int i = 0; i < 6; i++) {
1939 for (int j = 0; j < 8; j++) {
1940 unitMatrix[i][j].drawInCell(canvas, deltaScreenX + cellWidth * i * 1f, deltaScreenY + cellHeight * j * 1f);
1941 /* if (!unitMatrix[i][j].isGround()){
1942 if(!unitMatrix[i][j].Owner){
1943 canvas.drawBitmap(frame,deltaScreenX + cellWidth*i * 1f, deltaScreenY + cellHeight*j * 1f,p);
1944 }
1945 }*/
1946 }
1947
1948 }
1949
1950
1951
1952
1953 if (!unitMatrix[indexOfCellX][indexOfCellY].isGround()) {
1954 unitMatrix[indexOfCellX][indexOfCellY].drawOutCell(canvas, +cellWidth * 6, height - deltaScreenY);
1955 canvas.drawRect(cellWidth * 4.25f, cellHeight * 10.1f, cellWidth * 5.75f, cellHeight * 10.4f, pHealthBarBounds);
1956 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);
1957 canvas.drawText("Health Points : ", cellWidth * 1.5f, cellHeight * 10.35f, pText);
1958 canvas.drawBitmap(armor, cellWidth * 4.6f, cellHeight * 10.65f, p);
1959 canvas.drawBitmap(iconattack, cellWidth * 4.6f, cellHeight * 11.6f, p);
1960 canvas.drawText(unitMatrix[indexOfCellX][indexOfCellY].SHIELD.toString(), cellWidth * 4.85f, cellHeight * 11.1f, pText);
1961 canvas.drawText(unitMatrix[indexOfCellX][indexOfCellY].DMG.toString(), cellWidth * 4.85f, cellHeight * 11.85f, pText);
1962 if (unitMatrix[indexOfCellX][indexOfCellY].HP / 10 > 0)
1963 canvas.drawText(unitMatrix[indexOfCellX][indexOfCellY].HP.toString() + " / " + unitMatrix[indexOfCellX][indexOfCellY].MAXHP.toString(), cellWidth * 4.5f, cellHeight * 10.35f, pText);
1964 else
1965 canvas.drawText(" " + unitMatrix[indexOfCellX][indexOfCellY].HP.toString() + " / " + unitMatrix[indexOfCellX][indexOfCellY].MAXHP.toString(), cellWidth * 4.5f, cellHeight * 10.35f, pText);
1966
1967
1968
1969 }
1970
1971 btnTurn.draw(canvas, cellWidth * 3f, cellHeight * 1f);
1972
1973
1974 if (DrawPermissed) {
1975 if (TurnOfSide.equals(unitMatrix[indexOfCellX][indexOfCellY].Owner)) {
1976
1977
1978 for (int i = 0; i < 6; i++) {
1979 for (int j = 0; j < 8; j++) {
1980 if (!unitMatrix[indexOfCellX][indexOfCellY].isGround())
1981 if (unitMatrix[i][j].isGround()) {
1982 if (Math.abs(indexOfCellX - i) + Math.abs(indexOfCellY - j) <= unitMatrix[indexOfCellX][indexOfCellY].VALUABLEMOVE) {
1983 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pGreen);
1984 }
1985 } else {
1986 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) {
1987 canvas.drawRect(i * cellWidth + deltaScreenX, j * cellHeight + deltaScreenY, (i + 1) * cellWidth + deltaScreenX, (j + 1) * cellHeight + deltaScreenY, pRed);
1988 }
1989 }
1990 }
1991 }
1992 }
1993 canvas.drawRect(indexOfCellX * cellWidth + deltaScreenX, indexOfCellY * cellHeight + deltaScreenY, (indexOfCellX + 1) * cellWidth + deltaScreenX, (indexOfCellY + 1) * cellHeight + deltaScreenY, pYellow);
1994 }
1995 }
1996
1997
1998 boolean firstTouch = false;
1999 long time = 0;
2000
2001 public boolean isDoubleClick(MotionEvent event) {
2002
2003 if (event.getAction() == event.ACTION_DOWN) {
2004 if (firstTouch && (System.currentTimeMillis() - time) <= 300 && (System.currentTimeMillis() - time) > 50) {
2005 //do stuff here for double tap
2006 Toast toast = Toast.makeText(context,
2007 befpreviousIndexOfCellX.toString() + befpreviousIndexOfCellY.toString(), Toast.LENGTH_SHORT);
2008 toast.show();
2009
2010 return true;
2011
2012 } else {
2013
2014
2015 firstTouch = true;
2016 time = System.currentTimeMillis();
2017 Toast toast = Toast.makeText(context,
2018 befpreviousIndexOfCellX.toString() + befpreviousIndexOfCellY.toString(), Toast.LENGTH_SHORT);
2019 toast.show();
2020
2021 }
2022 }
2023 return false;
2024 }
2025
2026
2027 @Override
2028 public boolean onTouchEvent(MotionEvent event) {
2029
2030 if (event.getX() >= (width * 16 / 17) && event.getY() <= height / 33) {
2031 btnMenu.isPressed = true;
2032 menu.show();
2033 }
2034
2035
2036 if (event.getX() > cellWidth * 3f && event.getY() >=cellHeight * 1f && event.getX() <= cellWidth * 3f + cellWidth*2 && event.getY() <=cellHeight * 1f + cellHeight/2 ){
2037 btnTurn.isPressed = !btnTurn.isPressed;
2038 for (int i = 0; i < 6; i++) {
2039 for (int j = 0; j < 8; j++) {
2040
2041 if (!unitMatrix[i][j].isGround()){
2042 if (unitMatrix[i][j].Owner.equals(TurnOfSide)){
2043 unitMatrix[i][j].VALUABLEMOVE = unitMatrix[i][j].MOVE;
2044 unitMatrix[i][j].canAttack = true;
2045 }
2046
2047 }
2048 }
2049
2050 }
2051 TurnOfSide = !TurnOfSide;
2052 }
2053
2054
2055 if ((event.getX() >= deltaScreenX) && (event.getX() <= cellWidth * 6 + deltaScreenX) && (event.getY() >= deltaScreenY) && (event.getY() <= cellHeight * 8 + deltaScreenY)) {
2056 DrawPermissed = true;
2057 for (int i = 1; i < 9; i++) {
2058 if (event.getY() > cellHeight * (i - 1) + deltaScreenY && event.getY() < cellHeight * i + deltaScreenY) {
2059 this.indexOfCellY = i - 1;
2060 }
2061 }
2062
2063 for (int i = 1; i < 7; i++) {
2064 if (event.getX() > cellWidth * (i - 1) + deltaScreenX && event.getX() < cellWidth * i + deltaScreenX) {
2065 this.indexOfCellX = i - 1;
2066 }
2067 }
2068
2069
2070
2071 if (!unitMatrix[indexOfCellX][indexOfCellY].isGround() && !isDoubleClick(event)) {
2072
2073
2074 }
2075 } else {
2076 indexOfCellX = 6;
2077 indexOfCellY = 8;
2078 DrawPermissed = false;
2079 }
2080
2081
2082 if ((event.getX() >= deltaScreenX) && (event.getX() <= cellWidth * 6 + deltaScreenX) && (event.getY() >= deltaScreenY) && (event.getY() <= cellHeight * 8 + deltaScreenY) && isDoubleClick(event)) {
2083 DrawPermissed = true;
2084
2085 for (int i = 1; i < 9; i++) {
2086 if (event.getY() > cellHeight * (i - 1) + deltaScreenY && event.getY() < cellHeight * i + deltaScreenY) {
2087 this.indexOfCellOnClickY = i - 1;
2088 }
2089 }
2090
2091 for (int i = 1; i < 7; i++) {
2092 if (event.getX() > cellWidth * (i - 1) + deltaScreenX && event.getX() < cellWidth * i + deltaScreenX) {
2093 this.indexOfCellOnClickX = i - 1;
2094 }
2095
2096 }
2097
2098
2099 //Передвижение и атака
2100 if(!unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].ground && unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].Owner.equals(TurnOfSide) ) {
2101 if ( unitMatrix[indexOfCellOnClickX][indexOfCellOnClickY].ground &&(Math.abs(indexOfCellOnClickX - befpreviousIndexOfCellX) + Math.abs(indexOfCellOnClickY - befpreviousIndexOfCellY)) <= unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].VALUABLEMOVE ){
2102 unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].VALUABLEMOVE -= Math.abs(indexOfCellOnClickX - befpreviousIndexOfCellX) + Math.abs(indexOfCellOnClickY - befpreviousIndexOfCellY);
2103 unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].move(indexOfCellOnClickX, indexOfCellOnClickY, befpreviousIndexOfCellX, befpreviousIndexOfCellY, unitMatrix, unitMatrix[indexOfCellOnClickX][indexOfCellOnClickY].isGround());
2104 indexOfCellX = indexOfCellOnClickX;
2105 indexOfCellY = indexOfCellOnClickY;
2106
2107 } 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) {
2108 unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].canAttack = false;
2109 unitMatrix[befpreviousIndexOfCellX][befpreviousIndexOfCellY].attack(indexOfCellOnClickX, indexOfCellOnClickY, befpreviousIndexOfCellX, befpreviousIndexOfCellY, unitMatrix, unitMatrix[indexOfCellOnClickX][indexOfCellOnClickY].isGround(), canvas);
2110 Toast toast = Toast.makeText(context,
2111 "Attacked", Toast.LENGTH_SHORT);
2112 toast.show();
2113
2114 }
2115
2116 }
2117 }
2118
2119
2120 befpreviousIndexOfCellX = previousIndexOfCellX;
2121 befpreviousIndexOfCellY = previousIndexOfCellY;
2122 previousIndexOfCellY = indexOfCellY;
2123 previousIndexOfCellX = indexOfCellX;
2124
2125 return false;
2126 }
2127
2128}
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142package com.example.gwynbleidd.verstkagame;
2143
2144
2145import android.app.Dialog;
2146import android.content.ContentValues;
2147import android.database.sqlite.SQLiteDatabase;
2148import android.graphics.Point;
2149import android.os.Bundle;
2150import android.support.v7.app.AppCompatActivity;
2151import android.view.Display;
2152import android.view.View;
2153import android.widget.Button;
2154
2155import com.example.gwynbleidd.verstkagame.UnitClasses.Unit;
2156
2157
2158public class GameActivity extends AppCompatActivity {
2159
2160 Integer[][] matrix1;
2161 Integer[][] matrix2;
2162 BattleField battleField;
2163 Dialog menu;
2164 Dialog saveMenu;
2165
2166 AppCompatActivity game;
2167 Integer[][] HPMatrix = new Integer[7][9];
2168 Integer[][] VALUABLEMOVEMatrix = new Integer[7][9];
2169 Boolean[][] OWNERMatrix = new Boolean[7][9];
2170 Boolean[][] canAttackMatrix = new Boolean[7][9];
2171 String[][] nameMatrix = new String[7][9];
2172
2173 @Override
2174 protected void onCreate(Bundle savedInstanceState) {
2175 super.onCreate(savedInstanceState);
2176 this.game = this;
2177 getSupportActionBar().hide();
2178 Display display = getWindowManager().getDefaultDisplay();
2179 Point size = new Point();
2180 display.getSize(size);
2181 int width = size.x;
2182 int height = size.y;
2183 menu = new Dialog(GameActivity.this);
2184 menu.setContentView(R.layout.menu_layout);
2185 menu.setTitle("Меню");
2186 menu.getWindow().setLayout(width / 2, height / 2);
2187
2188
2189 saveMenu = new Dialog(GameActivity.this);
2190 saveMenu.setContentView(R.layout.save_screen);
2191 saveMenu.setTitle("Сохранение");
2192 saveMenu.getWindow().setLayout(width / 2, height / 2);
2193
2194
2195 Button btnBack = (Button) saveMenu.findViewById(R.id.btnBack);
2196 btnBack.setOnClickListener(new View.OnClickListener() {
2197 @Override
2198 public void onClick(View view) {
2199 saveMenu.cancel();
2200 }
2201 });
2202
2203 Button btnSave1 = (Button) saveMenu.findViewById(R.id.save1);
2204 Button btnSave2 = (Button) saveMenu.findViewById(R.id.save2);
2205 Button btnSave3 = (Button) saveMenu.findViewById(R.id.save3);
2206 Button btnSave4 = (Button) saveMenu.findViewById(R.id.save4);
2207 Button btnSave5 = (Button) saveMenu.findViewById(R.id.save5);
2208 Button btnSave6 = (Button) saveMenu.findViewById(R.id.save6);
2209
2210 btnSave1.setOnClickListener(new View.OnClickListener() {
2211 @Override
2212 public void onClick(View view) {
2213 SQLiteDatabase myDB = openOrCreateDatabase("save1.db", MODE_PRIVATE, null);
2214 myDB.execSQL("DROP TABLE IF EXISTS save1");
2215 myDB.execSQL(
2216 "CREATE TABLE IF NOT EXISTS save1 (name TEXT, indexX INT, indexY INT, HP INT, canAttack INT, VALUABLEMOVE INT, OWNER INT)"
2217 );
2218
2219 for (int i = 0; i < 6; i++) {
2220 for (int j = 0; j < 8; j++) {
2221 if (!battleField.unitMatrix[i][j].isGround()) {
2222 ContentValues tmpRow = new ContentValues();
2223 tmpRow.put("name", battleField.unitMatrix[i][j].name);
2224 tmpRow.put("indexX", i);
2225 tmpRow.put("indexY", j);
2226 tmpRow.put("HP", battleField.unitMatrix[i][j].HP);
2227 tmpRow.put("canAttack", (battleField.unitMatrix[i][j].canAttack == true ? 1 : 0));
2228 tmpRow.put("VALUABLEMOVE", battleField.unitMatrix[i][j].VALUABLEMOVE);
2229 tmpRow.put("OWNER", (battleField.unitMatrix[i][j].Owner == true ? 1 : 0));
2230 myDB.insert("save1", null, tmpRow);
2231 }
2232 }
2233 }
2234
2235 myDB.close();
2236
2237 }
2238 });
2239
2240
2241
2242 Button btnSave = (Button) menu.findViewById(R.id.saveGame);
2243 btnSave.setText("Сохранить игру");
2244 Button btnMainMenu = (Button) menu.findViewById(R.id.mainMenu);
2245 btnMainMenu.setText("В главное меню");
2246
2247 btnSave.setOnClickListener(new View.OnClickListener() {
2248 @Override
2249 public void onClick(View view) {
2250 saveMenu.show();
2251 }
2252 });
2253
2254 btnMainMenu.setOnClickListener(new View.OnClickListener() {
2255 @Override
2256 public void onClick(View view) {
2257 menu.cancel();
2258 game.finish();
2259 }
2260 });
2261
2262
2263
2264
2265 matrix1 = (Integer[][]) getIntent().getExtras().getSerializable("UnitMatrixPlayerOne");
2266 matrix2 = (Integer[][]) getIntent().getExtras().getSerializable("UnitMatrixPlayerTwo");
2267 HPMatrix = (Integer[][]) getIntent().getExtras().getSerializable("HPMatrix");
2268 VALUABLEMOVEMatrix = (Integer[][]) getIntent().getExtras().getSerializable("VALUABLEMOVEMatrix");
2269 nameMatrix = (String[][]) getIntent().getExtras().getSerializable("nameMatrix");
2270 canAttackMatrix = (Boolean[][]) getIntent().getExtras().getSerializable("canAttackMatrix");
2271 OWNERMatrix = (Boolean[][]) getIntent().getExtras().getSerializable("OWNERMatrix");
2272 battleField = new BattleField(this, width, height, matrix1, matrix2, nameMatrix, HPMatrix, canAttackMatrix, OWNERMatrix, VALUABLEMOVEMatrix, menu);
2273 setContentView(battleField);
2274
2275
2276 }
2277
2278
2279 @Override
2280 protected void onDestroy() {
2281 battleField.iconattack.recycle();
2282 battleField.armor.recycle();
2283 battleField.blue2Image.recycle();
2284 battleField.blueImage.recycle();
2285 battleField.red2Image.recycle();
2286 battleField.redImage.recycle();
2287 battleField.turn.recycle();
2288 battleField.turn2.recycle();
2289 battleField.frame.recycle();
2290 battleField.board1.recycle();
2291 battleField.groundCellImage.recycle();
2292 battleField.groundImage.recycle();
2293 battleField.btnMenuImage.recycle();
2294 for (int i = 0; i < 6; i++) {
2295 for (int j = 0; j < 8; j++) {
2296 battleField.unitMatrix[i][j].cellImage.recycle();
2297 if (battleField.unitMatrix[i][j].outImage != null)
2298 battleField.unitMatrix[i][j].outImage.recycle();
2299 if (battleField.unitMatrix[i][j].cellImageModel1 != null)
2300 battleField.unitMatrix[i][j].cellImageModel1.recycle();
2301 if (battleField.unitMatrix[i][j].cellImageModel2 != null)
2302 battleField.unitMatrix[i][j].cellImageModel2.recycle();
2303 if (battleField.unitMatrix[i][j].cellImageModel3 != null)
2304 battleField.unitMatrix[i][j].cellImageModel3.recycle();
2305 }
2306 }
2307 super.onDestroy();
2308 }
2309}
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330package com.example.gwynbleidd.verstkagame;
2331
2332import android.content.Intent;
2333import android.database.Cursor;
2334import android.database.sqlite.SQLiteDatabase;
2335import android.graphics.Bitmap;
2336import android.graphics.BitmapFactory;
2337import android.graphics.Point;
2338import android.os.Bundle;
2339import android.support.v7.app.AppCompatActivity;
2340import android.view.Display;
2341import android.view.View;
2342import android.widget.Button;
2343
2344import com.example.gwynbleidd.verstkagame.UnitClasses.Humans.Archer;
2345import com.example.gwynbleidd.verstkagame.UnitClasses.Unit;
2346
2347/**
2348 * Created by Gwynbleidd on 12.02.2018.
2349 */
2350
2351public class LoadGame extends AppCompatActivity {
2352
2353 Integer[][] HPMatrix = new Integer[7][9];
2354 Integer[][] VALUABLEMOVEMatrix = new Integer[7][9];
2355 Boolean[][] OWNERMatrix = new Boolean[7][9];
2356 Boolean[][] canAttackMatrix = new Boolean[7][9];
2357 String[][] nameMatrix = new String[7][9];
2358
2359
2360 @Override
2361 protected void onCreate(Bundle savedInstanceState) {
2362 super.onCreate(savedInstanceState);
2363 setContentView(R.layout.load_screen);
2364 getSupportActionBar().hide();
2365
2366 Display display = getWindowManager().getDefaultDisplay();
2367 Point size = new Point();
2368 display.getSize(size);
2369 int width = size.x;
2370 int height = size.y;
2371
2372 for (int i = 0; i < 7; i++) {
2373 for (int j = 0; j < 9; j++) {
2374 this.HPMatrix[i][j] = 1;
2375 this.VALUABLEMOVEMatrix[i][j] = 0;
2376 this.OWNERMatrix[i][j] = false;
2377 this.canAttackMatrix[i][j] = false;
2378 this.nameMatrix[i][j] = "";
2379 }
2380 }
2381
2382 SQLiteDatabase myDB = openOrCreateDatabase("save1.db", MODE_PRIVATE, null);
2383 Cursor myCursor = myDB.rawQuery("select name, indexX, indexY, HP, canAttack, VALUABLEMOVE, OWNER from save1", null);
2384
2385 while(myCursor.moveToNext()) {
2386 String name = myCursor.getString(0);
2387 Integer indexX = myCursor.getInt(1);
2388 Integer indexY = myCursor.getInt(2);
2389 Integer HP = myCursor.getInt(3);
2390 boolean canAttack = (myCursor.getInt(4) == 1);
2391 Integer VALUABLEMOVE = myCursor.getInt(5);
2392 boolean OWNER = (myCursor.getInt(6) == 1);
2393
2394 nameMatrix[indexX][indexY] = name;
2395 HPMatrix[indexX][indexY] = HP;
2396 canAttackMatrix[indexX][indexY] = canAttack;
2397 VALUABLEMOVEMatrix[indexX][indexY] = VALUABLEMOVE;
2398 OWNERMatrix[indexX][indexY] = OWNER;
2399
2400 }
2401
2402 myCursor.close();
2403 myDB.close();
2404
2405
2406 Button btnLoad1 = (Button) findViewById(R.id.load1);
2407 btnLoad1.setOnClickListener(new View.OnClickListener() {
2408 @Override
2409 public void onClick(View view) {
2410 Intent intent = new Intent(getApplicationContext(), GameActivity.class);
2411 intent.putExtra("HPMatrix", HPMatrix);
2412 intent.putExtra("VALUABLEMOVEMatrix", VALUABLEMOVEMatrix);
2413 intent.putExtra("canAttackMatrix", canAttackMatrix);
2414 intent.putExtra("OWNERMatrix", OWNERMatrix);
2415 intent.putExtra("nameMatrix", nameMatrix);
2416 startActivity(intent);
2417 }
2418 });
2419
2420 }
2421}