ST7735 итог игры

03


Решил добавить страницу результатов к игре (скучно никак красный экранчик не дойдёт от границы с 4 дек.). Как формульно увязать три параметра результата для качественной оценки игрока в сеансе игры?
Живучесть это число полных поездок танчика за игру - характеризует тормознутость игрока при бомбометании.

1 лайк

Всё сложить в кучу и умножить на количество ограбленных корованов.

Дай угадаю
Расход бомб = “в цель” + “живучесть цели” ?

для качественной оценки результаты не важны вообще. Главное понимать, кто здесь фашисты.

3 лайка

Не, живучесть тем больше (число поездок танчика) чем дольше игрок мнёт …иськи пока нажмёт кнопку сброс бомбы.

Ну хочется как в школе :slight_smile: - молодец, хорошо, посредственно, плохо.

Нет, судя по описанию, “живучесть” имеет размерность времени, тогда как “расход” и “в цель” - штуки.

Например, можно вычитать живучесть(она же тормознутость)) в процентах , из общего кол-ва очков. Напр. 100 очков, живучесть 3.
Общ равно 97. Если живучесть 100% - игрок полный лузер, 0 очков)))

Пока вижу два параметра оценивания - отношение “в цель” к “расход бомб” (идеал 1, дно около 0) и отношение “расход бомб” к “живучесть цели” (скорость бомбометания - большая плохо (> 1), малая тоже плохо (<1)).

Этот дисплей есть с тачскрином, надо переписать игру на STM32F103, ИМХО…
Под стилус

А где есть?.. Я никак не могу дождаться с…под SD карту дисплея. И нет (не умею) STM…
Сделал оценку, как ни пыхтю выше тройки один раз была четвёрка.

покупал приятель здесь, заказывал без тачскрина пришли с тачскрином,
дисплейчик и с тачскрином и с SD…
распаялся, буду пытать по STM, отпишусь
Тачскрин работает библиотека - XPT2046_touch.h"

Скетч проверки тачскрина:

/**
 * XPT2046 touch screen buttons.
 *
 * It divides the touch screen into COLUMNS * LINES areas (4*2=8 buttons) and creates virtual buttons.   
 * if the touch screen area is pressed and prints on Serial Port 1 the X,Y coordinates.
 *
 * Copyright (c) 02 Dec 2015 by Vassilis Serasidis
 * Home: http://www.serasidis.gr
 * email: avrsite@yahoo.gr
 *
 * The sketch example has been created for using it with STM32Duino (http://www.stm32duino.com)
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
#if defined(_VARIANT_ARDUINO_STM32_)|| defined(_BOARD_GENERIC_STM32F103C_)
/*
#define TFT_CS        PB12
#define TFT_DC        PB11
#define TFT_RST       PB10
// SPI2
#define TFT_MOSI      PB15
#define TFT_MISO      PB14
#define TFT_SCLK      PB13
*/
// тачскрин на SPI1
#define TFT_CS        PA4   // T_CS
#define TFT_DC        PB11  // не подключен
#define TFT_RST       PB10  // не подключен
// SPI1
#define TFT_MOSI      PA7   // T_DIN (MOSI)
#define TFT_MISO      PA6   // T_DO  (MISO)
#define TFT_SCLK      PA5   // T_CLK
                            // T_IRQ не подключен
#endif

#include "XPT2046_touch.h"
#include <SPI.h>;

#define CS_PIN  PA4  // Chip Select pin
#define LINES     2
#define COLUMNS   4

SPIClass mySPI(1); //Create an SPI instance on SPI1 port.
XPT2046_touch ts(CS_PIN, mySPI); // Chip Select pin, SPI port

uint16_t xy[2];

void setup() {
  Serial.begin(115200);
  delay(5000);
  Serial.println("-------------------------------------------------");
  Serial.println("XPT2046 touch screen buttons");
  Serial.println("Copyright (c) 02 Dec 2015 by Vassilis Serasidis");
  Serial.println("Home: http://www.serasidis.gr");
  Serial.println("-------------------------------------------------");
  ts.begin(); //Begin TouchScreen.
  ts.setButtonsNumber(COLUMNS, LINES); //Divide the Touch screen area into 4 columns and 2 lines and make them act as buttons. 
}

void loop() {
  if(ts.read_XY(xy)){ //If the touch screen is preesed, read the X,Y coordinates and print them on Serial port.
    uint8_t buttonNumber = ts.getButtonNumber();
    if(buttonNumber > 0){
      Serial.print("Button: ");
      Serial.println(buttonNumber);
      
      Serial.print("X: ");
      Serial.println(xy[0]); //Print X value
      Serial.print("Y: ");
      Serial.println(xy[1]); //Print Y value
      Serial.println();
    }
    delay(500);
  }
}

Повысил результативность. Никак не привыкну, что нет округления, а есть отбрасывание до целого… но оказывается всё же есть округление до целого из float и тогда:
tft.println(round(OZENKA));


уже лучше-точнее.

roundedValue = (int)(originalValue + 0.5);

Точно!, а я и не подумал даже :slight_smile:

Только теоретикам этого метода не показывайте - все мозги засрут.

так логично жеж всё, как-то по вашей библиотеке это разбирали

Да, я то чё, я сам так всегда делаю. Но теоретики “без соли жрут” за такое.

интересно бы выслушать “начальников транспортного цеха” - это даже костылём назвать язык не повернётся

Тогда вся математика - костыль.

В Паскале, вроде, было округление вверх и вниз - для остроконечников и тупоконечников. А вот в Це приходится изголятся.

В бухучете, помнится другой тип округления - в один период копейку недодал, а в следующем выплатил.