设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2178|回复: 5
打印 上一主题 下一主题

[已经过期] 还是界面大小问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
248 小时
注册时间
2010-8-24
帖子
358
跳转到指定楼层
1
发表于 2010-10-29 16:38:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 swhswh 于 2010-10-29 16:39 编辑

这个不弄明白我绝不罢休…………(不过,实在无解……也只能算了)
用了窗口调大的脚本,为什么自己调整后是这样的:

还需要调整哪里以解决问题?谢谢!


另外我说明一下,能完全显示的那部分是640x480的,而总大小是960x768像素

QQ截图未命名.jpg (191.87 KB, 下载次数: 11)

QQ截图未命名.jpg
努力学习做音乐,不断进步中~争取将来能做出来出色的游戏配乐!

Lv1.梦旅人

梦石
0
星屑
49
在线时间
486 小时
注册时间
2009-7-23
帖子
449
2
发表于 2010-10-29 16:52:04 | 只看该作者
重写窗口试试吧。
  1. class Tilemap
  2. $宽度=800
  3. $高度=600
  4. FBLX = ($宽度/32.0).ceil*32#x方向解析度
  5. FBLY = ($高度/32.0).ceil*32#y方向解析度
  6. SIZEX = 32
  7. SIZEY = 32
  8. ANI = 15#動畫等待楨數
  9. #以下畫元件用
  10. AUTO_XY = [
  11. [8, 8, 8, 8], [3, 8, 8, 8], [8, 3, 8, 8], [3, 3, 8, 8],
  12. [8, 8, 8, 3], [3, 8, 8, 3], [8, 3, 8, 3], [3, 3, 8, 3],
  13. [8, 8, 3, 8], [3, 8, 3, 8], [8, 3, 3, 8], [3, 3, 3, 8],
  14. [8, 8, 3, 3], [3, 8, 3, 3], [8, 8, 3, 3], [3, 3, 3, 3],
  15. [7, 7, 7, 7], [7, 3, 7, 7], [7, 7, 7, 3], [7, 3, 7, 3],
  16. [5, 5, 5, 5], [5, 5, 5, 3], [5, 5, 3, 5], [5, 5, 3, 3],
  17. [9, 9, 9, 9], [9, 9, 3, 9], [3, 9, 9, 9], [3, 9, 3, 9],
  18. [11, 11, 11, 11], [3, 11, 11, 11], [11, 3, 11, 11], [3, 3, 11, 11],
  19. [7, 9, 7, 9], [5, 5, 11, 11], [4, 4, 4, 4], [4, 4, 4, 3],
  20. [6, 6, 6, 6], [6, 6, 3, 6], [12, 12, 12, 12], [3, 12, 12, 12],
  21. [10, 10, 10, 10], [10, 3, 10, 10], [4, 6, 4, 6], [4, 4, 10, 10],
  22. [10, 12, 10, 12], [6, 6, 12, 12], [4, 6, 10, 12], [1, 1, 1, 1]
  23. ]
  24. #--------------------------------------------------------------------------
  25. # ● 定義外部變數
  26. #--------------------------------------------------------------------------
  27. attr_accessor :autotiles
  28. attr_accessor :tileset
  29. attr_reader :ox
  30. attr_reader :oy
  31. #--------------------------------------------------------------------------
  32. # ● 初始化物件
  33. #--------------------------------------------------------------------------
  34. def initialize(viewport = nil)
  35. @shadow = Bitmap.new(SIZEX, SIZEY)
  36. @shadow.fill_rect(0, 0, 17, SIZEY, Color.new(0, 0, 0, 120))#陰影
  37. @viewport = viewport
  38. @bitmaps = []
  39. @tileset = nil
  40. @autotiles= []
  41. @backs = {}#元件精靈
  42. @backbitmap = {}#元件圖塊
  43. @switches = {}#動畫開關
  44. @count = 0#當前顯示動畫
  45. @count1 = 0#等待楨數
  46. @visible = true
  47. @ox = $game_map.display_x / 4
  48. @oy = $game_map.display_y / 4
  49. @lastox = $game_map.display_x / 4
  50. @lastoy = $game_map.display_y / 4
  51. end
  52. #--------------------------------------------------------------------------
  53. # ● 釋放
  54. #--------------------------------------------------------------------------
  55. def dispose
  56. for i in @backbitmap.values
  57. i.dispose
  58. end
  59. for i in @backs.values
  60. i.dispose
  61. end
  62. @shadow.dispose
  63. end
  64. #--------------------------------------------------------------------------
  65. # ● 是否已釋放
  66. #--------------------------------------------------------------------------
  67. def disposed?
  68. return @shadow.disposed?
  69. end
  70. #---------------------------------------------------------------------------
  71. #---------------------------------------------------------------------------
  72. def map_data=(value)
  73. @map_data = value
  74. #如果地圖太大,按ESC打開功能表後返回地圖太慢,下面這段迴圈可以不要
  75. for i in 0...value.xsize
  76. for j in 0...value.ysize
  77. for k in 0..2
  78. cachebitmap(value[i, j, k])
  79. end
  80. end
  81. end
  82. #如果地圖太大,按ESC打開功能表後返回地圖太慢,上面這段迴圈可以不要
  83. #需要重新描繪的圖快
  84. if @map_data.xsize * SIZEX <= FBLX
  85. rangei = ([@ox / SIZEX - 1,0].max)..[[((@ox + FBLX) / SIZEX), FBLX / SIZEX - 1].min,@map_data.xsize-1].min
  86. else
  87. rangei = ([@ox / SIZEX - 1,0].max)..([(@ox + FBLX) / SIZEX, @map_data.xsize-1].min)
  88. end
  89. if @map_data.xsize * SIZEX <= FBLX
  90. rangej = ([@oy / SIZEY - 1,0].max)..[[((@oy + FBLY) / SIZEY), FBLY / SIZEY - 1].min,@map_data.ysize-1].min
  91. else
  92. rangej = ([@oy / SIZEY - 1,0].max)..([(@oy + FBLY) / SIZEY, @map_data.ysize-1].min)
  93. end
  94. for i in rangei
  95. for j in rangej
  96. for k in 0..2
  97. draw(i, j, k)
  98. end
  99. end
  100. end
  101. end
  102. #--------------------------------------------------------------------------
  103. def refreshox
  104. #需要釋放掉的圖塊
  105. rangej = ([@lastoy / SIZEY - 1,0].max)..([(@lastoy + FBLY) / SIZEY, @map_data.ysize-1].min)
  106. if @ox > @lastox
  107. rangei = (([@lastox / SIZEX - 1,0].max)...[(@ox / SIZEX - 1), @map_data.xsize-1].min)
  108. elsif @ox <= @lastox
  109. rangei = (([(@ox + FBLX) / SIZEX + 1,0].max)..[((@lastox + FBLX) / SIZEX),@map_data.xsize-1].min)
  110. end
  111. #p rangej,rangei,1
  112. if (rangei != nil and rangej != nil)
  113. for i in rangei
  114. for j in rangej
  115. for k in 0..2
  116. next if @backs[[i, j, k]].nil?
  117. @backs[[i, j, k]].dispose
  118. @backs.delete([i, j, k])
  119. @switches.delete([i, j, k])
  120. end
  121. end
  122. end
  123. end
  124. #恢復走路時候的偏移
  125. if @ox >= (@map_data.xsize * SIZEX - FBLX)
  126. for i in @backs.keys
  127. @backs[i].ox = 0
  128. @backs[i].x = i[0] * SIZEX - @ox
  129. if i[0] < (@ox / 32 - 1)
  130. @backs[i].x += @map_data.xsize * SIZEX
  131. elsif i[0] == -1
  132. @backs[i].x = 0
  133. end
  134. end
  135. else
  136. for i in @backs.keys
  137. @backs[i].ox = 0
  138. @backs[i].x = i[0] * SIZEX - @ox
  139. end
  140. end
  141. #需要重新描繪的圖快
  142. rangej = ([@oy / SIZEY - 1,0].max)..([(@oy + FBLY) / SIZEY,@map_data.ysize-1].min)
  143. if @ox > @lastox
  144. rangei = ([[((@lastox + FBLX) / SIZEX + 1), (@ox / SIZEX - 1)].max,0].max..[((@ox + FBLX) / SIZEX),@map_data.xsize-1].min)
  145. elsif @ox < @lastox
  146. rangei = ([(@ox / SIZEX - 1),0].max...[[(@lastox / SIZEX - 1), (@ox + FBLX) / SIZEX + 1].min,@map_data.xsize-1].min)
  147. end
  148. #p rangej,rangei,2
  149. if (rangei != nil and rangej != nil)
  150. for i in rangei
  151. for j in rangej
  152. for k in 0..2
  153. draw(i, j, k)
  154. end
  155. end
  156. end
  157. end
  158. #p @backs.size
  159. #p @backs
  160. end
  161. #--------------------------------------------------------------------------
  162. def refreshoy
  163. #需要釋放掉的圖塊
  164. rangei = ([@lastox / SIZEX - 1,0].max)..([(@lastox + FBLX) / SIZEX, @map_data.xsize-1].min)
  165. if @oy > @lastoy
  166. rangej = ([(@lastoy / SIZEY - 1),0].max...[(@oy / SIZEY - 1), @map_data.ysize-1].min)
  167. elsif @oy <= @lastoy
  168. rangej = ([((@oy + FBLY) / SIZEY + 1),0].max..[((@lastoy + FBLY) / SIZEY), @map_data.ysize-1].min)
  169. end
  170. for i in rangei
  171. for j in rangej
  172. for k in 0..2
  173. next if @backs[[i, j, k]].nil?
  174. @backs[[i, j, k]].dispose
  175. @backs.delete([i, j, k])
  176. @switches.delete([i, j, k])
  177. end
  178. end
  179. end
  180. #恢復走路時候的偏移
  181. if @oy >= (@map_data.ysize * SIZEY - FBLY)
  182. for i in @backs.keys
  183. @backs[i].oy = 0
  184. @backs[i].y = i[1] * SIZEY - @oy
  185. if i[1] < (@oy / 32 - 1)
  186. @backs[i].y += @map_data.ysize * SIZEY
  187. elsif i[1] == -1
  188. @backs[i].y = 0
  189. end
  190. end
  191. else
  192. for i in @backs.keys
  193. @backs[i].oy = 0
  194. @backs[i].y = i[1] * SIZEY - @oy
  195. end
  196. end
  197. #需要重新描繪的圖快
  198. rangei = ([@ox / SIZEX - 1,0].max)..([(@ox + FBLX) / SIZEX, @map_data.xsize-1].min)
  199. if @oy > @lastoy
  200. rangej = ([[((@lastoy + FBLY) / SIZEY + 1), @oy / SIZEY - 1].max,0].max..[((@oy + FBLY) / SIZEY), @map_data.ysize-1].min)
  201. elsif @oy < @lastoy
  202. rangej = ([(@oy / SIZEY - 1),0].max...[[(@lastoy / SIZEY - 1), ((@oy + FBLY) / SIZEY + 1)].min, @map_data.ysize-1].min)
  203. end
  204. for i in rangei
  205. for j in rangej
  206. for k in 0..2
  207. draw(i, j, k)
  208. end
  209. end
  210. end
  211. end
  212. #--------------------------------------------------------------------------
  213. #i為x座標,j為y座標,k為圖層
  214. def draw(i, j, k)
  215. i0 = i
  216. j0 = j
  217. i -= @map_data.xsize if i >= @map_data.xsize
  218. i += @map_data.xsize if i < 0
  219. j -= @map_data.ysize if j >= @map_data.ysize
  220. j += @map_data.ysize if j < 0
  221. id = @map_data[i, j, k]
  222. return if id == 0
  223. unless @backs[[i, j, k]].nil?
  224. unless @backs[[i, j, 3]].nil?
  225. @backs[[i, j, 3]].x = i0 * SIZEX - @ox
  226. @backs[[i, j, 3]].y = j0 * SIZEY - @oy
  227. end
  228. @backs[[i, j, k]].x = i0 * SIZEX - @ox
  229. @backs[[i, j, k]].y = j0 * SIZEY - @oy
  230. return
  231. end
  232. @backs[[i, j, k]] = Sprite.new(@viewport)
  233. @backs[[i, j, k]].x = i0 * SIZEX - @ox
  234. @backs[[i, j, k]].y = j0 * SIZEY - @oy
  235. @backs[[i, j, k]].z = k * 2
  236. @backs[[i, j, k]].bitmap = cachebitmap(id)
  237. if id < 384
  238. if @backbitmap[id + 10000] != nil
  239. #動畫
  240. @switches[[i, j, k]] = true
  241. @backs[[i, j, k]].bitmap = @backbitmap[id + @count * 10000]
  242. end
  243. end
  244. return if @passages.nil?
  245. return unless @passages[id] == 22
  246. @backs[[i, j, k]].z = 200
  247. end
  248. #---------------------------------------------------------------------------
  249. def cachebitmap(id)
  250. if @backbitmap[id].nil?
  251. if id < 384#自動元件的情況
  252. bitmapid = (id - (id % 48)) / 48 - 1
  253. @backbitmap[id] = drawbitmap1(id, bitmapid)
  254. if @autotiles[bitmapid].width > 96
  255. @backbitmap[id + 10000] = drawbitmap1(id, bitmapid, 1)
  256. @backbitmap[id + 20000] = drawbitmap1(id, bitmapid, 2)
  257. @backbitmap[id + 30000] = drawbitmap1(id, bitmapid, 3)
  258. end
  259. else
  260. rect = Rect.new((id - 384) % 8 * SIZEX, (id - 384) / 8 * SIZEY, 32, 32)
  261. @backbitmap[id] = Bitmap.new(32, 32)
  262. @backbitmap[id].blt(0, 0, @tileset, rect)
  263. end
  264. end
  265. return @backbitmap[id]
  266. end
  267. #---------------------------------------------------------------------------
  268. #此處的x,y指圖片上的xy位置,id範圍為48-383,bitmapid為圖片編號
  269. def drawbitmap1(id, bitmapid, ani = 0)
  270. bitmap = Bitmap.new(32, 32)
  271. pic_id = id % 48
  272. for i in 0..3
  273. rect_x = (AUTO_XY[pic_id][i] - 1) % 3
  274. rect_y = (AUTO_XY[pic_id][i] - 1 - rect_x) / 3
  275. x = (i % 2) * 16
  276. y = (i - (x / 16)) / 2 * 16
  277. bitmap.blt(x, y, @autotiles[bitmapid], Rect.new(rect_x * 32 + x + ani * 96, rect_y * 32 + y, 16, 16))
  278. end
  279. return bitmap
  280. end
  281. #---------------------------------------------------------------------------
  282. def priorities=(value)
  283. @passages = value
  284. for i in ([@ox / SIZEX - 1, 0].max)..((@ox + FBLX) / SIZEX)
  285. for j in ([@oy / SIZEY - 1, 0].max)..((@oy + FBLY) / SIZEY)
  286. id = @map_data[i, j, 2]
  287. next if id.nil?
  288. next unless value[id] == 22
  289. @backs[[i, j, 2]].z = 200
  290. end
  291. end
  292. end
  293. #--------------------------------------------------------------------------
  294. def ox=(value)
  295. if @ox != value
  296. @ox = value
  297. if value >= (@map_data.xsize * SIZEX - FBLX)
  298. @lastox += @map_data.xsize * SIZEX if @lastox < (@ox - FBLX)
  299. end
  300. #人物走路時候
  301. if @ox % (SIZEX/2) != 0
  302. for i in @backs.values
  303. i.ox = @ox - @lastox
  304. end
  305. else
  306. refreshox
  307. @lastox = @ox
  308. end
  309. end
  310. end
  311. #--------------------------------------------------------------------------
  312. def oy=(value)
  313. if @oy != value
  314. @oy = value
  315. if value >= (@map_data.ysize * SIZEY - FBLY)
  316. @lastoy += @map_data.ysize * SIZEY if @lastoy < (@oy - FBLY)
  317. end
  318. #人物走路時候
  319. if @oy % SIZEY != 0
  320. for i in @backs.values
  321. i.oy = @oy - @lastoy
  322. end
  323. else
  324. refreshoy
  325. @lastoy = @oy
  326. end
  327. end
  328. end
  329. #---------------------------------------------------------------------------
  330. def count=(value)
  331. value = 0 if value >= 4
  332. @count = value
  333. for i in @switches.keys
  334. id = @map_data[i[0], i[1], i[2]]
  335. @backs[i].bitmap = @backbitmap[id + value * 10000]
  336. end
  337. end
  338. #---------------------------------------------------------------------------
  339. def update
  340. if @count1 == ANI
  341. @count1 = 0
  342. self.count = @count+1
  343. else
  344. @count1 += 1
  345. end
  346. end
  347. end

复制代码
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-10-17
帖子
17
受到警告 3
发表于 2010-10-29 17:16:57 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

铃铃塔的守护者

梦石
0
星屑
626
在线时间
961 小时
注册时间
2010-10-24
帖子
2768

贵宾

4
发表于 2010-10-29 22:17:26 | 只看该作者
LZ这个问题好诡异啊,话说你怎么改的窗口大小啊...

魔法麻将独立游戏制作中,欢迎热情的测试员与UI设计师合作开发~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
248 小时
注册时间
2010-8-24
帖子
358
5
 楼主| 发表于 2010-10-29 22:27:53 | 只看该作者
本帖最后由 swhswh 于 2010-10-29 22:35 编辑

本帖最后由 swhswh 于 2010-10-29 00:23 编辑


#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
# ————————————————————————————————————
# 本脚本来自www.66rpg.com,转载请保留此信息
# ————————————————————————————————————

#ウィンドウサイズの変更(v1.00)

class Win32API
  GAME_INI_FILE = ".\\Game.ini"
  
  def Win32API.GetPrivateProfileString(section, key)
    val = "\0"*256
    gps = Win32API.new('kernel32', 'GetPrivateProfileString',%w(p p p p l p), 'l')
    gps.call(section, key, "", val, 256, GAME_INI_FILE)
    val.delete!("\0")
    return val
  end

  def Win32API.FindWindow(class_name, title)
    fw = Win32API.new('user32', 'FindWindow', %(p, p), 'i')
    hWnd = fw.call(class_name, title)
    return hWnd
  end

  HWND_TOP     = 0
  HWND_TOPMOST = -1
  SWP_NOMOVE   = 2
  
  def Win32API.SetWindowPos(hWnd, w, h)
    swp = Win32API.new('user32', 'SetWindowPos', %(l, l, i, i, i, i, i), 'i')
    ok = swp.call(hWnd, HWND_TOP, 0, 0, w, h, SWP_NOMOVE)
    # 下の行を有効にすると、常に前面に表示されるウィンドウになる。
    #ok = swp.call(hWnd, HWND_TOPMOST, 0, 0, w, h, SWP_NOMOVE)
    return ok
  end
end

title =  Win32API.GetPrivateProfileString("Game", "Title")
hWnd = Win32API.FindWindow("RGSS Player", title)

# 幅320、高さ480に変更
ok = Win32API.SetWindowPos(hWnd, 960, 768)
if(ok == 0)
  p "サイズ変更失敗"
end
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================


我用的是这个


补充一下,下面这个也是现在的问题,求解释右下边那个是主角色

QQ截图未命名.jpg (209.09 KB, 下载次数: 7)

QQ截图未命名.jpg
努力学习做音乐,不断进步中~争取将来能做出来出色的游戏配乐!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
248 小时
注册时间
2010-8-24
帖子
358
6
 楼主| 发表于 2010-10-31 22:02:15 | 只看该作者
自顶一下……真的没有人知道怎么使修改后的窗口显示完全吗?
我觉得这是个大问题……大家应该都知道界面太小的游戏玩起来没感觉的……
谁知道怎么调能使显示完全?求答案,谢谢!
努力学习做音乐,不断进步中~争取将来能做出来出色的游戏配乐!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 18:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表