|
02.12.2011, 11:53
|
#136
|
Нуждающийся
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Сообщение от SBJoker
Тога придётся напрячь штуки из вашей подписи.
|
Установить хендл с минусом, прокрутить относительно произвольной точки, установить хендл в центр, прокрутить вокруг оси.
Прокатит? =)
__________________
Мозги... у них есть метод "Storm"
|
(Offline)
|
|
02.12.2011, 11:59
|
#137
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Нет не прокатит.
Ты путаешь две вещи, вращение картинки, и перемещение картинки по кругу относительно какой либо точки.
Первое делается с помощью команд вращения картинки и если надо изменения хэндла картинки.
Второе обыкновенная математика и капля тригонометрии.
__________________
|
(Offline)
|
|
05.12.2011, 08:21
|
#138
|
Нуждающийся
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Короче. То на то и выходит
Сначала вычисляем новые X,Y, обновляем месторасположение объекта с помощью функции которую я нашёл на оф форуме.
Потом только устанавливаем хендл, прокручиваем по своей оси, и уже получаем угол самого объекта, при неизменных координатах
__________________
Мозги... у них есть метод "Storm"
|
(Offline)
|
|
29.12.2011, 17:53
|
#139
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
...
Global LUA:Byte Ptr
LUA = luaL_newstate()
lua_register(LUA,"SpawnPlayerL".ToCString(),SpawnPlayerL)
...
Function SpawnPlayerL:Int(l:Byte Ptr)
...
Ругается на lua_register "Cannot convert Byte Ptr to String", чяднт?
|
(Offline)
|
|
30.12.2011, 00:17
|
#140
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Без ToCString нормально идёт, не верьте BlitzEtCetera!( пофиксил статью на ней)
|
(Offline)
|
|
30.12.2011, 01:01
|
#141
|
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
На BlitzEtCetera все написано правильно.
Просто если ты передаешь литерал ( в виде "аля_что_то" ) то компилятор передаст прямой указатель, тоесть Сишную-строку.
Последний раз редактировалось Черный крыс, 31.12.2011 в 04:15.
|
|
|
07.06.2012, 08:47
|
#142
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Я тут в примере наткнулся на строчку кода и хочу узнать для чего так сделано?
Field NewConnectionCallback (Conn:TCPSocketConnection)
В примере используется Strict
|
(Offline)
|
|
07.06.2012, 09:03
|
#143
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Я посмотрел код примера, эти штуки являются callback'ами, в эти поля присваиваются имена функций, которые будут далее использоваться.
Крутая штука, я не знал что так можно.
Вот весь код:
Rem
Title: TCPSocket Server
Author: Jim Pishlo (CoderLaureate)
([email protected])
End Rem
Strict
Type TCPSocketServer
'Properties
Field MyPort:Int = 3849
Field MySocket:TSocket
Field MyStream:TSocketStream
Field Connections:TList = New TList
Field StopSeq:String = "~r~n"
'Callback handles
Field NewConnectionCallback(Conn:TCPSocketConnection)
Field MsgRcvdCallback(Conn:TCPSocketConnection)
Field LostConnectionCallback(Conn:TCPSocketConnection)
'Constructor (for lack of a better word)
Function Create:TCPSocketServer(_Port:Int = 3849)
Local s:TCPSocketServer = New TCPSocketServer
s.MyPort = _Port
s.MySocket = CreateTCPSocket()
s.MyStream = CreateSocketStream(s.MySocket)
s.MySocket.Bind(_Port)
s.MySocket.Listen(0)
Return s
End Function
'The main method.
'Monitors connections and triggers events.
Method Listen()
Local newConn:TSocket = MySocket.Accept(0)
If newConn <> Null Then
Local conn:TCPSocketConnection = TCPSocketConnection.Create(Self,newConn)
'Add the new connection to the collection
Connections.AddLast(conn)
'If a callback has been assigned call it.
If NewConnectionCallback <> Null Then
NewConnectionCallback(conn) 'Pass a refernce to the new connection
End If
End If
'Clean up closed connections
For Local c:TCPSocketConnection = EachIn Connections
If Not c.MySocket.Connected() Then
If LostConnectionCallback <> Null Then
LostConnectionCallback(c)
End If
Connections.Remove(c) 'Remove connection from collection
End If
Next
'Receive Data from connections
'Trigger callback if neccesary
For Local c:TCPSocketConnection = EachIn Connections
If c.MySocket.Connected() Then
Local t:String = c.Receive()
If t <> "" Then
If MsgRcvdCallback <> Null Then
MsgRcvdCallback(c)
c.Buffer = ""
End If
End If
End If
Next
End Method
Method Broadcast(Message:String, Conn:TCPSocketConnection = Null)
If Conn <> Null Then
Conn.Send(Message)
Else
Local c:TCPSocketConnection
For c = EachIn Connections
If c.MySocket.Connected() Then
c.Send(Message)
End If
Next
End If
End Method
End Type
Type TCPSocketConnection
Field MyID:String
Field MyServer:TCPSocketServer
Field MySocket:TSocket
Field MyStream:TSocketStream
Field Buffer:String = ""
Field StopSeq:String
Function Create:TCPSocketConnection(s:TCPSocketServer, NewSocket:TSocket)
Local c:TCPSocketConnection = New TCPSocketConnection
c.MyServer = s
c.MySocket = NewSocket
c.MyStream = CreateSocketStream(c.MySocket)
c.StopSeq = c.MyServer.StopSeq
c.MyID = DottedIP(c.MySocket.RemoteIP())
Return c
End Function
Method Send(Text:String)
MySTream.WriteString(Text)
End Method
Method Receive:String()
Local nBytes:Int = MySocket.ReadAvail()
Local s:String = StopSeq
If nBytes Then
Local in:String = ReadString(MyStream,nBytes)
Buffer:+ in
If Buffer.Length >= s.Length And Right$(Buffer,s.Length) = s Then
Local t:String = Buffer.Replace(s,"") 'Strip out the stop sequence
Return t
End If
End If
End Method
End Type
Function CreateTCPSocketServer:TCPSocketServer(_Port:Int = 3849)
Return TCPSocketServer.Create(_Port)
End Function
'Test Code: This is a simple Telnet Chat Server. Run this program, then
' open up a command prompt and type:
'
' Telnet localhost 3849
'
' You can telnet into this server from anywhere in the world
' and do *very basic* text chatting. To log in from another
' computer, type:
'
' Telnet {host computer ip} 3849
'
' This is just a sample program to show you what you can do
' with the TCPSocketServer object.
'----------------------------------------------------------------------
'Create callback functions for interaction with the TCPSocketServer Object.
'Function to handle data recieved by server
'------------------------------------------
Function TextHandler(C:TCPSocketConnection)
C.MyServer.BroadCast(C.MyID + ": " + C.Buffer)
End Function
'Greet new users and assign an ID
'--------------------------------
Function Greet(C:TCPSocketConnection)
C.MyID = "User [" + MilliSecs() + "]"
C.MyServer.BroadCast("Welcome!~r~n",C)
C.MyServer.BroadCast(C.MyID + " has entered the room.~r~n")
End Function
'Alert other users when a user leaves
'------------------------------------
Function LostConnection(C:TCPSocketConnection)
C.MyServer.BroadCast("~r~n" + C.MyID + " has left the room.~r~n~r~n")
End Function
'Create an Instance of the TCPSocketServer Class
'-------------------------------------------------
Global Server:TCPSocketServer = CreateTCPSocketServer()
'Assign Function Pointers to Server's callback handles
'-----------------------------------------------------
Server.MsgRcvdCallback = TextHandler
Server.NewConnectionCallback = Greet
Server.LostConnectionCallback = LostConnection
'The Main Loop
'--------------
While Not KeyHit(KEY_ESCAPE)
Server.Listen() 'That's it!
Wend
|
(Offline)
|
|
07.06.2012, 14:14
|
#144
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
У кого есть откомпиленный модуль bah.cairo, плз, скиньте.
А то задолбался плясать с бубном
D:\BlitzMax\bin>bmk.exe makemods -a bah.cairo
Compiling:externs.bmx
flat assembler version 1.69.14 (710394 kilobytes memory)
4 passes, 22773 bytes.
Compiling:pixman-access.c
Compiling:pixman-access-accessors.c
Compiling:pixman-cpu.c
Compiling:pixman-gradient-walker.c
Compiling:pixman-region16.c
Compiling:pixman-region32.c
Compiling:pixman-image.c
Compiling:pixman-implementation.c
Compiling:pixman-combine32.c
Compiling:pixman-combine64.c
Compiling:pixman-general.c
Compiling:pixman.c
Compiling:pixman-fast-path.c
D:/BlitzMax/mod/bah.mod/cairo.mod/src/pixman/pixman-fast-path.c:1874: error: 'PI
XMAN_OP_' undeclared here (not in a function)
Build Error: failed to compile D:/BlitzMax/mod/bah.mod/cairo.mod/src/pixman/pixm
an-fast-path.c
D:\BlitzMax\bin>PAUSE
Для продолжения нажмите любую клавишу . . .
|
Пробовал подставлять другие версии pixman, не помогает.
|
(Offline)
|
|
07.06.2012, 14:28
|
#145
|
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Компилятор споткнулся, так как в коде идет вызов\обращение к несуществующей метке.
Судя по названию "PIXMAN_OP_" - автор опечатался, попробуй заменить на "PIXMAP_OP_"
|
|
|
07.06.2012, 14:58
|
#146
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Не, pixman - это название либы. Слова pixmap в коде нет.
Там код полон define'ов, поэтому невозможно понять где именно ошибка. Судя по тому, что в других версиях та же ошибка, это только у меня такое
Сам модуль брал отсюда - http://code.google.com/p/maxmods/dow...c.zip&can=2&q= и вроде там тоже никто не жаловался на ошибки.
А нет ли ещё модулей для рисования векторной графики?
|
(Offline)
|
|
07.06.2012, 22:10
|
#147
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Maximus- the BlitzMax module manager
Скачивает, распаковывает, устанавливает с учётом зависимостей модули для BlitzMax. Всё что надо - иметь MinGW. Остальное эта прога сделает сама.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.06.2012, 06:49
|
#148
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Как вращать картинку вокруг центра объекта со смещением по x/y?
(для раскуривания: есть объект, сбоку (по "-x") у него двигатель и надо прицепить туда партиклы.)
Через Sin и Cos получается крутить только по кругу.
|
(Offline)
|
|
18.06.2012, 09:43
|
#149
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Я тут поразмышлял немного, и выходит, что "двигатели" двигаются по своей окружности, центр которой в это время в свою очередь двигается по окружности с разницей в 90 градусов от "главного" угла. Радиус меньшей окружности равен сдвигу по х двигателей относительно центра "корабля".
|
(Offline)
|
|
18.06.2012, 11:30
|
#150
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Сообщение от FireOwl
Я тут поразмышлял немного, и выходит, что "двигатели" двигаются по своей окружности, центр которой в это время в свою очередь двигается по окружности с разницей в 90 градусов от "главного" угла. Радиус меньшей окружности равен сдвигу по х двигателей относительно центра "корабля".
|
И?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:56.
|