Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax

Ответ
 
Опции темы
Старый 02.12.2011, 11:53   #136
Greymem
Нуждающийся
 
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Сообщение от SBJoker Посмотреть сообщение
Тога придётся напрячь штуки из вашей подписи.
Установить хендл с минусом, прокрутить относительно произвольной точки, установить хендл в центр, прокрутить вокруг оси.
Прокатит? =)
__________________
Мозги... у них есть метод "Storm"
(Offline)
 
Ответить с цитированием
Старый 02.12.2011, 11:59   #137
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Нет не прокатит.
Ты путаешь две вещи, вращение картинки, и перемещение картинки по кругу относительно какой либо точки.

Первое делается с помощью команд вращения картинки и если надо изменения хэндла картинки.

Второе обыкновенная математика и капля тригонометрии.
__________________
(Offline)
 
Ответить с цитированием
Старый 05.12.2011, 08:21   #138
Greymem
Нуждающийся
 
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Короче. То на то и выходит
Сначала вычисляем новые X,Y, обновляем месторасположение объекта с помощью функции которую я нашёл на оф форуме.
Потом только устанавливаем хендл, прокручиваем по своей оси, и уже получаем угол самого объекта, при неизменных координатах
__________________
Мозги... у них есть метод "Storm"
(Offline)
 
Ответить с цитированием
Старый 29.12.2011, 17:53   #139
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 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
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений
(для 1,471 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Без ToCString нормально идёт, не верьте BlitzEtCetera!(пофиксил статью на ней)
__________________

(Offline)
 
Ответить с цитированием
Старый 30.12.2011, 01:01   #141
Черный крыс
 
Сообщений: n/a
Ответ: Вопрос-Ответ (для новичков BlitzMax)

На BlitzEtCetera все написано правильно.

Просто если ты передаешь литерал ( в виде "аля_что_то" ) то компилятор передаст прямой указатель, тоесть Сишную-строку.

Последний раз редактировалось Черный крыс, 31.12.2011 в 04:15.
 
Ответить с цитированием
Старый 07.06.2012, 08:47   #142
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 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
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 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
Черный крыс
 
Сообщений: n/a
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Компилятор споткнулся, так как в коде идет вызов\обращение к несуществующей метке.

Судя по названию "PIXMAN_OP_" - автор опечатался, попробуй заменить на "PIXMAP_OP_"
 
Ответить с цитированием
Старый 07.06.2012, 14:58   #146
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 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
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Вопрос-Ответ (для новичков 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nerd (07.06.2012)
Старый 18.06.2012, 06:49   #148
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Как вращать картинку вокруг центра объекта со смещением по x/y?
(для раскуривания: есть объект, сбоку (по "-x") у него двигатель и надо прицепить туда партиклы.)
Через Sin и Cos получается крутить только по кругу.
(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 09:43   #149
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)


Я тут поразмышлял немного, и выходит, что "двигатели" двигаются по своей окружности, центр которой в это время в свою очередь двигается по окружности с разницей в 90 градусов от "главного" угла. Радиус меньшей окружности равен сдвигу по х двигателей относительно центра "корабля".
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 11:30   #150
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Сообщение от FireOwl Посмотреть сообщение

Я тут поразмышлял немного, и выходит, что "двигатели" двигаются по своей окружности, центр которой в это время в свою очередь двигается по окружности с разницей в 90 градусов от "главного" угла. Радиус меньшей окружности равен сдвигу по х двигателей относительно центра "корабля".
И?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 06:11.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com