polzavatel
Новичок
- Сообщения
- 50
- Репутация
- 2
Описание: Здесь я буду выкладывать этапы моего ознакомления/создания игры.
Источник: autoit-script.ru
Автор(ы): polzavatel
Итак, начнём...
Имеем следующее:
-Генерация комнаты из текстового файла.
-ходьба
Код:
Описание:
Сначала, мы считываем файл "test.txt"
Его содержание:
Вот из игры -
Во время считывания идет подсчёт количества строк и кол-во символов в строке. По сути имеется поле 30х30, но тут как видите используется не всё поле, а лишь часть.
Итак, программа перебирает каждый символ( 1 символ = 1 квадратик 20*20 пикселей) и дает ему id( равный (номер строки)*30 + (номер символа в строке))
0 - непроходимый квадрат(в моём случае чёрный)
1 - проходимый квадрат( белый)
2 - сам игрок(красный)
После поле рисуется. Пока что использовал GUICtrlCreateIcon, т.к. не знаю пока другого.
Хождение думаю ясно как делалось.
Надеюсь тему будут смотреть "акулы" AutoIt'a и укажут на мои ошибки =)
И вопрос - почему белый квадрат имеет слева чёрную полоску, которая иногда так же появляется снизу?
Источник: autoit-script.ru
Автор(ы): polzavatel
Итак, начнём...
Версия 000
Имеем следующее:
-Генерация комнаты из текстового файла.
-ходьба
Код:
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
Local $file = FileOpen("test.txt", 0)
HotKeySet("{LEFT}", "goLeft")
HotKeySet("{RIGHT}", "goRight")
HotKeySet("{DOWN}", "goDown")
HotKeySet("{UP}", "goUp")
global $block[1000]
global $p[10000], $playerId,$playerX,$playerY
$id = 0
$cl = 0
Dim $c[100]
For $i = 1 To 30 Step 1
Local $line = FileReadLine($file)
$cl += 1
$c[$i] = 0
For $y = 1 to 30 step 1
$id = $i*30 + $y
Local $var = StringMid($line, $y, 1)
If( $var= "1") then
$block[$id] = 1
$c[$i] += 1
EndIf
If( $var = "0") then
$block[$id] = 0
$c[$i] += 1
EndIf
If( $var = "2") then
$block[$id] = 2
$c[$i] += 1
EndIf
If( $var = "") then
ExitLoop
EndIf
Next
Next
GUICreate(" My GUI Icons", 700, 700)
GUISetState()
func draw()
$id = 0
For $i = 1 To $cl Step 1
For $y = 1 to $c[$i] step 1
$id = $i*30 + $y
If($block[$id] = 1) then
$p[$id] = GUICtrlCreateIcon("test.bmp", 0, $y*20 , $i*20, 20, 20)
EndIf
If( $block[$id] = 0) then
$p[$id] = GUICtrlCreateIcon("test2.bmp", 0, $y*20 , $i*20, 20, 20)
EndIf
If( $block[$id] = 2) then
$playerX = $y*20
$playerY = $i*20
$playerId = $id
$p[$id] = GUICtrlCreateIcon("player.bmp", 0, $y*20 , $i*20, 20, 20)
EndIf
Next
Next
EndFunc
draw()
Func goLeft()
if $block[$playerId - 1] = 1 Then
GUICtrlDelete($p[$playerId])
GUICtrlDelete($p[$playerId - 1])
$p[$playerId] = GUICtrlCreateIcon("test.bmp", 0, $playerX, $playerY, 20, 20)
$p[$playerId - 1] = GUICtrlCreateIcon("player.bmp", 0, $playerX - 20, $playerY, 20, 20)
$block[$playerId] = 1
$playerX = $playerX - 20
$playerId -= 1
EndIf
EndFunc
Func goRight()
if $block[$playerId + 1] = 1 Then
GUICtrlDelete($p[$playerId])
GUICtrlDelete($p[$playerId + 1])
$p[$playerId] = GUICtrlCreateIcon("test.bmp", 0, $playerX, $playerY, 20, 20)
$p[$playerId + 1] = GUICtrlCreateIcon("player.bmp", 0, $playerX + 20, $playerY, 20, 20)
$block[$playerId] = 1
$playerX = $playerX + 20
$playerId += 1
EndIf
EndFunc
Func goDown()
if $block[$playerId + 30] = 1 Then
GUICtrlDelete($p[$playerId])
GUICtrlDelete($p[$playerId + 30])
$p[$playerId] = GUICtrlCreateIcon("test.bmp", 0, $playerX, $playerY, 20, 20)
$p[$playerId + 30] = GUICtrlCreateIcon("player.bmp", 0, $playerX, $playerY + 20, 20, 20)
$block[$playerId] = 1
$playerY = $playerY + 20
$playerId += 30
EndIf
EndFunc
Func goUp()
if $block[$playerId - 30] = 1 Then
GUICtrlDelete($p[$playerId])
GUICtrlDelete($p[$playerId - 30])
$p[$playerId] = GUICtrlCreateIcon("test.bmp", 0, $playerX, $playerY, 20, 20)
$p[$playerId - 30] = GUICtrlCreateIcon("player.bmp", 0, $playerX, $playerY - 20, 20, 20)
$block[$playerId] = 1
$playerY = $playerY - 20
$playerId -= 30
EndIf
EndFunc
While 1
Local $msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
GUIDelete()
Описание:
Сначала, мы считываем файл "test.txt"
Его содержание:
Код:
00000000000000000
01111211111111110
0111111111111100
01111111100000
0111111110000
011111111000
01111111100
0101111010
0111111110
0000000000
Вот из игры -
Во время считывания идет подсчёт количества строк и кол-во символов в строке. По сути имеется поле 30х30, но тут как видите используется не всё поле, а лишь часть.
Итак, программа перебирает каждый символ( 1 символ = 1 квадратик 20*20 пикселей) и дает ему id( равный (номер строки)*30 + (номер символа в строке))
0 - непроходимый квадрат(в моём случае чёрный)
1 - проходимый квадрат( белый)
2 - сам игрок(красный)
После поле рисуется. Пока что использовал GUICtrlCreateIcon, т.к. не знаю пока другого.
Хождение думаю ясно как делалось.
Надеюсь тему будут смотреть "акулы" AutoIt'a и укажут на мои ошибки =)
И вопрос - почему белый квадрат имеет слева чёрную полоску, которая иногда так же появляется снизу?