Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Erbe
0 / 0 / 0
Регистрация: 14.02.2014
Сообщений: 54
Завершенные тесты: 2
1

Переписать код програмы с QBasic в C++

01.06.2014, 22:50. Просмотров 187. Ответов 0
Метки нет (Все метки)

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
' Объявим константы:
    CONST pi = 3.141592653589793#
    CONST Gradus = pi / 180, RAD = 180 / pi
  '  Углы обзора
    CONST OBZORh = 40 * Gradus, OBZORv = 33 * Gradus
  '  Разрешение экрана
    CONST RezX = 319, RezY = 199
  '  Геометрия
    CONST Points = 8   ' Вершин(точек)
    CONST Polygs = 6   ' Граней(полинонов)
    CONST Ps = Points - 1, Pg = Polygs - 1
  '  Переменные препроцессора точек
    DIM Ln1Ugol!, Ln2Ugol!, Ln3Ugol!, Ln4Ugol!
    DIM a1!, a2!, a3!, a4!, b1!, b2!, b3!, b4!
    DIM CamX!, CamY!, CamZ!, CamHcrn!, CamVcrn!
  '  М А С С И В    Т О Ч Е К
DATA 0,0,500
DATA 500,0,500
DATA 500,500,500
DATA 0,500,500
DATA 0,0,0
DATA 500,0,0
DATA 500,500,0
DATA 0,500,0
    DIM X%(Ps), Y%(Ps), Z%(Ps), ex%(Ps), ey%(Ps), DalT%(Ps)
    DIM Xc%(Ps), Yc%(Ps), Zc%(Ps)
    DIM KubU#, KubV#
      FOR i% = 0 TO Ps: READ X%(i%), Y%(i%), Z%(i%): NEXT
   '  Центруем объект
    DIM xMax%, yMax%, zMax%, xMin%, yMin%, zMin%, CntX%, CntY%, CntZ%
 FOR i% = 0 TO Ps
  IF xMax% < X%(i%) THEN xMax% = X%(i%)
  IF xMin% > X%(i%) THEN xMin% = X%(i%)
  IF yMax% < Y%(i%) THEN yMax% = Y%(i%)
  IF yMin% > Y%(i%) THEN yMin% = Y%(i%)
  IF zMax% < Z%(i%) THEN zMax% = Z%(i%)
  IF zMin% > Z%(i%) THEN zMin% = Z%(i%)
 NEXT
  CntX% = (xMax% - xMin%) \ 2
  CntY% = (yMax% - yMin%) \ 2
  CntZ% = (zMax% - zMin%) \ 2
 FOR i% = 0 TO Ps
   X%(i%) = X%(i%) - CntX%
   Y%(i%) = Y%(i%) - CntY%
   Z%(i%) = Z%(i%) - CntZ%
 NEXT
 FOR i% = 0 TO Ps: Xc%(i%) = X%(i%): Yc%(i%) = Y%(i%): Zc%(i%) = Z%(i%): NEXT
  '  М А С С И В    Г Р А Н Е Й(ПОЛИГОНОВ)
DATA 0,1,2,3
DATA 7,6,5,4
DATA 0,3,7,4
DATA 2,1,5,6
DATA 1,0,4,5
DATA 3,2,6,7
  '  Pnum% - грани
    DIM Pnum%(Pg, 3)
      FOR i1% = 0 TO Pg: FOR i2% = 0 TO 3
        READ Pnum%(i1%, i2%)
      NEXT i2%, i1%
  ' Инициализация
SCREEN 7, , 0, 1
   LOCATE 14, 10: COLOR 15: PRINT "PRESS SPACE...    "
   PCOPY 0, 1  ' Сразу откопируем страницу(для надписи)
  DO: LOOP UNTIL INKEY$ = CHR$(32)
  ' Считаем это перед циклом по кадрам
   Ln1Ugol! = OBZORh: Ln2Ugol! = -OBZORh
   Ln3Ugol! = OBZORv: Ln4Ugol! = -OBZORv
   a1! = SIN(Ln1Ugol!): b1! = -COS(Ln1Ugol!)
   a2! = SIN(Ln2Ugol!): b2! = -COS(Ln2Ugol!)
   a3! = SIN(Ln3Ugol!): b3! = -COS(Ln3Ugol!)
   a4! = SIN(Ln4Ugol!): b4! = -COS(Ln4Ugol!)
 ' Параметры камеры
 CamHcrn! = 0 * Gradus   ' Крен камеры
 CamVcrn! = -35 * Gradus   ' Поворот камеры
 CamX! = -700
 CamY! = 0
 CamZ! = 400
 FirstTime! = TIMER
50  ' Основной цикл по кадрам
 IF TIMER - TimePRC > .04 THEN TimePRC = TIMER: GOSUB TimePRC
  SinCamH! = SIN(CamHcrn!): CosCamH! = COS(CamHcrn!)
  SinCamV! = SIN(CamVcrn!): CosCamV! = COS(CamVcrn!)
    ' Углы вращения по таймеру
 KubU# = KubU# + CDBL(1 * tic%) * Gradus    ' Горизонтальная плоскость
 tic% = 0
    ' Вращаем куб
 FOR Tn% = 0 TO 7             ' Поворачиваем точки в плоскости XY
  Yc%(Tn%) = CDBL(X%(Tn%)) * SIN(KubU#) + CDBL(Y%(Tn%)) * COS(KubU#)
  Xc%(Tn%) = CDBL(X%(Tn%)) * COS(KubU#) - CDBL(Y%(Tn%)) * SIN(KubU#)
 NEXT
    ' Цикл по точкам
  FOR i% = 0 TO 7
   TXx! = Xc%(i%) - CamX!: TYy! = Yc%(i%) - CamY!: TZz! = Zc%(i%) - CamZ!
    ' Обратный поворот относительно 2х осей
   TX! = TXx! * CosCamH! + TYy! * SinCamH!    ' Первая плоскость XY
   TY! = -TXx! * SinCamH! + TYy! * CosCamH!
    ' Вторая плоскость XZ
   TZ! = -TX! * SinCamV! + TZz! * CosCamV!  'Сперва Tz ВАЖНО !!!
   TX! = TX! * CosCamV! + TZz! * SinCamV!
    ' Расчёт горизонтального расстояния
  Rasst1! = (a1! * TX! + b1! * TY!)
  Rasst2! = (a2! * TX! + b2! * TY!)
    IF Rasst1! < 0 OR Rasst2! > 0 GOTO Ex3D   'Точка вне видимости
    OBRas1! = ABS(Rasst1!) + ABS(Rasst2!)
    IF OBRas1! <> 0 THEN XeKf# = Rasst1! / OBRas1! ELSE XeKf# = 1
    ex%(i%) = XeKf# * RezX
    ' Расчёт вертикального расстояния
  Rasst3! = (a3! * TX! + b3! * TZ!)
  Rasst4! = (a4! * TX! + b4! * TZ!)
    IF Rasst3! < 0 OR Rasst4! > 0 GOTO Ex3D   'Точка вне видимости
    OBRas2! = ABS(Rasst3!) + ABS(Rasst4!)
    IF OBRas2! <> 0 THEN YeKf# = Rasst3! / OBRas2! ELSE YeKf# = 1
    ey%(i%) = YeKf# * RezY
Ex3D:
  NEXT i%
    ' Очистка заднего буфера
  CLS 1
    ' Построим полигоны
  FOR i% = 0 TO 5
    Px1% = Pnum%(i%, 0): Px2% = Pnum%(i%, 1)
    Px3% = Pnum%(i%, 2): Px4% = Pnum%(i%, 3)
    LINE (ex%(Px1%), ey%(Px1%))-(ex%(Px2%), ey%(Px2%)), 15
    LINE (ex%(Px2%), ey%(Px2%))-(ex%(Px3%), ey%(Px3%)), 15
    LINE (ex%(Px3%), ey%(Px3%))-(ex%(Px4%), ey%(Px4%)), 15
    LINE (ex%(Px4%), ey%(Px4%))-(ex%(Px1%), ey%(Px1%)), 15
  NEXT
'  Копируем страницу
  PCOPY 0, 1
IF INKEY$ = CHR$(27) GOTO 100   ' Выход по ESC
GOTO 50
100
END
 
TimePRC: ' Прерывание по таймеру(Иммитируем для совместимости)
 tic% = tic% + 1
RETURN
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 22:50
Ответы с готовыми решениями:

Удаление комментариев в файле (файл - код програмы на с++ записанв блокноте)
Есть файл(.txt) в котором заисан код проги с комментариями . Как удалить с...

нужно убрать однаковые елементы в списке(есть код програмы) только нехватает удаления однаковых елементов
#include&lt;iostream&gt; #include&lt;string&gt; using namespace std; struct List1 {...

Пытаюсь переписать код с циклом for, в код с циклом while, но не совсем получается
Возникло пару вопросов: #include &lt;iostream&gt; using namespace std; int main ()...

переписать код с++
Задача: Написать программу, которая считывает текст из файла и выводит его на...

Переписать код на с++
Здравствуйте! Мне очень нужна помощь, так как сам я пишу на питоне, и задача не...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 22:50

Переписать код на с++
uses crt; const n=6; var x,i,j:integer; a:array of integer; begin ...

Переписать код с Си
FILE *f; char s = {0}; f=fopen(&quot;filename.txt&quot;,&quot;rt&quot;); char...

Переписать код на с++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;sstream&gt; #include &lt;iterator&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru