Название: Игра "Пятнашки"
Отправлено: Ol3g от Январь 18, 2016, 18:52
Всем привет!.
Моя первая игра на С++ Qt v4.8.6
(http://i67.tinypic.com/veb3pk.png)
Название: Re: Игра "Пятнашки"
Отправлено: gil9red от Январь 18, 2016, 19:45
Ура, собрал ) Ненавижу пятнашки ) Из всех головоломок самые нелюбимые, вспоминаю головоломку пятнашки в замке в Resident Evil 4
Название: Re: Игра "Пятнашки"
Отправлено: gil9red от Январь 20, 2016, 15:28
Захотелось самому попробовать написать (игры у меня не получаются, а пятнашки показались простыми) и вот что получилось. Сделано на питоне с Qt: Python #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'ipetrash' if __name__ == '__main__': import random import sys from PySide.QtGui import * from PySide.QtCore import * app = QApplication(sys.argv) class Widget(QWidget): def __init__(self): super().__init__() self.setWindowTitle('15-puzzle') self.cell_size = 40 self.resize(self.cell_size * 4, self.cell_size * 4) self.empty_value = 16 self.matrix = None self.refill() def refill(self): seq = list(range(1, 16)) random.shuffle(seq) # add empty cell seq.append(self.empty_value) self.matrix = [ [seq.pop(0) for _ in range(4)] for _ in range(4) ] def mouseReleaseEvent(self, event): super().mouseReleaseEvent(event) pos = event.pos() x, y = pos.y() // self.cell_size, pos.x() // self.cell_size def get_cell_num(x, y): try: return self.matrix[x][y], x, y except IndexError: return None try: neig = [ get_cell_num(x-1, y), get_cell_num(x+1, y), get_cell_num(x, y-1), get_cell_num(x, y+1), ] # Ищем пустую ячейку empty_cell = list(filter(lambda x: x is not None and x[0] == self.empty_value, neig)) # Если соседняя клетка пустая if len(empty_cell) > 0: # Значение текущей клетки value = get_cell_num(x, y)[0] # Значение пустой клетки, и ее координаты empty_value, x2, y2 = empty_cell[0] # Меняем клетки местами self.matrix[x][y] = empty_value self.matrix[x2][y2] = value self.update() # Матрицу переделываем в список l = list() for row in self.matrix: l += row # Последний элемент правильной собранной доски -- пустая ячейка, не учитываем ее l.pop() if l == list(range(1, 16)): QMessageBox.information(self, 'Victory', 'Ok!') except IndexError: pass def paintEvent(self, event): super().paintEvent(event) painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.setPen(Qt.black) for i, row in enumerate(self.matrix): y = i * self.cell_size for j, num in enumerate(row): x = j * self.cell_size painter.setBrush(Qt.white if num == self.empty_value else Qt.yellow) painter.drawRect(x, y, self.cell_size, self.cell_size) text = str(num) if num != self.empty_value else "" painter.drawText(x, y, self.cell_size, self.cell_size, Qt.AlignCenter, text) w = Widget() w.show() exit(app.exec_())
Название: Re: Игра "Пятнашки"
Отправлено: hayeved от Январь 25, 2023, 17:50
Всем привет!.
Моя первая игра на С++ Qt v4.8.6
(http://i67.tinypic.com/veb3pk.png)
Круто, а что-то из казино, (https://selector-casino.download/) можешь сделать?
Название: Re: Игра "Пятнашки"
Отправлено: benene от Январь 29, 2023, 00:08
Всем привет!.
Моя первая игра на С++ Qt v4.8.6
(http://i67.tinypic.com/veb3pk.png)
Круто, а что-то из казино, (https://selectorkazino.net/) можешь сделать? А при чем тут вообще казино, это вообще в другую степь..
|